WSRP Conformance statements
Shared by: ajizai
-
Stats
- views:
- 0
- posted:
- 9/29/2012
- language:
- Unknown
- pages:
- 58
Document Sample


Co
Co Re nf
Pr Pr
Po ns po ig Monitor between
Pa io od Producer Testcase Monitor between Consumer Testcase
# Section Line rtl u Conformance statement rt ur Testcase Driver Portlet Consumer and User- Cooperating User-Agent Notes or Alternatives
ge rit uc Driver Consumer and Produer Driver
et m ab at Agent
y er
er le io
n
Need a portlet that Is this requirement on the
The Consumer MUST respect this new session scope requires transient state, so Verify that the consumer Portlet or the Producer?
CS001 3.5 12 6 M X X 2
as described in section 6.1.1. that a new SessionContext supplies a valid session ID Who really generates
is returned. SessionIDs?
To supply the bookmarking and page refresh
Reissue http get without
capabilities End-Users expect, the Consumer MAY Observe navigational state
CS002 3.6 12 17 X U any cookies, report on
store this (navigational) state, or a reference to it, in in URLs
bookmarkability
the URL.
This specification defines two kinds of persistent state
with each referred to via a handle that MUST remain Verify that the handle does
CS003 3.6 12 31 L X 5
invariant once the Producer supplies it to the not change
Consumer:
The Consumer MUST NOT invoke operations on any Verify that no request
Portlets within the context of the initiating request messages appear in the Need to have messages
CS004 3.10 13 33 L X from the client of the Consumer until either the receipt 2 log between the request identity end-user in order
of a response or the invocation of and the reply (assume to test with multiple users
performBlockingInteraction() fails (e.g. times out). only 1 user)
Since the transport layer is often used to store various
pieces of information (e.g. J2EE load balancing I think this is saying that May be testable with a
depends on a session cookie and HTTP transport), the same cookie must be specialized Producer and
and these pieces of information often will pertain to a passed to the configurable set of end-
CS005 3.11 14 2 H X client session with the Consumer rather than the 2 MarkupInterface apis for user clients. Simulate
Consumer itself, Consumers that manage transport the same end user client multiple users. Verify
layer issues, such as cookies, MUST return them to session. Need dual cookies in both message
the Producer only for subsequent invocations within message logs for this. logs.
the Markup Interface during the same client session.
Untestable. How can the
message log tell if the
Using HTTP as an example, if the Producer requires
producer needs cookies
such support of Consumers, it MUST indicate so by
CS006 3.12 14 19 X X U but neglected to set the
setting the requiresInitCookie metadata to a value
requiresInitCookie flag?
other than “none”.
Can check for cookie
errors being generated.
If the Producer set requiresInitCookie to a value other
than “none”, the Consumer MUST ensure the cookie is Look for cookies in the Required for user
CS007 3.12 14 20 H X 2
properly supplied in subsequent requests for the End- messages. correlation
User.
Consumers and Producers SHOULD NOT rely on
CS008 5.1.1 16 18 X X receiving back any extensions passed to or returned U Untestable
from an invocation.
Each such extension element carries a single child
Verify message contains
CS009 5.1.1 16 19 M X X element which MUST declare its type using the 5
type attribute
schema-defined “type” attribute.
We RECOMMEND extensions either be of type
xsd:string (where xsd stands for
Check for use of xsd:string
http://www.w3c.org/2001/XMLSchema) or be of a
CS010 5.1.1 16 20 L X X X 5 or references into the
type defined in the Producer’s WSDL as this enables WSDL types.
Consumers to prepare an appropriate
serializer/deserializer.
Consumers and Producers are NOT REQUIRED to
CS011 5.1.1 16 26 X X process information supplied using these extension U Untestable
elements.
The Consumer MAY truncate longer handles to 255 Send handle that is too
CS012 5.1.2 17 2 VL X X 2
characters. long
Verify namespace
extensions: The extensions field MAY be used to
5.1.6 + declarations (i.e. do strict
CS013 18 11 L X extend this structure. Extension elements MUST be X 5
many others schema validation of
from namespaces other than WSRP.
messages)
In addition to these fully specified Mime types, use of
“*” (indicates all Mime types are acceptable) and
CS014 5.1.10 19 19 L X X 5 Are wildcards used?
type/* (where type includes things such as “text”)
from the HTTP definition MAY be specified.
For the fields this specification defines, the named
profile items a Portlet uses MUST all come from the
“Profile Name” column of the table found in section
11. Any use of additional userProfile items specified Have portlet try to use bad
CS015 5.1.11 21 7 L X as available when the Consumer registered SHOULD 3 profile names, and see if Any typos?
use the names the Consumer supplied. Any additional Producer catches it.
items specified SHOULD be interpreted by the
Consumer as additional items the Portlet could use if
the Consumer is able to supply the data.
If the Consumer uses a Portlet which specifies
usesMethodGet as ”true”, the Consumer MUST format Have a portlet that sets
its URLs in a manner that keeps user-agents from
CS016 5.1.11 21 15 L X 2 this flag, check URLs at
throwing away information (see section 10.2.4 for a
user-agent
description of the difficulties in using forms with
method=get).
Check flag from
For Portlets setting doesUrlTemplateProcessing to
PortletDescription against
CS017 5.1.11 21 46 H X “true”, Consumers MUST provide the URL writing 2
presence of templates in
templates and namespacePrefix field.
RuntimeContext+J48
Note that the Consumer MAY send UserContext
CS018 5.1.11 21 30 L X information on any invocations as a replacement for X 6
information the Portlet MAY be storing in a session.
Note that the Consumer MAY send templates on any
CS019 5.1.11 21 38 L invocations as a replacement for information the X 6
Portlet MAY be storing in a session.
Any property use with zero
CS020 5.1.12 22 9 H X X Name of the property, MUST have a non-zero length. 5
length names?
Name of the property whose value is to be reset; Any property use with zero
CS021 5.1.13 22 24 H X 6
MUST have a non-zero length. length names?
The Producer MUST return an
CS022 5.1.14 22 40 M X Interface.InvalidParameters fault message if the 3
Consumer supplies a property in both the properties and
resetProperties array of a PropertyList.
Name of the property being described, MUST have a Any property use with zero
CS023 5.1.15 23 10 H X 5
non-zero length. length names?
(CookieProtocolType)perUser: The Consumer MUST
Identify user on all
invoke initCookie() once per user of the Consumer,
CS024 5.1.18 24 5 H X 2 messages, check for
and associate any returned cookies with subsequent
cookie handling
invocations on behalf of that user.
(CookieProtocolType)perGroup: The Consumer MUST
invoke initCookie() once per unique groupID from
the PortletDescriptions for the Portlets it is Identify user, groupID on
CS025 5.1.18 24 7 H X aggregating on a page for each user of the Consumer, 2 all messages, check for
and associate any returned cookies with subsequent cookie handling
invocations on behalf of that user targeting Portlets
with identical groupIDs.
If requiresRegistration is set to “false” then it MUST
Try all operations with a
CS026 5.1.19 24 29 H X X be valid to not pass a registrationContext field to all 3
nil RegistrationContext
operations with this parameter.
If requiresRegistration is set to “true” then the Producer
CS027 5.1.19 24 31 H X MUST throw a fault when no registrationContext is 3
supplied to an operation, other than
getServiceDescription(), which takes this field.
customUserProfileItemDescriptions: An array of
ItemDescription structures as defined in Section 5.1.9.
CS028 5.1.19 24 41 L X This array MUST include an entry for any user profile 5
item the Producer supports which are not defined by
this specification.
customWindowStateDescriptions: An array of
ItemDescription structures as defined in Section 5.1.9.
CS029 5.1.19 24 44 L X 5
This array MUST include an entry for any custom
window state the Producer supports.
customModeDescriptions: An array of ItemDescription
structures as defined in Section 5.1.9. This array
CS030 5.1.19 25 1 L X MUST include an entry for any custom mode the 5
Producer supports.
If the registrationState field has a value, the
5.1.20 25 27 Need to push persistent
CS031 H X Consumer MUST return this value on any subsequent 2
5.1.21 26 2 state to Consumer
calls in the context of this registration
Since localized strings use an indirection through
resources to carry the set of values for different
CS032 5.1.22 26 11 L X locales, the first member of this array SHOULD be X 5
used as the locale for the values returned directly in
the structure.
The minimum information a Producer MUST return
from getServiceDescription() is that which declares Examine returned
what is required for a Consumer to register (i.e. the ServiceDescription when
CS033 5.2 26 25 H X 3
requiresRegistration flag and whenever additional data no RegistrationContext
is required, the registrationPropertyDescription field) was supplied.
with the Producer.
Examine returned
Producers MUST return a complete enough ServiceDescription when a
ServiceDescription to registered Consumers for them RegistrationContext was
CS034 5.2 26 33 H X 3 supplied. Must now
to properly interact with both the Producer and
Portlets it exposes. contain at least a
PortletDescription field.
Dependent on Profile?
When generating the ServiceDescription response the
Producer SHOULD use the desiredLocales (an array of
CS035 5.2 26 36 L X X 5
strings) to control what locales are returned for
localized strings.
The maximum length of a sessionID is 4096
characters, though Producers SHOULD keep it as 1. Check length Monitor sessionIDs as
CS036 6.1.1 27 23 H X X 5
short as possible as this can have a significant impact 2. Report length they are generated.
on Consumer performance.
Compute duration of a
Producers SHOULD also keep the sessionID as stable session when a new
sessionID is returned. Are
CS037 6.1.1 27 25 VL X as possible since changes in value can also have a X 5 Hard to test, not worth it.
we able to coorelate the
significant impact on Consumer performance.
request and response in
this case?
Co
Co Re nf
Pr Pr
Po ns po ig Monitor between
Pa io od Producer Testcase Monitor between Consumer Testcase
# Section Line rtl u Conformance statement rt ur Testcase Driver Portlet Consumer and User- Cooperating User-Agent Notes or Alternatives
ge rit uc Driver Consumer and Produer Driver
et m ab at Agent
y er
er le io
n
If the Producer returns an Interface.InvalidSession fault
message after returning a sessionID, the Consumer
MUST NOT resupply that sessionID on a subsequent Explicit test case for How to correlate 2nd Tracking the user can
CS038 6.1.1 27 33 H X invocation and SHOULD reinvoke the operation that 2 testing handling of this request to fault from first enable validation that the
caused the fault message without any sessionID and fault fault? correct data is resent.
supply any data that may have been stored in the
session.
For Consumers supplying
portletInstanceKey: An opaque string, unique within this field, place multiple
Observe
CS039 6.1.2 28 12 VL X the registrationContext, which the Consumer MAY X 6 instances of a portlet on a
portletInstanceKeys
supply as a reference to its use of the Portlet. page. Are unique Keys
supplied?
Consumer SHOULD keep their portletInstanceKey
CS040 6.1.2 28 17 VL X X 6 Untestable
values as short as possible.
Is it really necessary to
If the PortletDescription also has
Check whether the test this? If so, right a
templatesStoredInSession set to “true”, then the
CS041 6.1.2 28 25 VL X X 2 Consumer follows this portletDescription that sets
Consumer MAY elect to only send these once for a
behaviour. templateStoredInSession
sessionID.
to true
If the portletState field has a value, the Consumer
MUST return this value on subsequent calls using the Requires a Producer that
same portletHandle. Note that such uses can span pushes persistent state to
CS042 6.1.3 29 2 H X multiple starting and stopping cycles of the Consumer 2 the Consumer. Full test
and therefore this state MUST be persisted by the requires cycling the
Consumer until successfully invoking Consumer.
destroyPortlets() with the related portletHandle.
UserScope is an open set of values where the
Producer SHOULD restrict the values supplied to those
CS043 6.1.4 29 10 L X 5
specified in this specification or custom values the
Consumer has indicated it supports.
This involves testing cache
”wsrp:perUser”: The markup is specific to the semantics. It will involve May require Consumer
userContext for which it was generated. Changes to usingthe monitor to specific tasks to update a
CS044 6.1.4 29 16 X C
the data of the UserContext MUST invalidate the determine when the cache piece of data in the
cached markup. was used rather than the UserContext.
Portlet being called.
Note that any key used by the caching system to
Will involve fragments that
locate this markup MUST include the MarkupParams This involves testing cache
CS045 6.1.5 29 21 X C do and do not cause this
structure that was current when the content was semantics.
structure to change.
originally cached.
validateTag: A string the Consumer MAY use to This involves testing cache
CS046 6.1.5 29 34 X attempt to revalidate markup once the expires X C semantics. Is validateTag
duration elapses. ever sent to the Producer?
CS047 6.1.5 29 31 X If the Consumer does not know how to process the C
specified userScope, it MUST NOT cache the markup.
The Consumer MUST set the Involves separately
secureClientCommunication flag as the Portlet MAY informing the Producer
CS048 6.1.9 31 31 H X 2
render different content when it knows the delivery about the security of the
channel is secure. client-Consumer channel.
In addition to these fully specified Mime types, use of
“*” (indicates all Mime types are acceptable) and
CS049 6.1.9 32 3 VL X X 6 Are wildcards used?
type/* (where type includes things such as “text”)
from the HTTP definition[1] MAY be specified.
Portlets SHOULD generate markup in one of the Did generated markup use
CS050 6.1.9 32 6 L X X X 5
specified Mime types. a requested mime type?
The Consumer MUST specify either one of the modes Inspect MarkupParams,
CS051 6.1.9 32 12 H X from the Portlet’s metadata or “wsrp:view” (all 6 compare to
Portlets are required to support this mode). PortletDescription
The Consumer MUST specify either one of the
Inspect MarkupParams,
windowStates from the Portlet’s metadata or
CS052 6.1.9 32 16 H X 6 compare to
“wsrp:normal” (all Portlets are required to support
PortletDescription
this windowState).
When the SOAP binding is in use, the Producer MUST
either use one of the markupCharacterSets, UTF-8 or Was this value or UTF-8 Send a
CS053 6.1.9 32 26 H X UTF-16 for the response message as the nature of 3 used for the response markupCharacterSet other
XML requires the character set used for the markup to message? than UTF-8
be the same as the response message.
Was any supplied
validateTag: This field MAY contain a validateTag
Testing will be easier with validateTag part of a
CS054 6.1.9 32 30 L X previously supplied to the Consumer in a X 6
extremely short "expires" previous
MarkupContext structure.
MarkupResponse?
Are all mode change
validNewModes: Current set of modes the Producer
CS055 6.1.9 32 38 VL X X 6 requests taken from this
MAY request changing to.
list?
Custom modes, windowStates, userScopes and
userAuthentication values MUST be URI's in order to
CS056 6.1.9 33 11 L X X 6 Any non-URIs?
reduce name clashes with any values that may be
defined by future versions of this specification.
If the value for useCachedMarkup is “true” the
Are both in a
CS057 6.1.10 33 30 H X markupString and markupBinary fields MUST NOT be 5
MarkupResponse?
returned.
If the field’s (useCachedMarkup) value is “true”, any
supplied cacheControl field MUST be processed as an This involves testing cache Check cache hits obey new
CS058 6.1.10 33 31 X C
update to the cacheControl originally supplied with the semantics. caching semantics.
cached markup.
1.If markup is returned,
markupType has to be
present.
The mimeType field MUST be specified whenever 2. markupType must
markup is returned, and if the markupBinary field is always be a valid mime
used to return the markup, the mime type MUST type
V
CS059 6.1.10 33 34 X include the character set for textual mime types using 5 3. If the markup is
H
the syntax specified in RFC1522 (e.g. “text/html; supplied via the
charset=UTF-8”). In this particular case this character markupBinary field and
set MAY be different than the response message. the markupType is textual
(e.g. text/*), the
markupType has to
contain the charset.
The character set of the markup a Portlet returns
CS060 6.1.10 33 43 H X MUST either match that requested in MarkupParams, 5 Does it match?
be UTF-8 or UTF-16.
The locale MUST be specified whenever markup is
CS061 6.1.10 34 6 H X returned and is NOT REQUIRED to be from the set of 5 Cross check
requested locales.
Set flag, place various
URLs for rewriting in fields
The Consumer MUST parse the markup for URL
CS062 6.1.10 34 9 H X 2 and then have client
rewriting if the value of requiresUrlRewriting is “true”.
submit the form to check
they were rewritten.
If the cacheControl field is not supplied, the Consumer This involves testing cache
CS063 6.1.10 34 12 X C
MUST treat the returned markup as not cachable. semantics.
The Consumer SHOULD supply this value as the
navigationalState on the subsequent invocations for Did the navState get
This contradicts section 3.6
CS064 6.1.13 35 18 L X this use of the Portlet for at least the duration of the X 2 resupplied on a page
and requirement 180
End-User’s interactions with this aggregated page in refresh?
order to maintain End-User state.
The Consumer SHOULD choose to respect this request
to change the window state, but since the Portlet
cannot depend on that choice it MUST NOT encode
CS065 6.9 50 6 X this new window state into any of its stateful settings. U not testable
Rather, the Portlet MUST compute any such impact on
stateful settings after the Consumer has actually
changed the window state.
The Consumer MUST respect requests to change the
mode outside of exceptional circumstances (e.g.
CS066 6.8 48 33 X U not testable
access control restrictions), but the Portlet must not
depend on such a request being respected.
As the Producer is ignorant of this encoding and the
Consumer is required to consistently encode Send some of the hideous
CS067 6.1.17 37 1 L X parameters passed to the Producer in the SOAP 2 test cases through the
message, Consumers MUST ensure that form data is Consumer for decoding.
properly decoded before it is passed to the Producer.
The userContextKey MUST remain invariant for the Need to have a separate
CS068 6.1.19 40 30 VL X 2
duration of a Consumer’s registration. indication of the user.
The Consumer MUST NOT assert a user category for
CS069 6.1.19 40 34 M X which no UserCategoryDescription was part of the 6
Producer’s ServiceDescription.
Whenever the cacheControl field of a MarkupResponse
This involves testing cache
CS070 6.2.1.1 41 18 X structure is filled in the Consumer MAY cache the C
semantics.
markup fragment.
The Consumer MUST follow the defined invalidation
This involves testing cache
CS071 6.2.1.1 41 19 X policies to keep the cache up-to-date from section C
semantics.
6.2.1.2.
If the cacheControl field is empty, the Consumer This involves testing cache
CS072 6.2.1.1 41 20 X C
MUST NOT cache the markup fragment. semantics.
Portlets indicating the cached markup can be used
This involves testing cache
CS073 6.2.1.2 41 27 X X SHOULD also supply a new CacheControl structure X C
semantics.
with a new expiry for the markup.
The Consumer MUST always propagate these End-
CS074 6.3 41 39 H X 2
User interactions to the Producer.
If the Consumer has set the portletState flag to
Report on whether
“readWrite”, the Portlet MAY modify its persistent
CS075 6.3.3 42 50 X X U persistent state updates
state regardless of whether it is persisted on the
respect this flag
Producer or Consumer.
If the Consumer has set the portletState field to
“cloneBeforeWrite”, persistent state changes are
We can't determine
allowed only if the Producer first clones the Portlet. If Report on whether
whether or not a portlet
CS076 6.3.3 43 4 X X the Producer does not clone the Portlet, processing U persistent state updates Try to set the properties
modified its persistent
attempts to modify persistent state MUST proceed as respect this flag
state
if the Consumer had specified “readOnly” for
portletState.
If the Producer clones the Portlet, processing attempts
Report on whether
to modify persistent state on the new Portlet SHOULD
CS077 6.3.3 43 7 X X U persistent state updates
proceed as if the Consumer had specified “readWrite”
respect this flag
for portletState.
Co
Co Re nf
Pr Pr
Po ns po ig Monitor between
Pa io od Producer Testcase Monitor between Consumer Testcase
# Section Line rtl u Conformance statement rt ur Testcase Driver Portlet Consumer and User- Cooperating User-Agent Notes or Alternatives
ge rit uc Driver Consumer and Produer Driver
et m ab at Agent
y er
er le io
n
If the Producer returns a new portletHandle without
Which portletHandle does
returning a new sessionID, the Consumer MUST
CS078 6.3.3 43 11 H X 2 the Consumer resupply the
associate the current sessionID with the new
sessionID for?
portletHandle rather than the previous portletHandle.
If the Consumer has set the portletState flag to
”readOnly”, the Portlet MUST NOT modify its Report on whether
persistent state regardless of whether it is persisted
CS079 6.3.3 43 16 L X 3 persistent state updates
on the Producer or Consumer and MUST throw a fault
respect this flag
message if processing the interaction requires
changing its persistent state.
If the Producer implements access control that
prevents Portlets from updating persistent state and a
CS080 6.3.3 43 22 X X Portlet is unable to process the interaction without X U
such an update, then the fault
“Interface.PortletStateChangeRequired” MAY be
thrown indicating the interaction processing failed.
If the Producer’s metadata has set the
requiresInitCookie field to any value other than Check ServiceDescription
“none”, then the Consumer MUST invoke
CS081 6.4 44 7 H X 2 against invocation
initCookie() and supply any returned cookies sequence.
according to the semantics of the value of
requiresInitCookie as defined in section 5.1.17.
If at any time the Producer throws a fault message
(“Interface.InvalidCookie”) indicating the supplied
cookie has been invalidated at the Producer, then the
Check invocation sequence
CS082 6.4 44 9 H X Consumer MUST again invoke initCookie() and 2
when fault is observed.
SHOULD reprocess the invocation that caused the
fault message to be thrown and include any data that
may have been stored in a session related to a cookie.
The Consumer MAY inform the Producer that it will no
longer be using a set of sessions by invoking
CS083 6.5 44 15 VL X X 6
releaseSessions() (e.g. the Consumer is releasing
resources related to the sessionIDs):
After invoking releaseSessions() the Consumer
CS084 6.5 44 21 H X MUST NOT include any of the supplied sessionIDs on 6 Do relevant checks
subsequent invocations.
If a Producer indicates that it uses cookies, the
Consumer MUST ensure that any cookies the Producer
CS085 6.6 44 25 H X 2 Do http header checks.
sets are available on all invocations within the Markup
interface.
In addition, moving cookies from an HTTPS to an
HTTP connection opens security issues that MUST be
CS086 6.6 44 30 H X handled in the manner prescribed in RFC2109[2]. 2 Do http header checks.
Consumers MUST respect the security setting on each
cookie.
Conformant Portlets MUST support the wsrp:view Invoke getMarkup w/view
CS087 6.8.1 48 12 H X 4
mode. mode
A Portlet MUST map any mode it does not understand
CS088 6.8.5 48 34 X U
to the wsrp:view mode.
The wsrp:normal window state MAY also indicate that
the target device has limited display capabilities.
CS089 6.9.1 49 14 X X U
Therefore, a Portlet SHOULD restrict the size of its
rendered output in this window state.
Conformant Portlets MUST support the wsrp:normal
CS090 6.9.1 49 18 H X 4
window state.
When the window state is wsrp:minimized, the Portlet
SHOULD NOT render visible markup, but is free to
CS091 6.9.2 49 20 L X X 4 Inspect returned markup
include non-visible data such as javascript or hidden
forms.
A Portlet SHOULD generate richer content when its
CS092 6.9.3 49 26 X U Inspect returned markup
window state is wsrp:maximized.
A Portlet SHOULD generate richer content when its
CS093 6.9.4 49 30 X U Inspect returned markup
window state is wsrp:solo.
A Portlet MUST map any window state it does not
CS094 6.9.5 49 37 X X U
understand to wsrp:normal.
A Producer’s ServiceDescription MAY declare support
CS095 6.10 50 2 L X X 5 Does it?
for user categories.
A Consumer MAY map End-Users to the user
CS096 6.10 50 2 X categories a Producer declares in any manner it U untestable
chooses, including ignoring them.
Producers that use user categories SHOULD
implement appropriate default behavior in the event a
CS097 6.10 50 4 X U untestable
Consumer does not assert any user category for the
End-User.
All Producer registration processes MUST result in a
Exercise registration
CS098 7 50 37 VL X unique, opaque token that may be used to refer to the X 3 Cannot verify uniqueness
portType
registration.
The consumerAgent value MUST start with
“productName.majorVersion.minorVersion” where
“productName” identifies the product the Consumer
CS099 7.1.1 51 18 L X 6 validate format
installed for its deployment, and majorVersion and
minorVersion are vendor-defined indications of the
version of its product.
registrationProperties: List of registration properties.
The names of these properties SHOULD be from the
CS100 7.1.1 51 42 L X set declared in the registrationPropertyDescription X 6 Full set, superset, …?
from the Producer’s ServiceDescription and are not
part of this specification.
When the Consumer chooses to end the relationship, verify invocation. Likely
it MUST attempt an invocation of the deregister() depends on using a
CS101 7.2 52 5 M X 6
operation so that the Producer may release related Consumer UI to declare
resources. the relationship over.
When the Producer chooses to invalidate the
verify fault. Likely depends
registration identifier, it MUST inform the Consumer of
on using a Producer UI to
CS102 7.2 52 7 L X this through a fault message on the next invocation 3
declare the relationship
specifying this registrationHandle so that the
over.
Consumer may release related resources.
If the Producer’s metadata declares registration is not
supported (i.e. requiresRegistration flag was set to Willing to pass a nil
CS103 7.2 52 13 H X 3
“false”), then it MUST be valid to not supply a registrationContext
registrationContext to operations with this parameter.
Whenever the registration attempt fails a fault
Register without passing
CS104 7.2 52 15 L X message MUST be thrown indicating this to the 3
required data
Consumer
A Producer supporting registration MUST allow a
Consumer to register itself multiple times with
CS105 7.2 52 18 M X 3
potentially different settings (e.g. billing settings)
resulting in multiple registrationHandles [R351].
The Consumer MUST NOT consider a relationship with
Are failed deregister()
CS106 7.4 52 32 X a Producer ended until a successful invocation of U
invocations retried?
deregister().
The Consumer MUST NOT use an invalidated
registrationHandle, where the invalidation occurs
either by passing the handle to deregister() or by Look for invalidated
CS107 7.4 52 40 H X 2
receiving a Security.InvalidRegistration fault message handles
from the Producer on an invocation supplying the
handle.
The Producer MUST return a
Pass invalidated handles
CS108 7.4 52 43 H X Security.InvalidRegistration fault message whenever 3
as registrationHandles
a Consumer supplies an invalid registrationHandle
If the deregister() operation fails, the Producer
CS109 7.4 52 44 X MUST return a fault message specifying the reason for U not testable
the failure.
Producers MUST expose one or more logically distinct
ServiceDescription has
ways of generating markup and handling interaction
CS110 8 53 2 H X 5 PortletDescriptions, at
with that markup [A205], which this specification
least after registration
refers to as Portlets.
A Consumer MAY request a unique configuration of
one of these Portlets, either in an opaque manner
(e.g. the “edit” button common on aggregated pages
CS111 8 53 11 L X which invokes a Portlet-generated page for setting the X 6
configuration) or by using the property definitions
found in the Portlet’s metadata to configure it in an
explicit manner
Any Producer that supports cloning portlets on
CS112 8 53 17 M X performBlockingInteraction() invocations MUST 5 not testable
support the releasePortlet() operation.
For security reasons related to exposing the existence
of something the caller is not allowed to access, it is
RECOMMENDED that a Security.AccessDenied fault be
generated both for the case of the supplied
CS113 8.2 54 39 L X portletHandle not being a valid reference in the scope U
of the supplied registrationHandle and for the case of
the user not having access to a valid reference (i.e. by
definition access is denied when the Portlet reference
is invalid).
When generating the PortletDescriptionResponse the
Check that there is some
CS114 8.2 55 1 VL X X Producer SHOULD use the desiredLocales to control X 5
correspondance
what locales are supplied for localized strings.
The supplied PortletContext MUST refer to either a Check handle and state
CS115 8.3 55 12 H X Producer Offered Portlet or a previously cloned 6 against previously logged
Consumer Configured Portlet. Portlet identifiers.
Can validate when
PortletState is pushed to
The initial state of the new Portlet MUST be equivalent
the Consumer. Specialized
CS116 8.3 56 13 L X to the state of the Portlet referenced by the supplied 3
Portlet for hosting on the
handle.
Producer may provide
more testing.
The new portletHandle MUST be scoped by the Try using a portletHandle
CS117 8.3 55 17 H X registrationHandle in the supplied RegistrationContext 3 Check for uniqueness. with a different
and be unique within this registration. registrationHandle
If a Producer chooses to push the persistent state of
its Portlets to the Consumer, it is RECOMMENDED that
the portletHandle encode the supplied
CS118 8.3 55 21 X registrationHandle. In this case, it is also U not testable
RECOMMENDED that the portletState encode the
portletHandle so that the Producer can do reasonable
cross checks that it is receiving a consistent set of
handles and state.
Co
Co Re nf
Pr Pr
Po ns po ig Monitor between
Pa io od Producer Testcase Monitor between Consumer Testcase
# Section Line rtl u Conformance statement rt ur Testcase Driver Portlet Consumer and User- Cooperating User-Agent Notes or Alternatives
ge rit uc Driver Consumer and Produer Driver
et m ab at Agent
y er
er le io
n
Requires using a
If the Consumer has not registered, then the
Consumer UI to cause
Consumer MUST invoke destroyPortlets() when it Need a Producer that does
CS119 8.3 55 32 L X 2 deregistration on a
would have deregistered, passing each portletHandle not support Registration
Producer not supporting
that would have been scoped by a registration.
registration
The Consumer MUST inform the Producer that a
Consumer Configured Portlet will no longer be used by Requires using a
invoking destroyPortlets() and MUST NOT consider Consumer UI to cause
CS120 8.4 55 36 L X 6
a Portlet to have been destroyed until release. On failure, are
destroyPortlets() has been successfully invoked for there any retrys?
that Portlet.
A Consumer MUST NOT reference any of the supplied
portletHandles after successfully invoking
CS121 8.4 56 5 H X destroyPortlets() and MAY reclaim resources 6 Any reused references?
related to the supplied portletHandles (e.g.
portletState).
The supplied set of property changes MUST be
processed together. In particular, validation SHOULD
only be done considering the entire set as partial
CS122 8.5 56 24 X X updates could easily create an internally inconsistent U not testable
set of properties. The storage of the update caused by
applying the set of property updates SHOULD only
occur after the Producer/Portlet executes this
validation.
Blast invocations from
multiple threads at the
The Producer SHOULD serialize invocations of
CS123 8.5 56 28 X U same Portlet. Follow each
setPortletProperties() for any one portletHandle.
with a
getPortletProperties().
Does the returned
If the Consumer does not pass a names parameter,
PropertyList correspond to
CS124 8.6 56 43 L X X the Producer / Portlet MUST treat this as a request to 3
PortletPropertyDescription
enumerate the properties of the Portlet.
s
While it is possible the set of properties can change
with time (e.g. the Portlet dynamically creates or
CS125 8.7 57 14 X X destroys properties), Producers and Portlets SHOULD U
make the returned modelDescription as complete as
possible.
When generating the
PortletPropertyDescriptionResponse the Producer
CS126 8.7 57 18 L X X X 5
SHOULD use the desiredLocales to control which
locales are supplied for localized strings.
The Consumer indicates to the Portlet the preferred
character encoding, using the markupCharacterSets
field of the MarkupParams structure. It is up to the
Portlet to generate markup that complies with this
encoding. The Portlet is allowed to generate its
CS127 10.1 58 30 L X X 4
markup in either the UTF-8 or UTF-16 character set
encodings if it is unable to generate the requested
character set. If it is unable to generate markup in
any of these character sets, the Portlet MUST return a
fault message to the Consumer.
As the Portlet writes URLs into the markup it MUST
encode them based on the markupType. For example,
CS128 10.2 59 42 L X XML based markup requires that all ‘&’ characters 4
have to be encoded as “&”.
If a Portlet is unable to completely write the portlet
URLs for its markup, it MUST set the
CS129 10.2 59 45 L X X 4
requiresUrlRewriting flag in the returned
MarkupContext structure to “true”.
Portlets MUST adopt the following convention for
including non-ASCII characters within portlet URLs in
order to comply with W3C recommendations.
1. Represent each character in UTF-8 (see Inspect URLs from markup
CS130 10.2 60 9 L X X [RFC2279]) as one or more bytes. X 5 in the log for non-ASCII
2. Escape these characters with the URI escaping characters
mechanism (i.e., by converting each byte to %HH,
where HH is the hexadecimal notation of the character
value)
When URL activations occur, the Consumer MUST
process all mode and window state change requests
and either honor and reject them prior to invoking the Monitor when
CS131 10.2 60 23 H X operation indicated by the URL. If the requested mode 2 mode/window state
or window state is for a value that is either invalid or changes happen
unavailable, the Consumer SHOULD leave the current
value unchanged.
The Consumer is NOT REQUIRED to process URLs not
conforming to this format and MAY choose to pass
Report on the possible
CS132 10.2.1 60 39 X them unchanged, replace them with error text, do a X U
actions of the Consumer.
best effort processing or invalidate the entire markup
fragment.
The Consumer is NOT REQUIRED to process escaped
characters in parameter names, but rather MAY pass
***Untestable using Did odd strings arrive at
CS133 10.2.1 60 41 X them unchanged to either the user-agent (during URL X U
message log the user-agent?
rewriting) or the Producer (during processing of an
activated URL).
This parameter (wsrp-urlType) MUST be specified first
Check parameter
CS134 10.2.1.1 61 4 H X X when using the Consumer URL rewriting template and 5
placement
the value selected from the following definitions.
All form parameters, submitted as query string
parameters using the HTTP GET method, that are not Monitor how items are
CS135 10.2.1.1.1 61 10 H X used to encode parameters defined by this 2 received by the Consumer
specification MUST be passed to vs passed to the Producer.
performBlockingInteraction() as formParameters.
The URL MAY specify a wsrp-navigationalState portlet
URL parameter, whose value the Consumer MUST
Monitor how items are
supply in the navigationalState field of the
CS136 10.2.1.1.2 61 17 H X 2 received by the Consumer
MarkupParams structure. If there is no such portlet
vs passed to the Producer.
URL parameter, the Consumer MUST NOT supply a
value for this field.
When a portlet URL specifies “resource” for the wsrp-
urlType portlet URL parameter, both the wsrp-url and
CS137 10.2.1.1.3 61 25 M X X 5 Check parameters on URLs
wsrp-rewriteResource portlet URL parameters MUST
also be specified.
Since the values a Portlet provides will appear as
either an URL parameter value or as part of the path
of an URL, these values it MUST be strictly encoded Examine URLs to see if
CS138 10.2 60 18 M X X 5
(i.e. “&”, “=“, “/”, and “?” need to be url-escaped) so they are properly encoded.
that special URL characters do not invalidate the
processing of the enclosing URL.
The wsrp-token portlet URL parameter MUST only be
CS140 10.2.1.1.4.1 62 21 M X used in URLs where the wsrp-urlType portlet URL 5
parameter has a value of “namespace”.
The value of this portlet URL parameter defines the
navigational state the Consumer MUST send to the
CS141 10.2.1.2 62 25 H X Producer when the URL is activated. If this parameter 2
is missing, the Consumer MUST NOT supply the
navigationalState field of the MarkupParams.
The value of this portlet URL parameter defines the
interaction state the Consumer MUST send to the
Producer when the URL is activated. If this parameter
CS142 10.2.1.3 62 29 H X is missing, the Consumer MUST NOT supply the 2
interactionState field of the InteractionParams
structure.
The value for wsrp-mode MUST be one of the modes
CS143 10.2.1.4 62 34 M X X detailed in section 6.8 or a custom mode the 5 Check parameters on URLs
Consumer specified as supported during registration.
The wsrp-mode portlet URL parameter MAY be used
CS144 10.2.1.4 63 36 L X 5
whenever the wsrp-urlType portlet URL parameter has
a value of “blockingAction” or “render”.
The value for wsrp-windowState MUST be one of the
values detailed in section 6.9 or a custom window
CS145 10.2.1.5 62 40 M X X 5 Check parameters on URLs
state the Consumer specified as supported during
registration.
The wsrp-windowState portlet URL parameter MAY be
CS146 10.2.1.5 62 42 L X used whenever the wsrp-urlType portlet URL parameter 5
has a value of “blockingAction” or “render”.
The value for the wsrp-secureURL is a boolean
indicating whether the resulting URL MUST involve Validate Consumer URL
CS147 10.2.1.7 63 5 H X secure communication between the client and 2 rewriting can produce a
Consumer, as well as between the Consumer and secure URL upon request.
Producer.
Monitor transitions in
Note that the Consumer’s aggregated page MUST be
Portlets requesting a
secure if any of the Portlets whose content is being
CS148 10.2.1.7 63 7 H X 2 secure page with security
displayed on the page have indicated the need for
transitions of the
secure communication for their current markup.
Consumer's page.
All content outside the {} pairs MUST be treated by Check URLs against
CS149 10.2.2 63 33 H X X the Producer/Portlet as constants the Consumer needs 3 templates Consumer
to receive when the portlet URL is activated. provided.
The Consumer MUST integrate placeholders for at
least the portlet URL parameters wsrp-
navigationalState, wsrp-interactionState, wsrp-mode
CS150 10.2.2.1 64 8 H X 2 Examine templates
and wsrp-windowState in its template and SHOULD
integrate placeholders for the other portlet URL
paramaters defined in this specification.
The Consumer MUST integrate placeholders for at
least the portlet URL parameters wsrp-
CS151 10.2.2.3 64 17 H X 2 Examine templates
navigationalState, wsrp-mode and wsrp-windowState
in its template.
The Consumer MUST integrate placeholders for at
CS152 10.2.2.5 64 24 H X least the portlet URL parameter wsrp-url to allow the 2 Examine templates
Portlet to place the address of the URL.
Consumers not supplying all the other non-secure
CS153 10.2.2.7 64 32 H X 2 Examine templates
templates MUST set a value for this template.
Co
Co Re nf
Pr Pr
Po ns po ig Monitor between
Pa io od Producer Testcase Monitor between Consumer Testcase
# Section Line rtl u Conformance statement rt ur Testcase Driver Portlet Consumer and User- Cooperating User-Agent Notes or Alternatives
ge rit uc Driver Consumer and Produer Driver
et m ab at Agent
y er
er le io
n
Since this may become the value for an action
oriented template, the Consumer SHOULD integrate
CS154 10.2.2.7 64 33 L X placeholders for at least the portlet URL parameters X 2 Examine templates
wsrp-navigationalState, wsrp-interactionState, wsrp-
mode and wsrp-windowState in this template.
Consumers not supplying all the other secure
CS155 10.2.2.8 65 3 H X 2 Examine templates
templates MUST set a value for this template.
Since this may become the value for an action
oriented template, the Consumer SHOULD integrate
CS156 10.2.2.8 65 4 L X placeholders for at least the portlet URL parameters X 2 Examine templates
wsrp-navigationalState, wsrp-interactionState, wsrp-
mode and wsrp-windowState in this template.
If the Consumer includes wsrp-portletHandle, wsrp-
userContextKey, wsrp-portletInstanceKey or wsrp-
sessionID in a template, Producer written URLs based Capture template & data
CS157 10.2.2.9 65 10 H X X 3
on that template MUST replace the specified portlet values, verify replacement
URL parameter with the value the Consumer
separately supplied in a data field.
Scan for "<form …
As a result, Portlets that include HTML forms with method=get …>" in
markup fragments. When
CS158 10.2.4 66 6 L X method=get in their markup MUST specify X 5
found, validate
usesMethodGet as “true” in their PortletDescription.
PortletDescription set the
flag.
Is namespacePrefix used?
Tokens needing uniqueness on the aggregated page
Other common prefixes?
MUST be encoded to a Portlet-instance specific
Any naming conflicts on
CS159 10.3 66 13 L X namespace [A301]. The Portlet MAY do this by 5
an aggregated page
prefixing the name of the resource with the
containing 2 instances of
namespacePrefix from the RuntimeContext structure.
the portlet?
Consumer URL and form processing has been
designed so that namespace prefixing is not needed to
qualify portlet URL parameters, portlet form
parameters, or resource URL parameters. This allows Observe prefixes
CS160 10.3 66 19 M X Consumers to avoid unnecessary processing when 2 Consumer inserted, does it
dispatching client requests. Portlets choosing to strip them on a submit?
namespace such elements MUST be process these
parameters with their namespace prefix still attached
as Consumers MUST NOT remove any prefixes.
Use a set of documents
that all namespace the
The Consumer will locate such markers and MUST
same token (e.g.
CS161 10.3.1 66 37 H X replace them with a prefix that is unique to this 2
Javascript function). Did
instance of this portlet on the page.
the Consumer namespace
them consistently?
The disallowed tags listed below are those tags that
impact other Portlets or may even break the entire
aggregated page. Inclusion of such a tag invalidates What did the Consumer
CS162 10.5 67 15 VL X X 2 Generate invalid markup.
the whole markup fragment, which the Consumer MAY do?
replace with an error message.
However, in order to be certified as being a cross-
platform Portlet, a Portlet MUST NOT use the tags Does markup contain any
CS163 10.5.1.1 67 21 H X 4
<body>, <frame>, <frameset>, <head>, <html>, disallowed tags?
and <title>.
However, in order to be certified as being a cross-
10.5.2.1 67 35 Does markup contain any
CS164 H X platform Portlet, a Portlet MUST NOT use the tags 4
10.5.3.1 68 12 disallowed tags?
<body>, <head>, <html>, and <title>.
Did they use these CSS
Portlets SHOULD use the CSS style definitions from
classes? Did they use
CS165 10.6 68 27 L X this specification in order to participate in a uniform X 4
other CSS classes? Tag
display of their content by various Consumers.
specific styles?
For markup types that support CSS stylesheets,
Consumers MUST supply a CSS stylesheet with
CS166 10.6 68 28 H X definitions for the classes defined in section 10.5 of 6
this specification.
A Consumer SHOULD provide the specific fields the
Portlet declared it needs, unless the information is not Did the Consumer supply
CS167 11.1 74 12 VL X X 2
available or is restricted by policy (e.g. privacy all requested data?
policy).
Normative copies of the WSDL that MUST be
referenced by Producers implementing this
specification can be found at:
http://www.oasis-
open.org/committees/wsrp/v1/WSRP_v1_Types.xsd -
The type, message and fault definitions for this
Normal case is referencing
specification
CS168 14 76 26 H X X 5 these WSDLs via a WSDL
http://www.oasis-
<import/> statement.
open.org/committees/wsrp/v1/WSRP_v1_Interfaces.
wsdl - The portType definitions for this specification
http://www.oasis-
open.org/committees/wsrp/v1/WSRP_v1_Bindings.ws
dl - The standard binding definitions for this
specification
WSRP_v1_Markup_PortType: All Producers MUST
Parse WSDL for port that
expose this portType.
CS169 14 76 36 H X 5 references a binding to
WSRP_v1_ServiceDescription_PortType: All Producers
this portType.
MUST expose this portType.
WSRP_v1_Markup_Binding_SOAP: All Producers
MUST expose a port with this binding for the
WSRP_v1_Markup_PortType (the Markup portType).
WSRP_v1_ServiceDescription_Binding_SOAP: All Parse WSDL for port that
CS170 14 77 2 H X 5
Producers MUST expose a port with this binding for references this binding.
the WSRP_v1_ServiceDescription_PortType (the
ServiceDescription portType).
WSRP_v1_Registration_Binding_SOAP: Producers
supporting the Registration portType MUST expose a Parse WSDL for port that
CS171 14 77 6 L X X 5
port with this binding to the references this binding.
WSRP_v1_Registration_PortType.
WSRP_v1_PortletManagement_Binding_SOAP:
Producers supporting the PortletManagement portType Parse WSDL for port that
CS172 14 77 8 L X X 5
MUST expose a port with this binding to the references this binding.
WSRP_v1_PortletManagement_PortType .
The SOAP 1.1 faultcode SHOULD be set to the WSRP error
CS173 13 75 25 code being raised, namespace qualified to be in the
"urn:oasis:names:tc:wsrp:v1:types" namespace.
In addition, the SOAP 1.1 fault's detail element MUST contain
CS174 13 75 27 the corresponding namespaced fault element from the WSRP
v1 WSDL as its only content.
When using SOAP 1.2, the Subcode element MUST be
present and carry the corresponding WSRP error code in its
mandatory Value sub-element. The Subcode element MUST
CS175 13 75 28 be contained in a SOAP 1.2 Receiver fault code, for the fault
messages defined in this specification. SOAP 1.2 faults MAY
carry additional content in the Detail sub-element, but MUST
carry the corresponding WSRP namespaced fault element.
Consumers MUST accept both the “&” character and the
corresponding entity reference (i.e. “&”) as separators
CS176 10.2.1 61 17 between the name/value pairs as this allows portlets to
produce markup fragments valid for a larger range of mime
types.
Processing order for mode change requests
1. URL has a request for a mode change
2. Consumer decides whether to honor the request
3. performBlockingInteraction invocation
4. InteractionResponse requests a mode change
5. Consumer decides whether to honor the request
6. getMarkup invocation
Line
v2
in
# Section Conformance statement Change
draft
type
09
The Consumer MUST NOT begin to gather markup until it considers
CS177 3.12 630 Added
all Portlets to have finished the event distribution step.
scheduledDestruction: This optional field informs the Consumer
that the Producer has changed the scheduled destruction of the
underlying registration to the specified date and time. Producers
CS178 5.1.22 1306 returning this field MUST support the leasing feature. When this Added
field is missing from a response message, scheduled destruction is
not in use and the explicit destruction operations MUST be used
instead.
scheduledDestruction: This optional field informs the Consumer
that the Producer has scheduled the underlying registration to be
destroyed on a certain date and time unless requested to change
CS179 5.1.23 1331 Added
that date and time. Producers returning this field MUST support the
leasing feature. When this field is missing from a response
message, scheduled destruction is not in use and the explicit
destruction operations MUST be used instead.
The optional portletHandles parameter provides a means for a
Consumer to restrict the set of Portlets for which it is requesting
CS180 5.2 1481 information. When the Consumer does not supply this parameter, Added
the Producer MUST return a portletDescription for each of the
“Producer Offered Portlets” the Consumer has access to through
the supplied registrationContext.
scheduledDestruction: This optional field informs the Consumer
that the Producer has scheduled the Portlet to be destroyed on a
CS181 6.1.3 1493 certain date and time unless requested to change that date and Added
time. Producers returning this field MUST support the leasing
feature. When this field is missing, scheduled destruction is not in
use and the explicit destruction operations MUST be used instead.
payload: This field contains the data for the event. Its contents
CS182 6.1.15 1796 Added
MUST conform to the schema referenced by the type field.
failedEvents: This optional array carries notifications to the
Consumer of events the Portlet failed to process. Since the
CS183 6.1.19 1886 Producer/Portlet is capable of appropriate retries for the processing Added
of any given event, the Consumer MUST NOT retry distributing
failed events to the Portlet.
As the Producer is ignorant of this encoding and the Consumer is
CS184 6.1.24 1975 required to consistently encode parameters passed to the Producer Duplicate
in the SOAP message, Consumers MUST ensure that form data is
properly decoded before it is passed to the Producer.
The Consumer MUST NOT consider a relationship with a Producer
ended until either a successful invocation of deregister, elapsing of
CS185 7.4 2675 the scheduled destruction time or receipt of a Modified
InvalidRegistration fault message from the Producer on an
invocation supplying the registrationHandle.
If the nillable response from this operation is nil, then scheduled
CS186 7.5 2699 destruction is not in use for this registration and the Consumer Added
MUST use the deregister operation to destroy the registration.
The Consumer MUST inform the Producer that a Consumer
Configured Portlet which does not use leasing will no longer be used
CS187 8.4 3077 by invoking the destroyPortlets operation and MUST NOT consider Modified
such a Portlet to have been destroyed until destroyPortlets has
been successfully invoked for that Portlet.
If the nillable response from this operation is nil, then scheduled
CS188 8.5 3102 destruction is not in use for this Portlet and the Consumer MUST Added
use the destroyPortlets operation to destroy the Portlet.
When not returning a fault, the Producer MUST return exactly one
CS189 8.7 3156 Added
entry in its response for each entry in the request.
If the Consumer requires the export to be ByValue and the Producer
CS190 8.8 3187 does not support such exports, the ExportByValueNotSupported Added
fault MUST be returned.
When not returning a fault, the Producer MUST return exactly one
CS191 8.8 3198 Added
entry in its response for each entry in the request.
When a portlet URL specifies “resource” for the wsrp-urlType
portlet URL parameter, the wsrp-requiresRewrite portlet URL
CS192 10.2.1.1.3 3513 Modified
parameter and at least one of the wsrp-url and wsrp-resourceID
portlet URL parameters MUST also be specified.
CS193 10.2.1.1.3.2 3528 This parameter provides the resourceID parameter which the Added
Consumer MUST supply when invoking the getResource operation.
These tokens are enclosed in curly braces (i.e. “{” and “}”) and
contain the name of the portlet URL parameter which the Producer
CS194 10.2.2 3596 Added
MUST replace (using "" for those parameters where the Producer
has no value).
The Consumer MUST integrate placeholders for at least the portlet
URL parameters wsrp-url, wsrp-resourceID, wsrp-
CS195 10.2.2.5 3633 preferOperation, wsrp-requiresRewrite and wsrp- Modified
navigationalState to allow the Portlet to place all the pieces of
information it could use for accessing a resource.
Overlap with the fields defined in the containing structure SHOULD
CS196 5.1.1 810 Added
be voided.
In the absence of a Consumer supplied value for a public parameter
CS197 6.1.2 1471 the Portlet listed in its portletDescription, the Portlet SHOULD Added
use a default value.
Consumers SHOULD supply a value of “*” in the mimeTypes field of
CS198 6.3 2191 the MarkupParams structure as the returned object should simply be Added
streamed to the End-User.
The Consumer SHOULD honor a handleEvents invocation
returning requests to change mode or windowState provided they do
CS199 6.4.2.3 2292 not conflict with other such requests. How to handle any conflicting Added
requests is up to the Consumer implementation. Portlet developers
SHOULD be aware that the impacts on overall layouts MAY cause
Consumers to not honor a request to change windowState.
The Producer indicates its preferred request size in the
recommendedExportSize field of its ServiceDescription.
CS200 8.8 3202 Added
Consumers SHOULD limit their export requests to chunks no larger
then this size.
If the cacheControl field is empty, the Portlet has provided no
CS201 6.2.1.1 2161 guidance and the Consumer MAY apply whatever cache policy it Modified
chooses.
We RECOMMEND extensions be of type xsd:string (where xsd
stands for http://www.w3c.org/2001/XMLSchema), a type from the
CS202 5.1.1 793 WSRP-defined “extra” namespace or be of a type defined in the Modified
Producer’s WSDL as this enables Consumers to prepare an
appropriate serializer/deserializer.
CS063 Deleted
Any Producer that supports cloning Portlets on
CS203 8 2729 performBlockingInteraction or handleEvents invocations MUST Modified
support the destroyPortlets operation.
Modified
Once we determine the new WSDL location Modified
CS067
CS106
CS120
CS137
CS152
CS072
CS010
CS112
CS120?
CS168?
Config #Statements Portlet Producer Monitor Consumer Monitor User-Agent Notes
Cooperating
This may not be
1 0 Testcase Driver Any (1) Required UNDER TEST Required Testcase
required
Driver
Cooperating
Surround the
2 44 Testcase Driver Testcase Driver Required UNDER TEST Required Testcase
Consumer
Driver
Surround the
3 18 Testcase Driver UNDER TEST Required Testcase Driver Not required Any
Producer
Are we intending to
4 9 UNDER TEST Any Required Any Not required Any run conformance
testing for portlets?
Passive Monitor of
5 43 Any UNDER TEST Required Any Not required Any
Producer
Passive Monitor of
6 22 Any Any Required UNDER TEST Not required Any
Consumer
U 26 Untestable
C 10 Caching
Referenced Statements by config #
1 2 3 4 5 6 U C
CS001 CS015 CS087 CS003 CS018 CS002 CS044
CS004 CS022 CS090 CS009 CS019 CS006 CS045
CS005 CS026 CS091 CS010 CS021 CS008 CS046
CS007 CS027 CS127 CS013 CS039 CS011 CS047
CS012 CS033 CS128 CS014 CS040 CS065 CS058
CS016 CS034 CS129 CS020 CS049 CS066 CS063
CS017 CS053 CS163 CS023 CS051 CS075 CS070
CS024 CS079 CS164 CS028 CS052 CS076 CS071
CS025 CS098 CS165 CS029 CS054 CS077 CS072
CS031 CS102 CS030 CS055 CS080 CS073
CS038 CS103 CS032 CS056 CS088
CS041 CS104 CS035 CS069 CS089
CS042 CS105 CS036 CS083 CS092
CS048 CS108 CS037 CS084 CS093
CS062 CS116 CS043 CS099 CS094
CS064 CS117 CS050 CS100 CS096
CS067 CS124 CS057 CS101 CS097
CS068 CS157 CS059 CS111 CS106
CS074 CS060 CS115 CS109
CS078 CS061 CS120 CS113
CS081 CS095 CS121 CS118
CS082 CS110 CS166 CS122
CS085 CS112 CS123
CS086 CS114 CS125
CS107 CS126 CS132
CS119 CS130 CS133
CS131 CS134
CS135 CS137
CS136 CS138
CS141 #REF!
CS142 CS140
CS147 CS143
CS148 CS144
CS150 CS145
CS151 CS146
CS152 CS149
CS153 CS158
CS154 CS159
CS155 CS168
CS156 CS169
CS160 CS170
CS161 CS171
CS162 CS172
CS167
Base
AS # CS #(s) Test Case Assertion Portlet
Producer
All Messages exchanged between
Producers and Consumers relative to the
AS181 RP1810 invocation of WSRP defined operations Test
shall conform to the WSRP type
definitions.
Once a SessionContext.sessionID is
returned by the Producer, the Consumer
shall (outside of exceptional
AS001 CS001 RP0010 circumstances) return this ID in
RuntimeContext.sessionID on subsequent
invocations targetting this portlet instance
for this end user.
Consumers enabling bookmarking by End-
Users shall encode each portlet instance's
AS002 CS002 - navigational state (or a reference to it) in
the page's URL.
Once a portletHandle is supplied to a
AS003 CS003 - Consumer, it can not be changed on Untestable
subsequent invocations.
Once a registrationHandle is supplied to a
AS004 CS003 - Consumer, it can not be changed on Untestable
subsequent invocations.
For client requests that result in
performBlockingInteraction() invocations,
AS005 CS004 no other invocation is allowed until
performBlockingInteraction() returns or
times out.
When the Producer sets a cookie,
the Consumer may not:
1. supply the cookie to the portlet for
AS006 CS005 a different end-user
2. supply the cookie to a different
instance of this portlet for the same end-
user
When the Producer sets a cookie, the
Consumer should return it on future
AS177 CS005 invocations of this portlet instance for this
end-user.
When the Producer sets a cookie, a high
function Consumer shall (outside of
AS182 exceptional circumstances) return it on
future invocations of this portlet instance
for this end-user.
If the Consumer uses a Producer who has
set requiresInitCookie to a value other
than "none", it shall:
AS007 CS007 1. Invoke initCookie for each portlet
from such a Producer for each new end-
user
2. Return the set cookie(s) only for this
end-user (see AS006, AS023 and AS024).
Both the Consumer and the Producer shall
continue to operate when the other
ignores any protocol extensions the other
provides. In particular:
1. A Producer shall not require
extension elements in order to return
markup from a getMarkup() interaction.
2. A Producer shall not return an
OperationFailed fault because a Consumer
CS008
AS008 - did not supply an extension Untestable
CS011
3. A Consumer shall embed the markup
returned from getMarkup() even when no
extensions are supplied.
4. A Consumer shall process URL
activations from the markup returned by a
Portlet in accordance with the WSRP
specification even if the Producer does not
support an extension the Consumer
prefers be used.
Every time an extension element appears
in a WSRP message, it's child element
AS009 CS009 RP0090 shall use the xsi:type attribute to declare Test
its type.
Producer extension elements should all
have a value for the xsi:type attribute
AS010 CS010 RP0100 that either points at the schema defined Report
datatypes or datatypes defined in its
WSDL.
The Producer shall not return a handle
AS011 CS012 RP0110 (registrationHandle or portletHandle) Test
longer than 255 characters.
Both the Consumer and Producer can
AS012 CS013 RP0120 extend the data structures exchanged Report
using the extensions element.
The Producer can use wildcards when
AS013 CS014 RP0130 specifying the value for Report
MarkupTypes.mimeType.
The Portlet's metadata shall use
AS014 CS015 RP0140 specification defined names to refer to Report Report
common user profile data items.
When the Consumer uses a Portlet that
specifies usesMethodGet='true', the
AS015 CS016 RP0150 Consumer's interaction URLs shall not use
query parameters.
When using a Portlet which specifies
PortletDescription.doesUrlTemplateProces
sing as “true”, Consumers have to supply
AS016 CS017 RP0160 values for the RuntimeContext.templates
and the RuntimeContext.namespacePrefix
fields.
When a Portlet specifies
PortletDescription.userContextStoredInSe
ssion as "true" and the Consumer supplies
AS017 CS018 an updated UserContext parameter, the Test
Portlet's markup shall reflect the updated
data.
When a Portlet specifies
PortletDescription.templatesStoredInSessi
on as "true" and the Consumer supplies
AS018 CS019 new templates in Test Test
RuntimeContext.templates, the Portlet's
markup needs to reflect the updated URL
format.
The length of the value for the required
AS019 CS020 RP0190 name attribute of all Property elements Test
has to be greater than zero.
The length of the value for the required
AS020 CS021 RP0190 name attribute of all ResetProperty
elements has to be greater than zero.
If the Consumer includes a Property in
both the properties and resetProperties
AS021 CS022 RP0210 arrays, then the Producer shall return a Test
Interface.InvalidParameters fault.
The length of the value for the required
AS022 CS023 RP0190 name attribute of all PropertyDescription Test
elements has to be greater than zero.
When the Producer's
ServiceDescription.cookieProtocol has a
AS023 CS024 value of "perUser", the Consumer has to
associate the cookie(s) returned from
initCookie() with the combination of the
Portlet instance and the End-User.
When the Producer's
ServiceDescription.cookieProtocol has a
value of "perGroup", the Consumer has to
AS024 CS025 associate the cookie(s) returned from
initCookie() with the combination of the
End-User and the set of Portlets from the
Producer who specify identical values for
PortletDescription.groupID.
If ServiceDescription.requiresRegistration
is set to “false” then the Producer shall
CS026 not return a Security.InvalidRegistration
AS025 RP0250 Test
CS103 fault message when a nil
registrationContext parameter is passed
to an operation.
If ServiceDescription.requiresRegistration is
set to “true” and a nill value is supplied
AS026 CS027 RP0260 for the value of registrationContext, then Test
the Producer shall return an
Interface.InvalidRegistration fault
message.
The Producer's
ServiceDescription.customUserProfileItem
AS027 CS028 RP0270 Descriptions shall have a record for every Test
user profile item not defined by WSRP
that the hosted Portlets use.
The Producer's
ServiceDescription.customWindowStateDe
AS028 CS029 RP0280 scriptions shall have a record for every Test
custom window state that the hosted
Portlets use.
The Producer's
AS029 CS030 RP0290 ServiceDescription.customModeDescriptio Test
ns shall have a record for every custom
mode that the hosted Portlets use.
If the Producer returns a value for the
RegistrationContext.registrationState
field, the Consumer shall return this value
AS030 CS031 RP0300 in the
RegistrationContext.registrationState field
whenever supplying the relevant
registrationHandle.
The in-place value for LocalizedString
fields should be in the locale of the first
AS031 CS032 RP0310 Report
member of the supplied desiredLocales
array.
The Producer's ServiceDescription must
AS032 CS033 RP0320 always have a value for the Test
requiresRegistration flag.
After registration, the Producer's
ServiceDescription has to contain an array
of PortletDescriptions and the metadata
AS033 CS034 RP1080 Test
that allows the registered Consumers to
properly interact with both the Producer
and Portlets it exposes.
The Producer's ServiceDescription should
AS034 CS035 RP0340 specify values in the locales the Consumer Report
requests.
No SessionContext.sessionID value shall
AS035 CS036 RP0350 Test
be longer than 4096 characters.
The frequency at which sessions timeout
AS036 CS037 and are regenerated with a new sessionID Report
shall be as long as is reasonable.
When the Producer returns an
InvalidSession fault, the Consumer shall
reinvoke the operation without a
AS037 CS038 sessionID and with any templates and
userContext information that may have
been omitted in the first invocation.
When the Consumer supplies a
portletInstanceKey, it shall be a unique
AS038 CS039 - and invariant reference to the instance of
the portlet on its page.
AS039 CS040 The Consumer shall keep its
portletInstanceKeys as short as possible.
When the
PortletDescription.templatesStoredInSessi
AS040 CS041 on is "true", then the Consumer only has
to send templates until a session is
established.
When the Producer returns a value in the
portletState field, the Consumer shall
AS041 CS042 RP0410 supply that value whenever the correlated
portletHandle is supplied
The Producer should only supply a
userScope which was either defined by
AS042 CS043 RP0420 this specification or indicated as Report
supported by the Consumer (e.g.
consumerUserScopes).
A high function Producer only supplies a
userScope which was either defined by
AS183 RP1830 this specification or indicated as
supported by the Consumer (e.g.
consumerUserScopes).
Markup may be resupplied from a cache
when userScope=wsrp:perUser only if the
UserContext that would have been
AS043 CS044 supplied to the Portlet for generating
markup is identical to the UserContext
used to generate the cached markup.
Markup may be resupplied from a cache
only if the markupParams that would have
been supplied to the Portlet for generating
AS044 CS045 markup are identical to the
markupParams used to generate the
cached markup.
Once the expires duration for caching a
returned markup elapses, the Consumer
AS045 CS046 RP0450 can supply the validateTag returned with
the markup to inquire whether the
markup is still valid.
Once the expires duration for caching a
returned markup elapses, a high function
AS184 RP1840 Consumer supplies the validateTag
returned with the markup to inquire
whether the markup is still valid.
If the returned userScope is not one the
AS046 CS047 Consumer understands, it can not cache
the returned markup.
The secureClientCommunication flag
supplied by the Consumer shall match the
AS047 CS048 RP047 security of the client connection ('true' for
https: and 'false' for http:).
The Consumer can use wildcards for
AS048 CS049 RP0480
MarkupParams.mimeTypes.
AS049 CS050 RP0490 Portlets should generate markup of a type Report Report
indicated in MarkupParams.mimeTypes.
High function Producers only return
AS185 RP1850 markup of a type indicated in
MarkupParams.mimeTypes
The value supplied in
MarkupParams.mode shall be either
AS050 CS051 RP0500 "wsrp:view" or one of the values from the
PortletDescription.markupTypes[].modes
for a matching mime type, which has to
have a value
The value supplied in
MarkupParams.windowState shall be
either "wsrp:normal" or a value from a
AS051 CS052 RP0510 markupTypes record for
PortletDescription.markupTypes[].mimeTy
pe which matches the value supplied in
MarkupParams.mimeTypes[].
When using the
WSRP_v1_Markup_Binding_SOAP binding,
the xml response message character set
AS052 CS053 RP0520 shall either be UTF-8, UTF-16 or a value Test
from
MarkupParams.markupCharacterSets[].
The Consumer supplied
MarkupParams.validateTag field shall
either be missing (including nil) or have
the value from a previous
MarkupContext.CacheControl.validateTag
AS053 CS054 RP0530 where the MarkupParams supplied to the
previous invocation shall be field-wise
identical to the currently supplied
MarkupParams except for the validateTag
field.
When the Consumer supplies a value in
the MarkupParams.validNewModes[]
AS054 CS055 array, it should then honor a Portlet
request to change into that new mode.
All custom modes, window states, user
scopes and user authentication values
AS055 CS056 RP0550 (ServiceDescription, PortletDescription, Test
RegistrationData, etc) shall follow the
format of a URI (i.e. namespace:value).
The Producer shall not return a
MarkupContext containing values for both
AS200 RP2000 the markupString and markupBinary Test
fields
When a MarkupContext is returned from
an invocation of
performBlockingInteraction, the Consumer
AS197 may use the contained markup, including
an empty or missing markup, as the
Portlet's current markup provided any
simultaneously requested mode and
windowState changes are honored.
If MarkupContext.useCachedMarkup has a
value of "true", then both the
AS056 CS057 RP0560 MarkupContext.markupString and Test
MarkupContext.markupBinary fields shall
be missing or nil.
If MarkupContext.useCachedMarkup has a
value of "true", then any co-supplied
AS057 CS058 cacheControl structure shall replace any
previously supplied cacheControl for the
cached markup.
Whenever either the
MarkupContext.markupString or
MarkupContext.markupBinary fields have
a value, then the
MarkupContext.mimeType field shall
contain the mime type for the supplied
AS058 CS059 RP0580 markup. In the case of the markup being Test
supplied via the
MarkupContext.markupBinary field, this
mime type specification shall include the
character set of the base64 encoded
markup.
The markup returned by a Portlet shall
either use a character set specified by the
Consumer in
MarkupParams.markupCharacterSets[],
AS059 CS060 RP0590 be UTF-8 or be UTF-16 (i.e. either the Test
character set of the xml response
message or that which is specified using
the mimeType parameter syntax for the
MarkupContext.mimeType field shall
match).
The MarkupContext.locale field shall have
AS060 CS061 RP0600 a value whenever either the markupString Test
or markupBinary fields have a value.
The value for MarkupContext.locale field
AS178 CS061 RP1780 should be one of the values requested in Report
MarkupParams.locales.
When MarkupContext.requiresUrlRewriting
AS061 CS062 has a value of "true", then the Consumer
shall parse and rewrite the portlet URLs
from the WSRP pattern to valid URLs for
activating processing at the Consumer.
When MarkupContext.cacheControl is
missing or has a value of nil, then the
Consumer is not allowed to cache the
AS062 CS063 markup and therefore must invoke the
Portlet again in order to generate the
markup.
When UpdateResponse.navigationalState
has a value, the Consumer shall supply it
(excepting exceptional situations or cache
AS063 CS064 RP0630 hits) to the Portlet on page refreshes and
when regenerating markup due to the
activation of a portlet URL from another
portlet on the page.
A portlet shall not fail to generate markup
CS065 when the mode or window state for the
AS064 RP064 markup is not what the Portlet had Test
CS066
requested.
The character encoding of all parameters
passed to the Producer, including
AS065 CS067 - InteractionParams.formParameters, shall
be the character encoding of the message
used to transport the data to the
Producer, regardless of the character
encoding(s) received by the Consumer.
Once a Consumer has supplied a
userContextKey to the Producer for a
AS066 CS068 particular End-User, it shall resupply the
same key on all future invocations on
behalf of that End-User.
The Consumer shall not supply a value for
a userCategory
AS067 CS069 RP067 (UserContext.userCategories[]) for which
it has not received ItemDescription
(ServiceDescription.userCategoryDescripti
ons[]) using the supplied name.
When the Producer returns a
MarkupContext.cacheControl to the
Consumer, the Consumer is allowed to
AS068 CS070 cache the markup subject to the
parameters expressed by the
CacheControl.
When caching markup received from the
Producer, the Consumer shall follow the
AS205 CS071 invalidation controls expressed in the
fields of the supplied CacheControl.
When the Producer does not supply a
MarkupContext.cacheControl structure,
AS069 CS072 the Consumer shall not cache the
accompanying markup.
Whenever
MarkupContext.useCachedMarkup has a
AS070 CS073 RP0700 value of "true", the Portlet is encouraged Report Report
to also supply a new CacheControl
structure
High function Producers always supply a
AS186 RP1860 CacheControl structure when returning
MarkupContext.useCachedMarkup with a
value of "true".
When an End-User activates a "portlet URL", the
Consumer shall invoke the Producer in accordance
with the parameters the Portlet had placed on the
URL. Namely;
1. Invoke correct operation based on wsrp-
urlType:
a. "blockingAction" =>
performBlockingInteraction()
b. "render" =" getMarkup()
c. "resource" => http get or post
2. Place values in fields correctly:
a. wsrp-navigationalState =>
MarkupParams.navigationalState
b. wsrp-interactionState =>
AS071 CS074 InteractionParams.interactionState
c. wsrp-url => url target of a resource request
d. wsrp-mode => MarkupParams.mode (if mode
request is honored)
e. wsrp-windowState =>
MarkupParams.windowState (if window state change
request is honored)
f. wsrp-portletHandle =>
PortletContext.portletHandle
g. wsrp-userContextKey =>
UserContext.userContextKey
h. wsrp-portletInstanceKey =>
RuntimeContext.portletInstanceKey
i. wsrp-sessionID => RuntimeContext.sessionID
3. Make invocation to a secure port if the activated
URL used secure communications (e.g. https).
When InteractionParams.portletState has
a value of "readWrite", the Portlet is free Untesta
AS072 CS075 - to modify any parameter in its persistent Untestable
ble
configuration.
When
InteractionParams.portletStateChange has
a value of "cloneBeforeWrite" and the Untesta
AS073 CS076 - Untestable
Producer does not clone the Portlet, the ble
Portlet is not allowed to modify any
parameter in its persistent configuration.
The Consumer shall not set the
InteractionParams.portletStateChange
field to a value of "readWrite" when the
supplied PortletContext.portletHandle is a
AS201 RP2010 handle to a Producer offered portlet and
no portletState has been returned to the
Consumer previously for this
portletHandle.
When the Producer returns a new
PortletContext.portletHandle without
returning a new
SessionContext.sessionID, the Consumer
shall supply the
AS075 CS078 RuntimeContext.sessionID sent on this
invocation when also supplying the newly
returned portletHandle in
PortletContext.portletHandle for this End-
User.
When
InteractionParams.portletStateChange has
a value of "readOnly", the Portlet is not Untesta
AS076 CS079 - Untestable
allowed to modify any parameter in its ble
persistent configuration.
The fault message
Interface.PortletStateChangeRequired can
AS077 CS080 RP0770 be returned to indicate that a state Report
change is required but currently not
allowed.
If ServiceDescription.requiresInitCookie
has a value of "perUser", then the
Consumer shall invoke initCookie() and
AS078 CS081 supply any returned cookies only to this
instance of the Portlet for invocations on
behalf of one particular End-User
(UserContext.userContextKey).
If ServiceDescription.requiresInitCookie
has a value of "perGroup", then the
Consumer shall invoke initCookie() and
AS079 CS081 supply any returned cookies only to
Portlets at the Producer having identical
PortletDescription.groupIDs for
invocations on behalf of one particular
End-User (UserContext.userContextKey).
If ServiceDescription.requiresInitCookie
has a value other than "none", "perUser"
AS080 CS081 - and "perGroup", then the Consumer shall
only use the Producer if it understands
the semantics of the setting and agrees to
abide by those semantics.
When the Producer returns an
Interface.InvalidCookie fault message, the
AS081 CS082 Consumer shall reinvoke initCookie() and
use any returned cookies to replace those
it has been supplying from the previous
invocation of initCookie().
After complying with AS081, the
Consumer should reprocess the invocation
that caused the fault message to be
returned. The resulting invocation shall
AS082 CS082 resupply any data (templates and
userContext) that may not have been
sent previously due to an indication it was
stored in a session.
After complying with AS081, a high
function Consumer reprocesses the
invocation that caused the fault message
to be returned. The resulting invocation
AS187 resupplies all data (templates and
userContext) that may not have been sent
previously due to an indication it was
stored in a session.
The Consumer shall not supply a
AS084 CS084 RP0840 sessionID to the Producer which it has
passed to releaseSessions() unless the
Producer has since reused the sessionID.
The Consumer shall supply any cookies
the Producer sets for interacting with a
particular instance of a Portlet to both the
AS085 CS085 performBlockingInteraction and
getMarkup operations in the
WSRP_v1_Markup_PortType interface.
Consumer handling of cookies shall follow
the prescriptions of RFC2109:
1. A Set-Cookie response header whose
NAME is the same as a previous cookie,
and whose Domain and Path attribute
values exactly (string) match those of the
previous cookie, will replace the old
cookie with the new one.
2. If the Set-Cookie has a value for Max-
Age of zero, the (old and new) cookie is
discarded.
3. Otherwise cookies accumulate until
AS086 CS086 they expire (resources permitting), at
which time they are discarded.
4. Cookies are sent based on the specified
request-host (including request-URI) and
should be sent until they expire.
5. In WSRP, cookies are specific to the
portletHandle and the end-user on whose
behalf the Consumer is invoking the
Producer and may only be resupplied for
this specific pair (the portletHandle is
relaxed to one from a group for cookies
returned from initCookie() when
ServiceDescription.requiresInitCookie=per
Group)
The UnsupportedMode fault message shall
not be returned when
AS087 CS087 RP0870 MarkupParams.mode has a value of Test
"wsrp:view".
Portlets shall treat any value of
AS088 CS088 MarkupParams.mode that they do not Test
understand as "wsrp:view".
Portlets should restrict the screen real
estate needed for their markup when Untesta
AS089 CS089 - MarkupParams.windowState has a value ble
of "wsrp:normal".
The UnsupportedWindowState fault
message shall not be returned when
AS090 CS090 RP0900 MarkupParams.windowState has a value Test Test
of "wsrp:normal".
Portlets may only include non-visible
AS091 CS091 markup (styles, grammars and scripting) Test
when MarkupParams.windowState has a
value of "wsrp:minimized".
Portlets may consume additional screen
CS092 real estate when Untesta
AS092 -
CS093 MarkupParams.windowState has a value ble
of "wsrp:maximized" or "wsrp:solo".
Portlets shall treat any value of
AS093 CS094 - MarkupParams.windowState that they do Untesta Untestable
not understand as "wsrp:normal". ble
A Producer's
ServiceDescription.userCategoryDescriptio
AS094 CS095 - ns declares what user categories it Untestable
supports.
For any End-User, the Consumer may
assert in UserContext.userCategories[]
any number (zero to all) of user
AS095 CS096 RP0950 categories a Producer has declared in
ServiceDescription.userCategoryDescriptio
ns.
Invocations of Producer operations should
not return a fault message just because
AS096 CS097 the Consumer did not specify any user Report
categories.
If the Producer has not declared support
for any user categories, the Consumer
AS097 RP067 shall not assert any on behalf of the End-
User.
All registration processes shall produce a
registrationHandle which the Consumer
AS098 CS098 - then supplies as Untestable
RegistrationContext.registrationHandle.
The value for
RegistrationData.consumerAgent shall
AS099 CS099 RP0990 follow the format
"productName.majorVersion.minorVersion
".
The names of the properties supplied in
RegistrationData.registrationProperties
AS100 CS100 RP1000 should be taken from the set published in
ServiceDescription.registrationPropertyDe
scription.
When a Consumer wishes to end a
AS101 CS101 - relationship with a Producer, it invokes
the deregister() operation.
When a Producer chooses to end a
relationship, it shall return an
AS102 CS102 - Security.InvalidRegistration fault Untestable
message.
An invocation of register() shall either
succeed (returning a registrationHandle)
AS103 CS104 RP1030 Test
or return a fault message indicating the
nature of the failure.
An invocation of register() shall not fail
AS104 CS105 because the Consumer has already Test
registered.
The Consumer shall not supply a value in
RegistrationContext.registrationHandle
that has previously been either supplied
AS105 CS107 RP1050 to deregister() or supplied to an
invocation that returned a
Security.InvalidRegistration fault
message.
When the Consumer supplies an invalid
RegistrationContext.registrationHandle to
a Producer that requires registration, the
AS106 CS108 RP1060 Producer shall return a Test
Security.InvalidRegistration fault
message.
Any failure of a deregister() invocation
AS107 CS109 - shall return a fault message specifying the Untestable
reason for the failure
A Producer's
ServiceDescription.offeredPortlets array
AS108 CS110 RP1080 shall have at least one member (may Test
require registration to access).
Consumers may clone Portlets either
explicitly (via clonePortlet()) or implicitly
(via the "cloneBeforeWrite" setting of the
AS109 CS111 MarkupParams.portletState field). The
properties of a cloned portlet may be set
explicitly (via setProperties()) or opaquely
(via "wsrp:edit" mode).
If a
BlockingInteractionResponse.UpdateRespo
nse has a value for portletContext, then
AS110 CS112 RP1100 the Producer must have exposed a port Test
that specifies the binding
"WSRP_v1_PortletManagement_Binding_S
OAP".
Producers shall be able to parse a
AS199 multipart mime message from a single Test
UploadContext structure.
Producers shall properly handle the
AS203 Consumer parsing a multipart mime Test
message into the formParameters array
and an array of UploadContext structures.
The AccessDenied fault message should
AS111 CS113 RP1110 be returned when a valid portletHandle is Report
passed with a registrationHandle that
does not scope it
A high function Producer returns the fault
AS188 RP1880 message AccessDenied when a valid
portletHandle is passed with a
registrationHandle that does not scope it.
The locales with values in
PortletDescriptionResponse.resourceList
AS113 CS114 RP1130 should all be in the list of locales Report
requested via the desiredLocales
parameter.
The PortletContext.portletHandle supplied
to clonePortet() shall reference either a
portletHandle from
AS114 CS115 RP1160 ServiceDescription.portletDescriptions[].p
ortletHandle or a previously returned
PortletContext.portletHandle (these can
be returned from clonePortlet, getMarkup
or performBlockingInteraction).
If a Portlet's state is pushed to the
Consumer for persisting
(PortletContext.portletState) then the
AS115 CS116 RP1150 portletState field returned from Test
clonePortlet() shall be equal to the one
supplied.
The PortletContext.portletHandle supplied
to an operation shall either be selected
AS116 CS117 RP1160 from
ServiceDescription.portletDescriptions[].p
ortletHandle or a previously returned
PortletContext.portletHandle.
The Producer shall return a fault message
when a cloned portlet
(PortletContext.portletHandle) is used
AS179 CS117 RP1790 with a Test
RegistrationContext.registrationHandle
different from what was supplied when
the cloned portlet was generated.
The cloned PortletContext.portletHandle
returned shall not be a duplicate of a
AS176 CS117 RP1760 Test
previously returned clone for the supplied
RegistrationContext.registrationHandle.
Unregistered Consumers shall destroy any
cloned Portlets using destroyPortlets()
AS117 CS119 -
when ending a relationship with the
Producer
When finished using a cloned Portlet, the
AS118 CS120 - Consumer shall invoke destroyPortlets()
supplied the relevant portletHandle.
Once destroyPortlets() has returned
without an error message, the Consumer
AS119 CS121 RP1190
shall not supply any of the passed
portletHandles on subsequent invocations.
The Producer/Portlet shall process
property updates as a set and not do Untesta
AS120 CS122 - Untestable
things such as validation until the full set ble
has been processed.
The Producer shall not begin the
processing of a set of property updates
AS121 CS123 - Untestable
while any other set is being processed for
the same portletHandle.
When a nil names parameter is supplied
to getPortletProperties(), the Producer
AS122 CS124 - Untestable
shall enumerate the properties for the
referenced portletHandle.
PortletPropertyDescriptionResponse
should contain all the properties that are
AS123 CS125 Report
enumerated when no names parameter is
passed to getPortletProperties().
A high function Producer ensures a match
between the properties described in
PortletPropertyDescriptionResponse and
AS189
those enumerated when no names
parameter is passed to
getPortletProperties().
The character set of the returned markup
AS125 CS127 - shall be one of UTF-8, UTF-16 or a value Untestable
from MarkupParams.characterSets[].
The Producer/Portlet shall encode all URL
AS126 CS128 values so that they are valid for the Test Test
markup type being returned.
Whenever the Portlet/Producer needs the
Consumer to rewrite any URLs, it shall set
AS127 CS129 Test Test
the MarkupContext.requiresUrlRewriting
flag to "true".
Producers/Portlets shall comply with
RFC2279, RFC1738 and RFC2141 when
AS128 CS130 generating URLs. In particular, non-ASCII Test Test
characters are to be represented using
UTF-8 and then escaped using the %hh
syntax.
When processing an URL activation, the
Consumer shall determine whether or not
AS129 CS131 RP1290 any requests to change window state or
mode are to be honored before invoking
the target operation on the Producer.
Consumer URL rewrite processing can
AS130 CS132 - ignore URLs not fully complying to the
specification defined template.
The Consumer shall process "&" and
AS193 CS176 RP1930 "&" as equivalent in URL rewriting
expressions.
The Consumer can ignore escaped
AS131 CS133 - characters whenever it is processing
Portlet URLs.
The first parameter of an URL conforming
AS132 CS133 RP1320 to the format for Consumer URL rewriting Test
shall always be "wsrp-urlType".
When form parameters are encoded into
the querystring because HTTP Get is used
for submitting them, the Consumer shall
AS133 CS135 place all such parameters not explicitly
represented in WSRP fields into the
InteractionsParams.formParameters
array.
When an activated portlet URL has
CS136 specified the wsrp-navigationalState
AS134 RP1340 portlet URL parameter, the Consumer
CS141
shall supply its value unchanged in the
MarkupParams.navigationalState field.
When an activated portlet URL has not
CS136 specified the wsrp-navigationalState
AS135 RP1350 portlet URL parameter, the Consumer
CS141
shall not supply any value in the
MarkupParams.navigationalState field.
When an UpdateResponse has a nil
navigationalState element, then the
AS136 CS136 RP1360 Consumer shall not supply any value in
the MarkupParams.navigationalState field
to an ensuing getMarkup().
When a portlet URL has a value of
"resource" for the wsrp-urlType portlet
AS137 CS137 RP1370 URL parameter, then it shall also have a Test Test
value for the wsrp-url and wsrp-
rewriteResource portlet URL parameters.
The Consumer shall parse the stream
fetched from a resource for URL rewriting
and namespacing when the resource was
AS198 requested by a URL with wsrp-
urlType="resource" and wsrp-
requiresRewrite="true"", and the resource
is a textual mime type that the Consumer
understands.
The values a Portlet supplies for portlet
URL parameters shall all be strictly
AS138 CS138 RP1380 Test Test
encoded so as to not invalidate them
being specified in an enclosing URL.
Producers shall use one of the urlType
values defined in the WSRP specification
AS204 RP2040 (i.e. render, resource, blockingAction) to Test
replace any occurrence of {wsrp-urlType}
in a template.
When an activated portlet URL has
specified the wsrp-interactionState portlet
AS143 CS141 RP1430 URL parameter, the Consumer shall
supply its value unchanged in the
InteractionParams.interactionState field.
When an activated portlet URL has not
specified the wsrp-interactionState portlet
AS144 CS142 RP1440 URL parameter, the Consumer shall not
supply any value in the
InteractionParams.interactionState field.
The value specified for the wsrp-mode
portlet URL parameter shall be one of
AS145 CS143 RP1450 "wsrp:view", "wsrp:edit", "wsrp:help", Test Test
"wsrp:preview" or a value specified in
RegistrationData.consumerModes.
When the portlet URL parameter wsrp-
mode is used, the wsrp-urlType portlet
AS146 CS144 RP1460 Test Test
URL parameter shall have a value of
"render" or "blockingAction".
The value specified for the wsrp-
windowState portlet URL parameter shall
be one of "wsrp:normal",
AS147 CS145 RP1470 Test Test
"wsrp:minimized", "wsrp:maximized",
"wsrp:solo" or a value specified in
RegistrationData.consumerWindowStates.
When the portlet URL parameter wsrp-
windowState is used, the wsrp-urlType
AS148 CS146 RP1480 Test Test
portlet URL parameter shall have a value
of "render" or "blockingAction".
When a Consumer rewrites a portlet URL
that specifies wsrp-secureURL as "true" it
AS149 CS147 RP1490
shall ensure that secure communications
are used when the URL is activated.
If any Portlet on an aggregated page has
requested secure communications using
the
PortletDescription.defaultMarkupSecure
field, the PortletDescription.onlySecure
field or the wsrp-secureURL portlet URL
AS150 CS148 RP1500 parameter, then the Consumer shall only
use secure communication with the End-
User. The Consumer shall also use secure
communications when invoking the
portlets which have indicated, using these
booleans, that communications need to be
secure.
The Portlet's processing of templates to
write URLs into its markup shall not
AS151 CS149 modify the structure, order or content of Test Test
the portions outside of the curly braces
(i.e "{" and "}".
The Consumer's value for
RuntimeContext.templates.blockingAction
AS152 CS150 RP1520 Template shall include the parameter
wsrp-mode, wsrp-windowState, wsrp-
interactionState and wsrp-
navigationalState.
The Consumer's value for
RuntimeContext.templates.renderTemplat
AS153 CS151 RP1530 e shall include the parameter wsrp-mode,
wsrp-windowState and wsrp-
navigationalState.
The Consumer's value for
AS154 CS152 RP1540 resourceTemplate shall include the
parameter wsrp-url.
If the Consumer supplies templates, then
the defaultTemplate shall not be null
AS155 CS153 RP1550 unless all other non-secure templates are
not null. These are
blockingActionTemplate, renderTemplate
and resourceTemplate.
The Consumer's value for defaultTemplate
should include the parameters wsrp-
AS156 CS154 RP1560
navigationalState, wsrp-interactionState,
wsrp-windowState and wsrp-mode.
A high function Consumer's value for
defaultTemplate includes the parameters
wsrp-navigationalState, wsrp-
AS190 RP1900 interactionState, wsrp-windowState and
wsrp-mode whenever the renderTemplate
or blockingActionTemplate are not also
supplied.
The Consumer's value for
secureDefaultTemplate should include the
AS158 CS156 RP1580 parameters wsrp-navigationalState, wsrp-
interactionState, wsrp-windowState and
wsrp-mode.
A high function Consumer's value for
secureDefaultTemplate includes the
parameters wsrp-navigationalState, wsrp-
AS191 RP1910 interactionState, wsrp-windowState and
wsrp-mode whenever the
secureRenderTemplate or
secureBlockingActionTemplate are not
also supplied.
If a form where the attribute method has
a value of "get" exists in any markup
AS160 CS158 generated by a portlet, then the value for Test
PortletDescription.usesMethodGet shall be
"true"
Tokens needing to be unique on the
Consumer's aggregated page need to be
namespaced in a manner unique to the
instance of the Portlet. Use of the
AS161 CS159 RuntimeContext.namespacePrefix and Test
RuntimeContext.portletInstanceKey field's
values are examples of such a
mechanism.
The Consumer shall not strip any
AS162 CS160 RP1620 namespaces from parameters on
activated URLs.
The Consumer shall provide unique
namespaced names such that the set of
occurences of a namespaced name on the
AS163 CS161
aggregated page exactly matches the
placement of occurences requesting the
namespacing in the Portlet's markup.
The Consumer is allowed to replace any
MarkupContext.markupString or
AS164 CS162
MarkupContext.markupBinary that has
invalid elements.
The markup returned in either
MarkupContext.markupString or
MarkupContext.markupBinary shall not
AS165 CS163 RP1650 contain <html>, <body>, <frame>, Test Test
<frameset>, <head>, or <title> elements
for the mime type text/html.
The markup returned in either
MarkupContext.markupString or
MarkupContext.markupBinary shall not
AS166 CS164 RP1650 contain <html>, <body>, <head>, or Test Test
<title> elements for the mime type
"application/xhtml+xml".
The markup returned in either
MarkupContext.markupString or
MarkupContext.markupBinary should have
elements with the class attribute as
having a value equal to a spec defined
CSS class name (i.e. portlet-font, portlet-
font-dim, portlet-msg-status,portlet-msg-
info, portlet-msg-error, portlet-msg-alert,
portlet-msg-success, portlet-section-
header, portlet-section-body, portlet-
section-alternate, portlet-section-
selected, portlet-section-subheader,
portlet-section-footer, portlet-section-
AS167 CS165 RP1670 text, portlet-table-header, portlet-table- Report Report
body, portlet-table-alternate, portlet-table-
selected, portlet-table-subheader, portlet-
table-footer, portlet-table-text, portlet-
form-label, portlet-form-input-field,
portlet-form-button, portlet-icon-label,
portlet-form-field-label, portlet-form-field,
portlet-menu, portlet-menu-item, portlet-
menu-item-selected, portlet-menu-item-
hover, portlet-menu-item-hover-selected,
portlet-menu-cascade-item, portlet-menu-
cascade-item-selected, portlet-menu-
description or
portlet-menu-caption).
No style rule for a spec defined CSS class
AS168 CS166 may set visibility="hidden" or
block="none".
If the Consumer's page is of a type that
supports CSS (e.g. text/html) then style
AS169 CS166 rules for all of the CSS class names
defined in the spec must exist for the
page.
The fields under UserContext.profile
AS170 CS167 RP1700 should match those requested in
PortletDescription.userProfileItems.
Producer using SOAP 1.1 should set the
AS194 CS173 RP1940 faultcode element to be a WSRP Qname Report
for a defined fault type.
For fault messages, Producer using SOAP
1.1 shall set the child of the detail
AS195 CS174 RP1950 element to be a WSRP defined fault Test
element.
For fault messages, Producer using SOAP
1.2 shall:
1. Set the Subcode element to be a WSRP
AS196 CS175 RO1960 Qname for a defined fault type. Test
2. Set a child of the detail element to be a
WSRP defined fault element.
The referenced interfaces.wsdl, bindings
and types in the wsdl document must be
AS171 CS168 Test
identical to the copies at OASIS when
using a compare utility such as XMLdiff.
The Producer shall expose a port that
resolves to the
AS172 CS170 RP1720 "WSRP_v1_Markup_Binding_SOAP" Test
binding.
The Producer shall expose a port that
resolves to the
AS173 CS170 RP1730 "WSRP_v1_ServiceDescription_Binding_S Test
OAP" binding.
A high function Producer shall expose a
port that resolves to the
AS192 RP1920 "WSRP_v1_PortletManagement_Binding_S
OAP" binding.
If a Producer exposes any port that
resolves to the
"WSRP_v1_PortletManagement_PortType"
AS175 CS172 RP1750 portType, then the Producer shall expose Test
a port using the
WSRP_v1_PortletManagement_Binding_S
OAP binding.
Simple Complex Base Simple Complex Functional Configu
Priority
Producer Producer Consumer Consumer Consumer Categories ration
Test Test Test Test Test Unassigned High
Session
Report Report Report Medium 2
Handling
Untestable Untestable Untestable Unassigned Low
Untestable Untestable Handles Low
Untestable Untestable Handles Low
Test Test Test Unassigned Low 2
Cookie
Test Test Test High 6
Handling
Cookie
Report High 6
Handling
Cookie
Test Test High 6
Handling
Cookie
Test Test Test High 6
Handling
Untestable Untestable Untestable Untestable Untestable Extensions
Test Test Test Test Test Extensions Medium 5, 6
Report Report Extensions Low 5
Test Test Handles Very Low 2
Report Report Extensions Low 5
Report Report Metadata Low 5
Report Report User Profile Low 3
URL
Test Test Test Low 2
Processing
Test Test Test URL Writing High 6
Test Test Metadata Low 4
Test Test URL Writing Low 6
Test Test Test Test Test Properties High 5
Test Test Test Properties High 6
Test Test Properties Medium 3
Test Test Properties High 5
Cookie
Test Test Test High 6
Handling
Cookie
Test Test Test High 6
Handling
Test Test Registration High 3
Test Test Registration High 3
Test Test User Profile Low 5
Window
Test Test Low 5
States
Test Test Modes Low 5
Test Test Test Registration High 6
Report Report Unassigned Low 5
Test Test Metadata High 5
Test Test Registration High 5
Report Report Metadata Low 5
Session
Test Test High 5
Handling
Session
Report Report Very Low 5
Handling
Session
Test Test Test Low 6
Handling
Untestable Untestable Untestable Unassigned 6
Report Report Report Unassigned Very Low 6
Report Report Report URL Writing Very Low 2
Portlet
Test Test Test High 6
Management
Caching Low 5
Test Test Caching Low 5
Test Test Test Caching
Test Test Test Caching
Report Report Caching
Test Caching
Test Test Test Caching
Test Test Test Unassigned High 2
Report Report Report Markup Very Low 6
Report Markup Low 5
Test Markup Low 5
Test Test Test Modes High 6
Window
Test Test Test High 6
States
Test Test Markup High 5
Test Test Test Caching Low 6
Report Report Report Modes Very Low 6
Test Test Test Test Test Metadata Low 6
Test Test
Report Report Report
Test Test Caching High 5
Test Test Test Caching
Test Test Markup Very High 5
Test Test Markup High 5
Test Test Markup High 5
Report Report Markup High 5
Test Test Test URL Rewriting High 2
Test Test Test Caching
Report Report Report Unassigned Low 2
Modes Medium 4
URL
Untestable Untestable Untestable Low 2
Processing
Test Test Test User Profile Very Low 2
User
Test Test Test Medium 6
Categories
Test Test Test Caching
Test Test Test Caching
Test Test Test Caching
Report Caching
Test Caching
URL
Test Test Test High 6
Processing
Portlet
Untestable Untestable
Management
Portlet
Untestable Untestable
Management
Portlet
Test Test Test Medium
Management
Session
Test Test Test High 6
Handling
Portlet
Untestable Untestable Low 3
Management
Portlet
Report Report 3
Management
Cookie
Test Test Test High 6
Handling
Cookie
Test Test Test High 6
Handling
Cookie
Untestable Untestable Untestable High
Handling
Cookie
Test Test Test High 6
Handling
Cookie
Report Report Low 2
Handling
Cookie
Test Low 2
Handling
Session
Test Test Test High 6
Handling
Cookie
Test Test Test High 6
Handling
Cookie
Test Test Test Low 2
Handling
Test Test Modes High 4
Modes Medium 4
Window
States
Window
Test Test High 4
States
Window
Low 4
States
Window
States
Window
Untestable Untestable
States
User
Untestable Untestable 5
Categories
User
Report Report Report Low 6
Categories
User
Report Report Low 3
Categories
User
Test Test Test Medium 5
Categories
Untestable Untestable Registration
Test Test Test Registration Low 6
Report Report Report Registration Low 6
Untestable Untestable Untestable Registration 3
Untestable Untestable Registration 3
Test Test Registration Medium 3
Test Test Registration Medium 3
Test Test Test Registration High 2
Test Test Registration High 3
Untestable Untestable Registration
Test Test Metadata High 5
Portlet
Report Report Report Low 6
Management
Portlet
Test Test Medium 5
Management
Test Test
Test Test
Registration Low
Test Test Registration Low
Portlet
Report Report Very Low 5
Management
Portlet
Test Test Test High 6
Management
Portlet
Test Test Low 3
Management
Test Test Test Handles High 6
Test Test Handles High 3
Portlet
Test Test High 3
Management
Portlet
Untestable Untestable Untestable 2
Management
Portlet
Untestable Untestable Untestable 6
Management
Portlet
Test Test Test High 6
Management
Untestable Untestable Properties
Untestable Untestable Properties
Untestable Untestable Properties Low 3
Properties
Test Test Properties
Untestable Untestable Markup Low 4
Test Test Markup Low 4
Test Test URL Rewriting Low 4
Test Test URL Writing Very Low 5
URL
Test Test Test High 6
Processing
Untestable Untestable Untestable URL Rewriting 2
Test Test Test URL Rewriting High 2
URL
Untestable Untestable Untestable 2
Processing
Test Test URL Rewriting High 5
URL
Test Test Test High 2
Processing
URL
Test Test Test High 6
Processing
URL
Test Test Test High 6
Processing
URL
Test Test Test High 6
Processing
Test Test URL Rewriting Medium 5
Test Test Test URL Rewriting Medium 5
URL
Test Test Medium 5
Processing
Test Test
URL
Test Test Test High 6
Processing
URL
Test Test Test High 6
Processing
Test Test Modes Medium 5
Test Test URL Writing Low 5
Window
Test Test Medium 5
States
Test Test URL Writing Low 5
Test Test Test URL Rewriting High 2
URL
Test Test Test High 2
Processing
Test Test URL Writing High 5
Test Test Test URL Writing High 6
Test Test Test URL Writing High 6
Test Test Test URL Writing High 6
Test Test Test URL Writing High 6
Report URL Writing Low 2
Test Test URL Writing Low 2
Report URL Writing Low 2
Test Test URL Writing Low 2
Metadata Low 5
Namespacing Low
Test Test Test Namespacing Medium 2
Test Test Test Namespacing High 2
Report Report Report Markup Very Low 2
Test Test Markup High 4
Test Test Markup High 4
Report Report CSS Low 4
Test Test Test CSS High 2
Test Test Test CSS High 2
Report Report Report User Profile Very Low 2
Report Report Unassigned Medium
Test Test Unassigned High
Test Test Unassigned High
Test Test WSDL High 5
Test Test WSDL High 5
Test Test WSDL High 5
Test Test WSDL High 5
Test Test WSDL Low 5
Get documents about "