portals-pluto-scm mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From msnickl...@apache.org
Subject [18/20] Added CSV files for containing the apidoc and specification assertions to the directory portlet-tck_3.0/src/main/javadoc/doc-files
Date Mon, 04 Aug 2014 05:48:19 GMT
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/54a90144/portlet-tck_3.0/src/main/javadoc/doc-files/JSR286SpecAssertions.csv
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/src/main/javadoc/doc-files/JSR286SpecAssertions.csv b/portlet-tck_3.0/src/main/javadoc/doc-files/JSR286SpecAssertions.csv
new file mode 100644
index 0000000..69db64b
--- /dev/null
+++ b/portlet-tck_3.0/src/main/javadoc/doc-files/JSR286SpecAssertions.csv
@@ -0,0 +1,758 @@
+Section;Title;Name;Test;Description
+Addl Portlet Tests;;;;
+SPEC2_2;Compatibility;deployJSR168_1;TRUE;A portlet with the JSR 168 deployment descriptor can be deployed
+SPEC2_2;Compatibility;deployJSR168_2;TRUE;A portlet implementing only the JSR 168 API can be deployed
+SPEC2_5;Number of Portlet Instances;instantiate1;FALSE;In a single-VM environment, the portlet container must instantiate only one portlet object per portlet definition
+SPEC2_5;Number of Portlet Instances;instantiate2;FALSE;When the portlet application is marked as distributable in a multiple-VM environment, the portlet container must instantiate only one portlet object per portlet definition per virtual machine
+SPEC2_5;Initialization;initialization1;APITEST;The portlet container must initialize the portlet before invoking it to handle requests
+SPEC2_5;Initialization;initialization2;APITEST;A PortletConfig object must be passed to the portlet during initialization
+SPEC2_5;Initialization;initialization3;APITEST;If the portlet throws an UnavailableException or PortletException during initialization, the portlet container must not place the portlet in service
+SPEC2_5;Initialization;initialization4;FALSE;If the portlet throws an UnavailableException or PortletException during initialization, the portlet container must not call the destroy() method
+SPEC2_5;Initialization;initialization5;FALSE;If the portlet throws an UnavailableException containing time of unavailability, the portlet container must wait for the specified time to pass before initializing the portlet again
+SPEC2_5;Initialization;initialization6;TRUE;A RuntimeException thrown during initialization must be handled as a PortletException
+SPEC2_5;End Of Service;destroy1;FALSE;Once the destroy method is called on a portlet object, the portlet container must not route any requests to that portlet object
+SPEC2_5;End Of Service;destroy2;FALSE;After destroy(), if the portlet container needs to enable the portlet again, it must do so with a new portlet object, which is a new instance of the portlet's class
+SPEC2_5;End Of Service;destroy3;FALSE;If the portlet object throws a RuntimeException within the execution of the destroy method the portlet container must consider the portlet object successfully destroyed
+SPEC2_5;End Of Service;destroy4;FALSE;After the destroy method completes, the portlet container must release the portlet object so that it is eligible for garbage collection
+SPEC2_5;Request Handling;action1;APITEST;If the client request is triggered by an action URL, the portlet container must invoke the processAction method for the target portlet
+SPEC2_5;Request Handling;action2;TRUE;During action processing, the portlet container waits for the processAction method to complete before processing any events that were set
+SPEC2_5;Request Handling;action3;APITEST;During action processing, the portlet container calls the processEvent method for all portlets receiving events
+SPEC2_5;Request Handling;action4;APITEST;After event processing is finished, the portlet container calls the render method for all portlets on the page
+SPEC2_5;Request Handling;action5;TRUE;If the portlet issues a redirect during action processing, the portlet container allows the processAction method to complete
+SPEC2_5;Request Handling;action6;TRUE;If the portlet issues a redirect during action processing, the portlet container must send the redirect back to the user agent and finalize the request processing.
+SPEC2_5;Request Handling;action7;TRUE;If the portlet issues a redirect during action processing, events that were set are not processed
+SPEC2_5;Request Handling;render1;TRUE;If the client request is triggered by a render URL, the portlet container must invoke the render method for all portlets on the page that do not have valid cache entries
+SPEC2_5;Request Handling;render2;FALSE;If the client request is triggered by a render URL, the portlet container may invoke the render method for portlets on the page that have valid cache entries
+SPEC2_5;Request Handling;render3;TRUE;If the client request is triggered by a render URL, the portlet container must not invoke the processAction method for any portlet on the page
+SPEC2_5;Request Handling;resource1;TRUE;If the client request is triggered by a resource URL, the portlet container must invoke the serveResource method for the target portlet if its content does not have a valid cache entry
+SPEC2_5;Request Handling;resource2;FALSE;If the client request is triggered by a resource URL, the portlet container may invoke the serveResource method for the target portlet if its content has a valid cache entry
+SPEC2_5;Request Handling;resource3;TRUE;If the client request is triggered by a resource URL, the portlet container must not invoke the processAction method for any portlet on the page
+SPEC2_5;Request Handling;exception1;TRUE;If the portlet throws an PortletException in processAction, all operations on the ActionResponse, including set events, must be ignored
+SPEC2_5;Request Handling;exception2;TRUE;If the portlet throws a RuntimeException in processAction, all operations on the ActionResponse, including set events, must be ignored
+SPEC2_5;Request Handling;exception3;FALSE;If the portlet throws an permanent UnavailableException in processAction, the portlet container must call the destroy method and dispose of the object
+SPEC2_5;Request Handling;exception4;TRUE;If the portlet throws an PortletException in processEvent, all operations on the EventResponse, including set events, must be ignored
+SPEC2_5;Request Handling;exception5;TRUE;If the portlet throws a RuntimeException in processEvent, all operations on the EventResponse, including set events, must be ignored
+SPEC2_5;Request Handling;exception6;FALSE;If the portlet throws an permanent UnavailableException in processEvent, the portlet container must call the destroy method and dispose of the object
+SPEC2_5;GenericPortlet;actionDispatching1;APITEST;If the ActionRequest.ACTION_NAME parameter is set on the action URL, the GenericPortlet processAction method will dispatch the request to a subclass method annotated with the tag @ProcessAction(name=<action name>)
+SPEC2_5;GenericPortlet;actionDispatching2;TRUE;If the ActionRequest.ACTION_NAME parameter is not set on the action URL, the GenericPortlet processAction method will throw a PortletException
+SPEC2_5;GenericPortlet;actionDispatching3;APITEST;If the ActionRequest.ACTION_NAME annotated method cannot be found, the GenericPortlet processAction method will throw a PortletException
+SPEC2_5;GenericPortlet;eventDispatching1;TRUE;The GenericPortlet processEvent method will dispatch the request to a subclass method annotated with the tag @ProcessEvent(qname=<eventname>), where <eventname> must be in the format provided by Qname.toString()
+SPEC2_5;GenericPortlet;eventDispatching2;TRUE;The GenericPortlet processEvent method will dispatch the request to a subclass method annotated with the tag @ProcessEvent(name=<event_name_local_part>)
+SPEC2_5;GenericPortlet;eventDispatching6;APITEST;If no matching annotated method is found, the GenericPortlet processEvent method sets the render parameters to match the request parameters
+SPEC2_5;GenericPortlet;resourceDispatching1;APITEST;If the resource ID is set on the ResourceURL triggering the request, the GenericPortlet serveResource method will forward the request to the value of the resource ID field
+SPEC2_5;GenericPortlet;resourceDispatching5;APITEST;If the resource ID is not set on the ResourceURL triggering the request, the GenericPortlet serveResource method does nothing
+SPEC2_5;GenericPortlet;renderDispatching1;APITEST;render - The GenericPortlet render method will set the title returned by the getTitle method
+SPEC2_5;GenericPortlet;renderDispatching2;APITEST;render - If the Attribute RenderRequest.RENDER_PART is set to RENDER_HEADERS, the doHeaders method is called
+SPEC2_5;GenericPortlet;renderDispatching3;APITEST;render - If the Attribute RenderRequest.RENDER_PART is set to RENDER_MARKUP, the doDispatch method is called
+SPEC2_5;GenericPortlet;renderDispatching4;APITEST;render - If the Attribute RenderRequest.RENDER_PART is set to an unknown value, a PortletException is thrown
+SPEC2_5;GenericPortlet;renderDispatching5;APITEST;render - The GenericPortlet render method will call the doDispatch method
+SPEC2_5;GenericPortlet;renderDispatching6;APITEST;getTitle - If the GenericPortlet getTitle method is overwritten, the value the method returns will be used as title
+SPEC2_5;GenericPortlet;renderDispatching7;APITEST;getTitle - The GenericPortlet getTitle method will set the title retrieved from the ResourceBundle provided by the PortletConfig
+SPEC2_5;GenericPortlet;renderDispatching8;TRUE;getTitle - If a ResourceBundle containing the title string is defined in the deployment descriptor, that title string will be used
+SPEC2_5;GenericPortlet;renderDispatching9;TRUE;getTitle - If a ResourceBundle containing the title string is not defined in the deployment descriptor, the title defined in the portlet descriptor <title> element is used
+SPEC2_5;GenericPortlet;renderDispatching10;APITEST;doDispatch - If the portlet window state is WindowState.MINIMIZED, the doDispatch method does nothing
+SPEC2_5;GenericPortlet;renderDispatching11;APITEST;doDispatch - The GenericPortlet doDispatch method will dispatch the request to a subclass method annotated with the tag @RenderMode(name=<portlet mode name>)
+SPEC2_5;GenericPortlet;renderDispatching17;APITEST;doDispatch - If an annotated method cannot be found, and the portlet mode is VIEW, the doView method is called
+SPEC2_5;GenericPortlet;renderDispatching18;APITEST;doDispatch - If an annotated method cannot be found, and the portlet mode is EDIT, the doEdit method is called
+SPEC2_5;GenericPortlet;renderDispatching19;APITEST;doDispatch - If an annotated method cannot be found, and the portlet mode is HELP, the doHelp method is called
+SPEC2_5;GenericPortlet;renderDispatching20;APITEST;doDispatch - If an annotated method cannot be found  and the portlet mode is not VIEW, EDIT, or HELP, a PortletException is thrown
+SPEC2_6;Config;getResourceBundle1;TRUE;The resource bundle defined in the deployment descriptor <resource-bundle> element can be obtained through the PortletConfig object
+SPEC2_6;Config;getResourceBundle2;TRUE;If the resource bundle contains a "javax.portlet.title" property, the value defined in the bundle is returned by the corresponding getString method call
+SPEC2_6;Config;getResourceBundle3;TRUE;If the resource bundle contains a "javax.portlet.short-title" property, the value defined in the bundle is returned by the corresponding getString method call
+SPEC2_6;Config;getResourceBundle4;TRUE;If the resource bundle contains a "javax.portlet.keywords" property, the value defined in the bundle is returned by the corresponding getString method call
+SPEC2_6;Config;getResourceBundle5;TRUE;If the resource bundle does not contain a "javax.portlet.title" property, the value defined in the deployment descriptor <title> element is returned by the corresponding getString method call
+SPEC2_6;Config;getResourceBundle6;TRUE;If the resource bundle does not contain a "javax.portlet.short-title" property, the value defined in the deployment descriptor <short-title> element is returned by the corresponding getString method call
+SPEC2_6;Config;getResourceBundle7;TRUE;If the resource bundle does not contain a "javax.portlet.keywords" property, the value defined in the deployment descriptor <keywords> element is returned by the corresponding getString method call
+SPEC2_6;Config;getResourceBundle8;TRUE;If no resource bundle is defined, the value defined in the deployment descriptor <title> element is returned by the corresponding getString method call
+SPEC2_6;Config;getResourceBundle9;TRUE;If no resource bundle is defined, the value defined in the deployment descriptor <short-title> element is returned by the corresponding getString method call
+SPEC2_6;Config;getResourceBundle10;TRUE;If no resource bundle is defined, the value defined in the deployment descriptor <keywords> element is returned by the corresponding getString method call
+SPEC2_6;Config;getDefaultNamespace1;APITEST;The getDefaultNamespace method returns the default namespace set in the <default-namespace> element of the portlet application deployment descriptor
+SPEC2_6;Config;getDefaultNamespace2;APITEST;The getDefaultNamespace method returns the value XMLConstants.NULL_NS_URI if no <default-namespace> element is set in the portlet application deployment descriptor
+SPEC2_6;Config;getPublicRenderParameterNames1;APITEST;The getPublicRenderParameterNames method returns an Enumeration of the public render parameters set in the <supported-publishing-event> element of the portlet application deployment descriptor
+SPEC2_6;Config;getPublicRenderParameterNames2;APITEST;The getPublicRenderParameterNames method returns an empty Enumeration if no <supported-publishing-event> element is set in the portlet application deployment descriptor
+SPEC2_6;Config;getPublishingEventQnames1;APITEST;The getPublishingEventQnames method returns an Enumeration of the public render parameters set in the <supported-publishing-event> element of the portlet application deployment descriptor
+SPEC2_6;Config;getPublishingEventQnames2;APITEST;The getPublishingEventQnames method returns an empty Enumeration the value XMLConstants.NULL_NS_URI if no <supported-publishing-event> element is set in the portlet application deployment descriptor
+SPEC2_6;Config;getPublishingEventQnames3;TRUE;getPublishingEventQnames - If the event was defined using the <name> element rather than the <qname> element, default namespace defined with the <default-namespace> element must be added as the event namespace
+SPEC2_6;Config;getPublishingEventQnames4;TRUE;getPublishingEventQnames - If the event was defined using the <name> element rather than the <qname> element and there is no default namespace defined, the value XMLConstants.NULL_NS_URI must be added as the event namespace
+SPEC2_6;Config;getProcessingEventQnames1;APITEST;The getProcessingEventQnames method returns an Enumeration of the public render parameters set in the <supported-Processing-event> element of the portlet application deployment descriptor
+SPEC2_6;Config;getProcessingEventQnames2;APITEST;The getProcessingEventQnames method returns an empty Enumeration the value XMLConstants.NULL_NS_URI if no <supported-Processing-event> element is set in the portlet application deployment descriptor
+SPEC2_6;Config;getProcessingEventQnames3;TRUE;getProcessingEventQnames - If the event was defined using the <name> element rather than the <qname> element, default namespace defined with the <default-namespace> element must be added as the event namespace
+SPEC2_6;Config;getProcessingEventQnames4;TRUE;getProcessingEventQnames - If the event was defined using the <name> element rather than the <qname> element and there is no default namespace defined, the value XMLConstants.NULL_NS_URI must be added as the event namespace
+SPEC2_6;Config;getSupportedLocales1;APITEST;The getSupportedLocales method returns an Enumeration of the supported locales set in the <supported-locale> element of the portlet application deployment descriptor
+SPEC2_6;Config;getSupportedLocales2;APITEST;The getSupportedLocales method returns an empty Enumeration the value XMLConstants.NULL_NS_URI if no <supported-locale> element is set in the portlet application deployment descriptor
+SPEC2_6;Config;getContainerRuntimeOptions1;APITEST;The method returns a Map
+SPEC2_6;Config;getContainerRuntimeOptions2;APITEST;The returned Map has key type of String
+SPEC2_6;Config;getContainerRuntimeOptions3;APITEST;The returned Map has value type of String[]
+SPEC2_6;Config;getContainerRuntimeOptions5;APITEST;The returned Map contains only values defined in the deployment descriptor <container-runtime-option> elements
+SPEC2_6;Config;getContainerRuntimeOptions6;TRUE;The returned Map contains values defined in the deployment descriptor <container-runtime-option> elements at the portlet application level
+SPEC2_6;Config;getContainerRuntimeOptions7;TRUE;The returned Map contains values defined in the deployment descriptor <container-runtime-option> elements at the portlet level
+SPEC2_6;Config;getContainerRuntimeOptions8;TRUE;If the deployment descriptor contains <container-runtime-option> elements defined at both the portlet and the portlet application levels, the returned Map contains a merger of all values
+SPEC2_6;Config;getContainerRuntimeOptions9;TRUE;If the deployment descriptor contains <container-runtime-option> elements of the same name defined at both the portlet and the portlet application levels, the returned Map contains a the value defined at the portlet level
+SPEC2_6;Config;getContainerRuntimeOptions10;APITESTS;The returned Map does not contain values not supported by the portlet container
+SPEC2_8;Portlet Modes;declaringPortletModes1;TRUE;Support for the VIEW mode does not need to be declared in the deployment descriptor
+SPEC2_8;Portlet Modes;declaringPortletModes2;TRUE;Support for the HELP mode must be declared in the deployment descriptor
+SPEC2_8;Portlet Modes;declaringPortletModes3;TRUE;A custom portlet mode may be declared in the deployment descriptor
+SPEC2_8;Portlet Modes;declaringPortletModes4;TRUE;A custom portlet mode with <portal-managed>false</portal-managed> may be declared in the deployment descriptor
+SPEC2_8;Portlet Modes;declaringPortletModes5;TRUE;The PortletRequest.isPortletModeAllowed method must return FALSE for a custom portlet mode with <portal-managed>true</portal-managed> that is not supported by the portlet container
+SPEC2_8;Portlet Modes;declaringPortletModes6;TRUE;The portlet container must ignore all custom portlet modes in the deployment descriptor with <portal-managed>true</portal-managed> that is not supported by the portlet container
+SPEC2_8;Portlet Modes;declaringPortletModes7;TRUE;A custom portlet mode with <portal-managed>false</portal-managed> corresponds to the VIEW mode from the portal point of view
+SPEC2_8;Portlet Modes;declaringPortletModes8;TRUE;A custom portlet mode can have a localized decoration name in the resource bundle with the name of javax.portlet.app.custom-portlet-mode.<name>.decoration-name
+SPEC2_8;Portlet Modes;declaringPortletModes9;TRUE;The portlet must not be invoked in a mode that has not been declared to be supported for a given markup type
+SPEC2_9;Window States;declaringWindowStates1;TRUE;Support for the NORMAL window state does not need to be declared in the deployment descriptor
+SPEC2_9;Window States;declaringWindowStates2;TRUE;Support for the MINIMIZED window state does not need to be declared in the deployment descriptor
+SPEC2_9;Window States;declaringWindowStates3;TRUE;Support for the MAXIMIZED window state does not need to be declared in the deployment descriptor
+SPEC2_9;Window States;declaringWindowStates4;TRUE;A custom window state may be declared in the deployment descriptor
+SPEC2_9;Window States;declaringWindowStates5;TRUE;The PortletRequest.isWindowStateAllowed method must return FALSE for a custom window state that is not supported by the portlet container
+SPEC2_9;Window States;declaringWindowStates6;TRUE;The portlet container must ignore all custom window states in the deployment descriptor that are not supported by the portal
+SPEC2_9;Window States;declaringWindowStates7;TRUE;The portlet must not be invoked in a window state other than NORMAL, MINIMIZED, or MAXIMIZED that has not been declared to be supported for a given markup type
+SPEC2_13;Resource Serving;properties1;APITEST;The setProperty method sets a property with a given name and value
+SPEC2_13;Resource Serving;properties2;APITEST;The setProperty method replaces an existing property of the same name
+SPEC2_13;Resource Serving;properties3;TRUE;The setProperty method can set HTTP header values to be transported back to the client
+SPEC2_13;Resource Serving;properties4;TRUE;If the setProperty method is called after the response has been committed, the property will not be transported back to the client
+SPEC2_13;Resource Serving;properties5;APITEST;The addProperty method adds a property with a given name and value
+SPEC2_13;Resource Serving;properties6;APITEST;The addProperty method adds a value to an existing property of the same name
+SPEC2_13;Resource Serving;properties7;TRUE;The addProperty method can add HTTP header values to be transported back to the client
+SPEC2_13;Resource Serving;properties8;TRUE;If the addProperty method is called after the response has been committed, the property will not be transported back to the client
+SPEC2_13;Resource Serving;properties9;APITEST;The portlet can use the getProperty method to access single portal property and optionally-available HTTP header values
+SPEC2_13;Resource Serving;properties10;APITEST;The portlet can use the getProperties method to access multiple portal property and optionally-available HTTP header values by the same property name
+SPEC2_13;Resource Serving;properties11;APITEST;The portlet can use the getPropertyNames method to obtain an Enumeration of all available property names
+SPEC2_13;Resource Serving;properties12;APITEST;The portlet can access cookies provided by the current request using the getCookies method
+SPEC2_13;Resource Serving;properties13;APITEST;The portlet can use the getMethod method to retrieve the HTTP method through which the request was made
+SPEC2_13;Resource Serving;properties14;APITEST;The portlet can use the getResourceID method to retrieve the resource ID string set on the ResourceURL
+SPEC2_13;Resource Serving;properties15;APITEST;If a resource ID has not been set on the ResourceURL, the getResourceID method must return null
+SPEC2_13;Resource Serving;resourceURLs1;APITEST;When a resource URL is invoked, the portlet container must call the serveResource method of the portlet or return a valid cached result for this resource URL
+SPEC2_13;Resource Serving;resourceURLs2;TRUE;When a resource URL is invoked, the portlet container must not call the processAction method
+SPEC2_13;Resource Serving;resourceURLs3;TRUE;When a resource URL is invoked, the portlet container must not call the processEvent method
+SPEC2_13;Resource Serving;resourceURLs4;TRUE;After a resource URL has been created, the portlet mode set on the resource URL cannot be changed
+SPEC2_13;Resource Serving;resourceURLs5;TRUE;After a resource URL has been created, the window state set on the resource URL cannot be changed
+SPEC2_13;Resource Serving;resourceURLs6;TRUE;After a resource URL has been created, the render parameters set on the resource URL cannot be changed
+SPEC2_13;Resource Serving;resourceURLs7;TRUE;After a resource URL has been created, a parameter set on the resource URL is a resource parameter, not a render parameter
+SPEC2_13;Resource Serving;resourceURLs8;TRUE;After a resource URL has been created, a parameter set on the URL with the same name as an exsisting render parameter results in a multivalued parameter containing both the resource pramaeter values and the render parameter values
+SPEC2_13;Resource Serving;resourceURLs9;TRUE;In the resulting multivalued parameter after a resource parameter is added with the same name as a render parameter, the the render parameter values must be the last entries in the parameter value array
+SPEC2_13;Resource Serving Cache;caching1;TRUE;If portlet URLs are included in the markup, portals / portlet containers must create correct portlet URLs for all text-based markup types.
+SPEC2_13;Resource Serving Cache;caching2;TRUE;The portlet can use the setCacheability method to set the cache level for the ResourceURL
+SPEC2_13;Resource Serving Cache;caching3;TRUE;If the cache level is not set, a generated resource URL has the cacheability of the request in which it was created
+SPEC2_13;Resource Serving Cache;cachingFULL1;TRUE;If the cache level is set to FULL, the resource URL does not contain the current render parameters
+SPEC2_13;Resource Serving Cache;cachingFULL2;TRUE;If the cache level is set to FULL, the resource URL does not contain the current portlet mode
+SPEC2_13;Resource Serving Cache;cachingFULL3;TRUE;If the cache level is set to FULL, the resource URL does not contain the current window state
+SPEC2_13;Resource Serving Cache;cachingFULL4;TRUE;If the cache level is set to FULL, the resource URL does not contain the current page state
+SPEC2_13;Resource Serving Cache;cachingFULL5;TRUE;In a resource request resulting from triggering a resource URL with cacheability set to FULL, a resource URL with cacheability set to FULL may be generated
+SPEC2_13;Resource Serving Cache;cachingFULL6;TRUE;In a resource request resulting from triggering a resource URL with cacheability set to FULL, setting cacheability on a resource URL to PORTLET results in an an IllegalStateException
+SPEC2_13;Resource Serving Cache;cachingFULL7;TRUE;In a resource request resulting from triggering a resource URL with cacheability set to FULL, setting cacheability on a resource URL to PAGE results in an an IllegalStateException
+SPEC2_13;Resource Serving Cache;cachingFULL8;TRUE;In a resource request resulting from triggering a resource URL with cacheability set to FULL, an attempt to create a render URL results in an an IllegalStateException
+SPEC2_13;Resource Serving Cache;cachingFULL9;TRUE;In a resource request resulting from triggering a resource URL with cacheability set to FULL, an attempt to create an action URL results in an an IllegalStateException
+SPEC2_13;Resource Serving Cache;cachingPORTLET1;TRUE;If the cache level is set to PORTLET, the resource URL contains the current render parameters
+SPEC2_13;Resource Serving Cache;cachingPORTLET2;TRUE;If the cache level is set to PORTLET, the resource URL contains the current portlet mode
+SPEC2_13;Resource Serving Cache;cachingPORTLET3;TRUE;If the cache level is set to PORTLET, the resource URL contains the current window state
+SPEC2_13;Resource Serving Cache;cachingPORTLET4;TRUE;If the cache level is set to PORTLET, the resource URL does not contain the current page state
+SPEC2_13;Resource Serving Cache;cachingPORTLET5;TRUE;In a resource request resulting from triggering a resource URL with cacheability set to PORTLET, a resource URL with cacheability set to FULL may be generated
+SPEC2_13;Resource Serving Cache;cachingPORTLET6;TRUE;In a resource request resulting from triggering a resource URL with cacheability set to PORTLET, a resource URL with cacheability set to PORTLET may be generated
+SPEC2_13;Resource Serving Cache;cachingPORTLET7;TRUE;In a resource request resulting from triggering a resource URL with cacheability set to PORTLET, setting cacheability on a resource URL to PAGE results in an an IllegalStateException
+SPEC2_13;Resource Serving Cache;cachingPORTLET8;TRUE;In a resource request resulting from triggering a resource URL with cacheability set to PORTLET, an attempt to create a render URL results in an an IllegalStateException
+SPEC2_13;Resource Serving Cache;cachingPORTLET9;TRUE;In a resource request resulting from triggering a resource URL with cacheability set to PORTLET, an attempt to create an action URL results in an an IllegalStateException
+SPEC2_13;Resource Serving Cache;cachingPAGE1;TRUE;If the cache level is set to PAGE, the resource URL contains the current render parameters
+SPEC2_13;Resource Serving Cache;cachingPAGE2;TRUE;If the cache level is set to PAGE, the resource URL contains the current PAGE mode
+SPEC2_13;Resource Serving Cache;cachingPAGE3;TRUE;If the cache level is set to PAGE, the resource URL contains the current window state
+SPEC2_13;Resource Serving Cache;cachingPAGE4;TRUE;If the cache level is set to PAGE, the resource URL contains the current page state
+SPEC2_13;Resource Serving Cache;cachingPAGE5;TRUE;In a resource request resulting from triggering a resource URL with cacheability set to PAGE, a resource URL with cacheability set to FULL may be generated
+SPEC2_13;Resource Serving Cache;cachingPAGE6;TRUE;In a resource request resulting from triggering a resource URL with cacheability set to PAGE, a resource URL with cacheability set to PORTLET may be generated
+SPEC2_13;Resource Serving Cache;cachingPAGE7;TRUE;In a resource request resulting from triggering a resource URL with cacheability set to PAGE, a resource URL with cacheability set to PAGE may be generated
+SPEC2_13;Resource Serving Cache;cachingPAGE8;TRUE;In a resource request resulting from triggering a resource URL with cacheability set to PAGE, a render URL may be generated
+SPEC2_13;Resource Serving Cache;cachingPAGE9;TRUE;In a resource request resulting from triggering a resource URL with cacheability set to PAGE, an action URL may be generated
+SPEC2_15;Event;event1;TRUE;Event names are defined in the deployment descriptor
+SPEC2_15;Event;event2;TRUE;Event value types are defined in the deployment descriptor
+SPEC2_15;Event;event3;TRUE;The supported publishing events for the portlet are defined in the deployment descriptor
+SPEC2_15;Event;event4;TRUE;The supported processing events for the portlet are defined in the deployment descriptor
+SPEC2_15;Event;event5;TRUE;The portlet can use the EventRequest.getEvent method to obtain an Event object encapsulating the event name and value
+SPEC2_15;Event;event6;TRUE;The Event object must always have a name
+SPEC2_15;Event;event7;TRUE;If the Event object has a value set when the event is published, the value must be based on the value defined in the deployment descriptor
+SPEC2_15;Event;event8;TRUE;If the Event object has a value set when the event is published, the value must be available from the Event object in the processEvent method
+SPEC2_15;Event;event9;TRUE;If the Event object does not have a value set when the event is published, the Event object available in the processEvent method must not have a value
+SPEC2_15;Event;event10;TRUE;The Event Qname object representing the name can be retrieved through the Event getQname method
+SPEC2_15;Event;event11;TRUE;The local part of the Event Qname object representing the name can be retrieved through the Event getName method
+SPEC2_15;Event;event12;TRUE;Events are valid only in the current client request and the portlet container must therefore deliver all events within the current client request
+SPEC2_15;Event;event13;TRUE;Event distribution must be serialized for a specific portlet window per client request so that at any given time a portlet window is only processing one event in the processEvent method for the current client request
+SPEC2_15;Event;event14;TRUE;Portlet event processing may occur after the processing of the action, if the portlet was target of an action URL, and must be finished before the render phase
+SPEC2_15;Event;event15;TRUE;If a portlet throws an exception in the processEvent method, all operations on the EventResponse must be ignored
+SPEC2_15;Event;event16;TRUE;If a portlet throws a permanent UnavailableException, the portlet container must remove the portlet from service immediately, call the portlet's destroy method, and release the portlet object
+SPEC2_15;Event;eventProcessAction1;TRUE;The portlet can publish an event via the setEvent method in the processAction method
+SPEC2_15;Event;eventProcessAction2;TRUE;The portlet can publish an event with its full Qname via the setEvent method in the processAction method
+SPEC2_15;Event;eventProcessAction3;TRUE;The portlet can publish an event with only the local part of the Qname via the setEvent method in the processAction method
+SPEC2_15;Event;eventProcessAction4;TRUE;If an event is published with only the local part of the Qname, the namespace must be the default namespace defined in the deployment descriptor
+SPEC2_15;Event;eventProcessAction5;TRUE;If an event is published with only the local part of the Qname and no default namespace is defined in the deployment descriptor, the value javax.xml.XMLConstants.NULL_NS_URI must be used as the Qname namespace
+SPEC2_15;Event;eventProcessAction6;TRUE;If an object is serializeable and has a valid JAXB binding or is a Java primitive type, it can be used as an event value
+SPEC2_15;Event;eventProcessAction7;TRUE;If a value is not serializeable, the setEvent method must throw an IllegalArgumentException
+SPEC2_15;Event;eventProcessAction8;TRUE;If a value does not have a valid JAXB binding and is not a Java primitve type, the setEvent method must throw an IllegalArgumentException
+SPEC2_15;Event;eventProcessAction9;TRUE;The portlet can publish multiple events via the setEvent method in the processAction method
+SPEC2_15;Event;eventProcessAction10;FALSE;The portlet can publish an event that is not described in the portlet descriptor via the setEvent method in the processAction method
+SPEC2_15;Event;eventProcessEvent1;TRUE;The portlet can publish an event via the setEvent method in the processEvent method
+SPEC2_15;Event;eventProcessEvent2;TRUE;The portlet can publish an event with its full Qname via the setEvent method in the processAction method
+SPEC2_15;Event;eventProcessEvent3;TRUE;The portlet can publish an event with only the local part of the Qname via the setEvent method in the processAction method
+SPEC2_15;Event;eventProcessEvent4;TRUE;If an event is published with only the local part of the Qname, the namespace must be the default namespace defined in the deployment descriptor
+SPEC2_15;Event;eventProcessEvent5;TRUE;If an event is published with only the local part of the Qname and no default namespace is defined in the deployment descriptor, the value javax.xml.XMLConstants.NULL_NS_URI must be used as the Qname namespace
+SPEC2_15;Event;eventProcessEvent6;TRUE;If an object is serializeable and has a valid JAXB binding or is a Java primitive type, it can be used as an event value
+SPEC2_15;Event;eventProcessEvent7;TRUE;If a value is not serializeable, the setEvent method must throw an IllegalArgumentException
+SPEC2_15;Event;eventProcessEvent8;TRUE;If a value does not have a valid JAXB binding and is not a Java primitve type, the setEvent method must throw an IllegalArgumentException
+SPEC2_15;Event;eventProcessEvent9;TRUE;The portlet can publish multiple events via the setEvent method in the processEvent method
+SPEC2_15;Event;eventProcessEvent10;FALSE;The portlet can publish an event that is not described in the portlet descriptor via the setEvent method in the processEvent method
+SPEC2_15;Event;containerEvent1;OPTION;The portlet container can (but is not required to) raise container events
+SPEC2_15;Event;containerEvent2;OPTION;A portlet can subscribe to a container event by declaring ethe event in the deployment descriptor through the <supported-processing-event> element
+SPEC2_15;Event;containerEvent3;OPTION;The predefined container event "wsrp:eventHandlingFailed" can be processed when the portal detects that errors occurred while distributing events
+SPEC2_15;Event;containerEvent4;OPTION;The predefined container event "wsrp:newNavigationalContextScope" can be processed when the portal navigational context changes
+SPEC2_15;Event;containerEvent5;OPTION;The predefined container event "wsrp:newMode" can be processed when the portlet has been put into a new portlet mode
+SPEC2_15;Event;containerEvent6;OPTION;The predefined container event "wsrp:newWindowState" can be processed when the portlet has been put into a new window state
+Addl Url Tests;;;;
+SPEC2_7;Url Render;renderURL0;TRUE;When a render URL is triggered, the processAction method must not be invoked
+SPEC2_7;Url Render;renderURL1;TRUE;When a render URL is triggered, the render method must be invoked
+SPEC2_7;Url Render;renderURL2;TRUE;When render parameters are set on a render URL, those parameters must become render parameters of the request resulting from triggering the renderURL
+SPEC2_7;Url Render;renderURL3;TRUE;When render parameters are set on a render URL, those parameters must become render parameters of the request resulting from triggering the renderURL
+SPEC2_7;Url Render;renderURL4;TRUE;Private render parameters can be set on the render URL through the setParameter(String, String) method
+SPEC2_7;Url Render;renderURL5;TRUE;Private render parameters can be set on the render URL through the setParameter(String, String[]) method
+SPEC2_7;Url Render;renderURL6;TRUE;Private render parameters can be set on the render URL through the setParameterMap(Map<String, String[]>) method
+SPEC2_7;Url Render;renderURL7;TRUE;Public render parameters can be set on the render URL through the setParameter(String, String) method
+SPEC2_7;Url Render;renderURL8;TRUE;Public render parameters can be set on the render URL through the setParameter(String, String[]) method
+SPEC2_7;Url Render;renderURL9;TRUE;Public render parameters can be set on the render URL through the setParameterMap(Map<String, String[]>) method
+SPEC2_7;Url Render;renderURL10;TRUE;If a parameter with an existing name is set through one of the setParameter methods, the existing value is repalced with the new value
+SPEC2_7;Url Render;renderURL11;TRUE;When a render URL is created, render parameters from the current request are not automatically copied to the new render URL
+SPEC2_7;Url Render;renderURL12;FALSE;The portlet-container must "x-www-form-urlencoded" encode parameter names and values added to a render URL object.
+SPEC2_7;Url Render;renderURL13;FALSE;If a portal/portlet-container encodes additional information as parameters, it must namespace them properly to avoid collisions with the parameters set and used by the portlet
+SPEC2_7;Url Action;actionURL1;TRUE;When a action URL is triggered, the processAction method must be invoked
+SPEC2_7;Url Action;actionURL2;TRUE;When action parameters are set on a action URL, those parameters must become action parameters of the request resulting from triggering the actionURL
+SPEC2_7;Url Action;actionURL3;TRUE;When action parameters are set on a action URL, those parameters must become action parameters of the request resulting from triggering the actionURL
+SPEC2_7;Url Action;actionURL4;TRUE;Action parameters can be set on the action URL through the setParameter(String, String) method
+SPEC2_7;Url Action;actionURL5;TRUE;Action parameters can be set on the action URL through the setParameter(String, String[]) method
+SPEC2_7;Url Action;actionURL6;TRUE;Action parameters can be set on the action URL through the setParameterMap(Map<String, String[]>) method
+SPEC2_7;Url Action;actionURL7;TRUE;If a parameter with an existing name is set through one of the setParameter methods, the existing value is repalced with the new value
+SPEC2_7;Url Action;actionURL8;TRUE;When an action URL is created, render parameters from the current request are not automatically copied to the new action URL
+SPEC2_7;Url Action;actionURL9;FALSE;The portlet-container must "x-www-form-urlencoded" encode parameter names and values added to a action URL object.
+SPEC2_7;Url Action;actionURL10;FALSE;If a portal/portlet-container encodes additional information as parameters, it must namespace them properly to avoid collisions with the parameters set and used by the portlet
+SPEC2_7;Url Resource;resourceURL1;TRUE;When a resource URL is triggered, the serveResource method must be invoked
+SPEC2_7;Url Resource;resourceURL2;TRUE;When resource parameters are set on a resource URL, those parameters must become resource parameters of the request resulting from triggering the resourceURL
+SPEC2_7;Url Resource;resourceURL3;TRUE;When resource parameters are set on a resource URL, those parameters must become resource parameters of the request resulting from triggering the resourceURL
+SPEC2_7;Url Resource;resourceURL4;TRUE;Resource parameters can be set on the resource URL through the setParameter(String, String) method
+SPEC2_7;Url Resource;resourceURL5;TRUE;Resource parameters can be set on the resource URL through the setParameter(String, String[]) method
+SPEC2_7;Url Resource;resourceURL6;TRUE;Resource parameters can be set on the resource URL through the setParameterMap(Map<String, String[]>) method
+SPEC2_7;Url Resource;resourceURL7;TRUE;If a parameter with an existing name is set through one of the setParameter methods, the existing value is replaced with the new value
+SPEC2_7;Url Resource;resourceURL8;TRUE;When a resource URL is created, render parameters from the current request are automatically copied to the new resource URL
+SPEC2_7;Url Resource;resourceURL9;TRUE;When a resource URL is created, the automatically copied render parameters are hidden to the ResourceURL getParameter method
+SPEC2_7;Url Resource;resourceURL10;FALSE;The portlet-container must "x-www-form-urlencoded" encode parameter names and values added to a ResourceURL object.
+SPEC2_7;Url Resource;resourceURL11;FALSE;If a portal/portlet-container encodes additional information as parameters, it must namespace them properly to avoid collisions with the parameters set and used by the portlet
+SPEC2_7;Url;portletMode1;TRUE;The portlet may not set a portlet mode that is not defined as supported in the deployment descriptor on a portlet URL
+SPEC2_7;Url;portletMode2;TRUE;The portlet may not set a portlet mode on a portlet URL that it is not allowed to use
+SPEC2_7;Url;portletMode3;FALSE;If the portlet mode is set on the URL, portlet mode must be effective for the request triggered by the URL as allowed by the portal
+SPEC2_7;Url;portletMode4;TRUE;If the portlet mode is not set, the URL must have the portlet mode set for the current request as default
+SPEC2_7;Url;windowState1;TRUE;The portlet may not set a window state that is not defined as supported in the deployment descriptor on a portlet URL
+SPEC2_7;Url;windowState2;TRUE;The portlet may not set a window state on a portlet URL that it is not allowed to use
+SPEC2_7;Url;windowState3;FALSE;If the window state is set on the URL, window state must be effective for the request triggered by the URL if allowed by the portal
+SPEC2_7;Url;windowState4;TRUE;If the window state is not set, the URL must have the window state set for the current request as default
+SPEC2_7;Url;setSecure1;TRUE;If setSecure is called with the parameter set to TRUE, the transport for the request triggered by the URL must be secure
+SPEC2_7;Url;setSecure2;FALSE;If setSecure is called with the parameter set to FALSE, the transport for the request triggered by the URL may not be secure
+SPEC2_7;Url;setSecure3;TRUE;If setSecure is not called, the transport for the request triggered by the URL should be at the same security level as the current request
+SPEC2_7;Url Listener;portletURLGenerationListener1;APITEST;A PortletURLGenerationListener may be configured in the deployment descriptor
+SPEC2_7;Url Listener;portletURLGenerationListener2;APITEST;The method filterActionURL method for all action URLs before executing the write or toString method of these action URLs
+SPEC2_7;Url Listener;portletURLGenerationListener3;APITEST;The method filterRenderURL method for all render URLs before executing the write or toString method of these render URLs
+SPEC2_7;Url Listener;portletURLGenerationListener4;APITEST;The method filterResourceURL method for all resource URLs before executing the write or toString method of these resource URLs
+SPEC2_7;Url Listener;portletURLGenerationListener5;APITEST;The portlet container must provide the PortletURL or ResourceURL to generate to the filter methods and execute the write or toString method on the updated PortletURL or ResourceURL that is the outcome of the filter method call
+SPEC2_7;Url Listener;portletURLGenerationListener6;TRUE;If more than one listener is registered the portlet container must chain the listeners in the order of how they appear in the deployment descriptor
+Addl Environment Tests;;;;
+SPEC2_10;Context;portletContextScope1;FALSE;There is one instance of the PortletContext interface associated with each portlet application deployed into a portlet container
+SPEC2_10;Context;portletContextScope2;FALSE;In cases where the container is distributed over many virtual machines, a portlet application will have an instance of the PortletContext interface for each VM
+SPEC2_10;Context;portletContextServletContext1;TRUE;The initialization parameters accessible through the PortletContext must be the same that are accessible through the ServletContext of the portlet application
+SPEC2_10;Context;portletContextServletContext2;TRUE;The context initialization parameters are set in the web.xml file
+SPEC2_10;Context;portletContextServletContext3;TRUE;The PortletContext must offer access to the same set of resources the ServletContext exposes
+SPEC2_10;Context;portletContextServletContext4;TRUE;The temporary working directory must be accessible as a context attribute through the PortletContext using the attribute name "javax.servlet.context.tempdir"
+SPEC2_10;Context;portletContextServletContext6;FALSE;The portlet context must follow the same behavior and functionality that the servlet context has for virtual hosting and reloading considerations
+SPEC2_10;Context;portletContextServletContext7;TRUE;The PortletContext getAttribute method provides the same functionality as the ServletContext getAttribute method
+SPEC2_10;Context;portletContextServletContext8;TRUE;The PortletContext getAttributeNames method provides the same functionality as the ServletContext getAttributeNames method
+SPEC2_10;Context;portletContextServletContext9;TRUE;The PortletContext getInitParameter method provides the same functionality as the ServletContext getInitParameter method
+SPEC2_10;Context;portletContextServletContext10;TRUE;The PortletContext getInitParameterNames method provides the same functionality as the ServletContext getInitParameterNames method
+SPEC2_10;Context;portletContextServletContext11;TRUE;The PortletContext getMimeType method provides the same functionality as the ServletContext getMimeType method
+SPEC2_10;Context;portletContextServletContext12;TRUE;The PortletContext getRealPath method provides the same functionality as the ServletContext getRealPath method
+SPEC2_10;Context;portletContextServletContext13;TRUE;The PortletContext getResource method provides the same functionality as the ServletContext getResource method
+SPEC2_10;Context;portletContextServletContext14;TRUE;The PortletContext getResourcePaths method provides the same functionality as the ServletContext getResourcePaths method
+SPEC2_10;Context;portletContextServletContext15;TRUE;The PortletContext getResourceAsStream method provides the same functionality as the ServletContext getResourceAsStream method
+SPEC2_10;Context;portletContextServletContext16;TRUE;The PortletContext log method provides the same functionality as the ServletContext log method
+SPEC2_10;Context;portletContextServletContext17;TRUE;The PortletContext removeAttribute method provides the same functionality as the ServletContext removeAttribute method
+SPEC2_10;Context;portletContextServletContext18;TRUE;The PortletContext setAttribute method provides the same functionality as the ServletContext setAttribute method
+SPEC2_10;Context Options;containerRuntimeOptions1;TRUE;The getContainerRuntimeOptions method returns an enumeration of type String containing the keys of all container runtime options that the current portlet container supports.
+SPEC2_10;Context Options;escapeXML1;OPTION;The container runtime option "javax.portlet.escapeXml" can be (but is not required to be) supported by the portlet container
+SPEC2_10;Context Options;escapeXML2;OPTION;If the escapeXML option is supported and set to TRUE, URLs written to the output stream by the tag library will be URL escaped
+SPEC2_10;Context Options;escapeXML3;OPTION;If the escapeXML option is supported and set to FALSE, URLs written to the output stream by the tag library will not be URL escaped
+SPEC2_10;Context Options;renderHeaders1;OPTION;The container runtime option "javax.portlet.renderHeaders" can be (but is not required to be) supported by the portlet container
+SPEC2_10;Context Options;renderHeaders2;OPTION;If the renderHeaders option is supported and set to TRUE, the render method should be called once with the RENDER_PART attribute set to "RENDER_HEADERS"
+SPEC2_10;Context Options;renderHeaders3;OPTION;If the renderHeaders option is supported and set to TRUE, the render method should be called a second time with the RENDER_PART attribute set to "RENDER_MARKUP"
+SPEC2_10;Context Options;renderHeaders4;OPTION;If the renderHeaders option is supported and set to FALSE, the render method should be called once with the RENDER_PART attribute not set
+SPEC2_10;Context Options;servletDefaultSessionScope1;OPTION;The container runtime option "javax.portlet.servletDefaultSessionScope" can be (but is not required to be) supported by the portlet container
+SPEC2_10;Context Options;servletDefaultSessionScope2;OPTION;If the servletDefaultSessionScope option is supported and set to PORTLET_SCOPE, the session variable of included / forwarded servlets or JSPs maps to the portlet session scope
+SPEC2_10;Context Options;servletDefaultSessionScope3;OPTION;If the servletDefaultSessionScope option is supported and set to APPLICATION_SCOPE, the session variable of included / forwarded servlets or JSPs maps to the application session scope
+SPEC2_10;Context Options;servletDefaultSessionScope4;OPTION;If the servletDefaultSessionScope option is supported and not explicitly set, the session variable of included / forwarded servlets or JSPs maps to the application session scope
+SPEC2_10;Context Options;actionScopedRequestAttributes1;TRUE;The container runtime option "javax.portlet.actionScopedRequestAttributes" must be supported by the portlet container
+SPEC2_10;Context Options;actionScopedRequestAttributes2;TRUE;If the actionScopedRequestAttributes option is set to TRUE, request attributes that are set in an action persist until a new action occurs
+SPEC2_10;Context Options;actionScopedRequestAttributes3;TRUE;If the option is set to TRUE and an attribute is set during an action request, the portlet container sets a render parameter with the name PortletRequest.ACTION_SCOPE_ID ("javax.portlet.as")
+SPEC2_10;Context Options;actionScopedRequestAttributes4;TRUE;If the option is set to TRUE and an attribute is set during an action request, the attribute can be accessed in an event request that was initiated by the same action request
+SPEC2_10;Context Options;actionScopedRequestAttributes5;TRUE;If the option is set to TRUE and an attribute is set during an action request, the attribute can be accessed in a subsequent render request
+SPEC2_10;Context Options;actionScopedRequestAttributes6;TRUE;If the option is set to TRUE, a request attribute set during an event request is persisted in the same manner as an attribute set during action processing
+SPEC2_10;Context Options;actionScopedRequestAttributes7;TRUE;If the option is set to TRUE, receiving an action starts a new action scope with a new scope ID, all previous attributes are no longer accessible, new attributes can be stored
+SPEC2_10;Context Options;actionScopedRequestAttributes8;TRUE;If the option is set to TRUE, receiving a render without an existing scope ID starts a new action scope with a new scope ID, all previous attributes are no longer accessible, new attributes can be stored
+SPEC2_10;Context Options;actionScopedRequestAttributes9;TRUE;If the option is set to TRUE, receiving an event without an existing scope ID starts a new action scope with a new scope ID, all previous attributes are no longer accessible, new attributes can be stored
+SPEC2_10;Context Options;actionScopedRequestAttributes0;TRUE;If the option is set to TRUE, receiving an event with an existing scope ID after the first render for this scope had occurred starts a new action scope with a new scope ID, all previous attributes are no longer accessible, new attributes can be stored
+SPEC2_10;Context Options;actionScopedRequestAttributes11;TRUE;The render parameter PortletRequest.ACTION_SCOPE_ID ("javax.portlet.as") can be removed from a URL in a PortletURLGenerationListener
+SPEC2_10;Context Options;actionScopedRequestAttributes12;TRUE;The render parameter PortletRequest.ACTION_SCOPE_ID ("javax.portlet.as") can be removed from a ResourceURL in a PortletURLGenerationListener
+SPEC2_10;Context Options;actionScopedRequestAttributes13;TRUE;If the actionScopedRequestAttributes option is set to FALSE, request attributes that are set in an action are released at the end of the request
+SPEC2_10;Context Options;actionScopedRequestAttributes14;FALSE;The actionScopedRequestAttributes option can take two additional values - a string which must be "numberOfCachedScopes" followed by an integer <number of cached scopes>
+SPEC2_17;Preferences;values1;APITEST;The method getValue returns the String value of the specified portlet preference
+SPEC2_17;Preferences;values2;APITEST;If the preference specified in the getValue method has multiple values, the first value in the value array is returned
+SPEC2_17;Preferences;values3;APITEST;The method getValues returns the String[] value of the specified portlet preference
+SPEC2_17;Preferences;values4;APITEST;The method getNames returns an Enumeration<String> containing the names of the preferences
+SPEC2_17;Preferences;values5;APITEST;The method getMap returns a Map<String, String[]> of the preferences and their values
+SPEC2_17;Preferences;values6;TRUE;Changing the Map returned by getMap does not change the underlying preferences
+SPEC2_17;Preferences;values7;TRUE;When the lifecycle method render is invoked, the PortletPreferences object must reflect the current state of the persistent store
+SPEC2_17;Preferences;values8;TRUE;When the lifecycle method processAction is invoked, the PortletPreferences object must reflect the current state of the persistent store
+SPEC2_17;Preferences;values9;TRUE;When the lifecycle method processEvent is invoked, the PortletPreferences object must reflect the current state of the persistent store
+SPEC2_17;Preferences;values10;TRUE;When the lifecycle method serveResource is invoked, the PortletPreferences object must reflect the current state of the persistent store
+SPEC2_17;Preferences;setValue1;APITEST;The setValue method sets the value of the preference
+SPEC2_17;Preferences;setValue2;APITEST;The setValue method overwrites any existing single value or multiple value array
+SPEC2_17;Preferences;setValue3;APITEST;The setValue method allows the preference to be set to the value of null
+SPEC2_17;Preferences;setValue4;APITEST;If the setValue method is called for a read-only attribute, a ReadOnlyException must be thrown
+SPEC2_17;Preferences;setValues1;APITEST;The setValues method sets a multiple value array for the preference
+SPEC2_17;Preferences;setValues2;APITEST;The setValues method overwrites any existing single value or multiple value array
+SPEC2_17;Preferences;setValues3;APITEST;The setValues method allows any preference attribute in the value array to be set to  null
+SPEC2_17;Preferences;setValues4;TRUE;The setValues method allows the value array to be set to  null
+SPEC2_17;Preferences;setValues5;APITEST;If the setValues method is called for a read-only attribute, a ReadOnlyException must be thrown
+SPEC2_17;Preferences;reset1;TRUE;The reset method sets the value of the specified preference to its default value. The actual default value itself is implementation-specific and cannot be tested.
+SPEC2_17;Preferences;reset2;TRUE;The reset method deletes the preference if there is no default value
+SPEC2_17;Preferences;reset3;APITEST;If the reset method is called for a read-only attribute, a ReadOnlyException must be thrown
+SPEC2_17;Preferences;store1;TRUE;The store method persists preference changes previously made during the processAction method
+SPEC2_17;Preferences;store2;TRUE;The store method persists preference changes previously made during the processEvent method
+SPEC2_17;Preferences;store3;TRUE;The store method persists preference changes previously made during the serveResource method
+SPEC2_17;Preferences;store4;TRUE;If preference changes are made during the processAction method, but the method completes without store being called, the preference changes are discarded
+SPEC2_17;Preferences;store5;TRUE;If preference changes are made during the processEvent method, but the method completes without store being called, the preference changes are discarded
+SPEC2_17;Preferences;store6;TRUE;If preference changes are made during the serveResource method, but the method completes without store being called, the preference changes are discarded
+SPEC2_17;Preferences;store7;APITEST;If the store method is invoked within the scope of a render method invocation, it must throw an IllegalStateException
+SPEC2_17;Preferences;deployment1;TRUE;The portlet definition may define the preference attributes a portlet uses
+SPEC2_17;Preferences;deployment2;TRUE;A preference attribute definition may include initial default values
+SPEC2_17;Preferences;deployment3;TRUE;A preference attribute definition may indicate if the attribute is read only
+SPEC2_17;Preferences;deployment4;TRUE;If a preference attribute definition does not contain the read-only setting, it will be modifiable in the processAction method
+SPEC2_17;Preferences;deployment5;TRUE;If a preference attribute definition does not contain the read-only setting, it will be modifiable in the processEvent method
+SPEC2_17;Preferences;deployment6;TRUE;If a preference attribute definition does not contain the read-only setting, it will be modifiable in the serveResource method
+SPEC2_17;Preferences;deployment7;TRUE;If a preference attribute definition contains the read-only setting, it will not be modifiable in the processAction method
+SPEC2_17;Preferences;deployment8;TRUE;If a preference attribute definition contains the read-only setting, it will not be modifiable in the processEvent method
+SPEC2_17;Preferences;deployment9;TRUE;If a preference attribute definition contains the read-only setting, it will not be modifiable in the serveResource method
+SPEC2_17;Preferences;deployment10;TRUE;A preference attribute not defined in the deployment descriptor may be added programmatically in the processAction method
+SPEC2_17;Preferences;deployment11;TRUE;A preference attribute not defined in the deployment descriptor may be added programmatically in the processEvent method
+SPEC2_17;Preferences;deployment12;TRUE;A preference attribute not defined in the deployment descriptor may be added programmatically in the serveResource method
+SPEC2_17;Preferences;validator1;APITEST;A PreferencesValidator may be configured in the deployment descriptor
+SPEC2_17;Preferences;validator2;APITEST;The PreferencesValidator validate method is invoked during processing of the PortletPreferences.store method
+SPEC2_17;Preferences;validator3;APITEST;The validate method is provided with the PortletPreferences object to be validated
+SPEC2_17;Preferences;validator4;APITEST;If the validate method throws a ValidatorException, the preferences must not be written to persistent storage
+SPEC2_17;Preferences;validator5;APITEST;If the validate method throws a ValidatorException, the exception must be propagated to the portlet
+SPEC2_17;Preferences;validator6;APITEST;If the validate method does not throw a ValidatorException, the store operation must be completed
+SPEC2_18;Sessions;scope1;TRUE;PortletSession objects must be scoped at the portlet application context level
+SPEC2_18;Sessions;scope2;TRUE;The portlet container must not share the PortletSession object or the attributes stored in it among different portlet applications or among different user sessions
+SPEC2_18;Sessions;scope3;TRUE;Any object stored in the session using the APPLICATION_SCOPE is available to any portlet that belongs to the same portlet application and that handles a request in the same session
+SPEC2_18;Sessions;scope4;TRUE;Any Object stored in the session using the PORTLET_SCOPE must be available to the portlet during requests for the same portlet window that stored the object
+SPEC2_18;Sessions;scope5;TRUE;The PORTLET_SCOPE object must be stored in the APPLICATION_SCOPE with the attribute name 'javax.portlet.p.<ID>?<ATTRIBUTE_NAME>', where <ID> must be equal to the ID returned by the PortletRequest.getWindowID()
+SPEC2_18;Sessions;setAttribute1;TRUE;The setAttribute method can bind an object to the session in PORTLET_SCOPE
+SPEC2_18;Sessions;setAttribute2;TRUE;The setAttribute method that does not take a scope parameter binds an object to the session in PORTLET_SCOPE
+SPEC2_18;Sessions;setAttribute3;TRUE;The setAttribute method can bind an object to the session in APPLICATION_SCOPE
+SPEC2_18;Sessions;getAttribute1;TRUE;The getAttribute method is used to retrieve attributes stored in the session in PORTLET_SCOPE
+SPEC2_18;Sessions;getAttribute2;TRUE;The getAttribute method that does not take a scope parameter retrieves attributes stored in the session in PORTLET_SCOPE
+SPEC2_18;Sessions;getAttribute3;TRUE;The getAttribute method is used to retrieve attributes stored in the session in APPLICATION_SCOPE
+SPEC2_18;Sessions;removeAttribute1;TRUE;The removeAttribute method is used to remove attributes stored in the session in PORTLET_SCOPE
+SPEC2_18;Sessions;removeAttribute2;TRUE;The removeAttribute method that does not take a scope parameter remove attributes stored in the session in PORTLET_SCOPE
+SPEC2_18;Sessions;removeAttribute3;TRUE;The removeAttribute method is used to remove attributes stored in the session in APPLICATION_SCOPE
+SPEC2_18;Sessions;getAttributeNames1;TRUE;The getAttributeNames method can retrieve an Enumeration<String> of all attribute names stored in the session in PORTLET_SCOPE
+SPEC2_18;Sessions;getAttributeNames2;TRUE;The getAttributeNames method that does not take a scope parameter retrieves an Enumeration<String> of all attribute names stored in the session in PORTLET_SCOPE
+SPEC2_18;Sessions;getAttributeNames3;TRUE;The getAttributeNames method can retrieve an Enumeration<String> of all attribute names stored in the session in APPLICATION_SCOPE
+SPEC2_18;Sessions;decodeAttributeName1;TRUE;The PortletSessionUtil.decodeAttributeName method returns the attribute name without the prefix for an attribute name retrieved from the HTTPSession
+SPEC2_18;Sessions;decodeAttributeName2;TRUE;The PortletSessionUtil.decodeAttributeName method returns the attribute name without the prefix for an attribute name retrieved from the PortletSession in APPLICATION_SCOPE
+SPEC2_18;Sessions;httpSession1;TRUE;Data stored in the HttpSession by a servlet in the same web application is accessible to portlets through the PortletSession in APPLICATION_SCOPE
+SPEC2_18;Sessions;httpSession2;TRUE;Data stored in the HttpSession by a JSP in the same web application is accessible to portlets through the PortletSession in APPLICATION_SCOPE
+SPEC2_18;Sessions;httpSession3;TRUE;Data stored by portlets in the PortletSession is accessible to servlets and JSPs through the HttpSession
+SPEC2_18;Sessions;httpSession4;TRUE;If the HttpSession object is invalidated, the PortletSession object must also be invalidated by the portlet container
+SPEC2_18;Sessions;httpSession5;TRUE;If the PortletSession object is invalidated by a portlet, the portlet container must invalidate the associated HttpSession object
+SPEC2_18;Sessions;httpSession6;TRUE;The attribute names retrieved from the HTTPSession must be the same as those retrieve from the PortletSession if APPLICATION_SCOPE scope is used
+SPEC2_18;Sessions;httpSession7;TRUE;The attribute names retrieved from the HTTPSession must have the speficied prefixing if PORTLET_SCOPE scope is used
+SPEC2_18;Sessions;httpSession8;TRUE;The portlet session follows the timeout behavior of the servlet session
+SPEC2_18;Sessions;httpSession9;TRUE;The portlet session follows the last accessed times behavior of the servlet session
+SPEC2_18;Sessions;httpSession11;TRUE;The portlet session follows the same semantic considerations as the servlet session
+SPEC2_18;Sessions;httpSession12;TRUE;The PortletSession getCreationTime method provides the same functionality as the corresponding HTTPSession method
+SPEC2_18;Sessions;httpSession13;TRUE;The PortletSession getId method provides the same functionality as the corresponding HTTPSession method
+SPEC2_18;Sessions;httpSession14;TRUE;The PortletSession getLastAccessTime method provides the same functionality as the corresponding HTTPSession method
+SPEC2_18;Sessions;httpSession15;TRUE;The PortletSession getMaxInctiveInterval method provides the same functionality as the corresponding HTTPSession method
+SPEC2_18;Sessions;httpSession16;TRUE;The PortletSession invalidate method provides the same functionality as the corresponding HTTPSession method
+SPEC2_18;Sessions;httpSession17;TRUE;The PortletSession isNew method provides the same functionality as the corresponding HTTPSession method
+SPEC2_18;Sessions;httpSession18;TRUE;The PortletSession setMaxInactiveInterval method provides the same functionality as the corresponding HTTPSession method
+SPEC2_21;User Attributes;userAttributes1;OPTION;User attributes can be defined in the deployment descriptor
+SPEC2_21;User Attributes;userAttributes2;OPTION;The request attribute with the name PortletRequest.USER_INFO "javax.portlet.userinfo" provides a Map<String, String> containing user attributes that were successfully mapped to user attributes supported by the portal
+SPEC2_21;User Attributes;userAttributes3;OPTION;If there are no user attributes available, the getAttribute(PortletRequest.USER_INFO) call must return an empty Map object
+SPEC2_24;Security;security1;OPTION;The <security-role-ref> element in the portlet deployment descriptor maps a role name to an application security role that the user may be mapped into
+SPEC2_24;Security;security2;OPTION;The PortletRequest.isUserInRole method uses the role name from this mapping to determine the return value
+SPEC2_24;Security;security3;OPTION;If the security-role-ref element does not define a role-link element, the container must default to checking the role-name element argument against the list of security-role elements defined in the web.xml deployment descriptor of the portlet application
+SPEC2_24;Security;security4;OPTION;Security constraints can be defined through the portlet application deployment descriptor <security-constraint> element
+SPEC2_24;Security;security5;OPTION;The <portlet-collection> element within the security constraint declaration defines a list of portlets covered by the constraint
+SPEC2_24;Security;security6;OPTION;The <user-data-constraint> element within the security constraint declaration defines requirements for the transport layer for the portlets collection
+SPEC2_24;Security;security7;OPTION;The container must at least use SSL to respond to requests to portlets whose  <transport-guarantee> element specifies CONFIDENTIAL
+SPEC2_24;Security;security8;OPTION;The container must at least use SSL to respond to requests to portlets whose  <transport-guarantee> element specifies INTEGRAL
+SPEC2_24;Security;security9;OPTION;When a run-as element is specified in the web.xml file, the portlet container must propagate the security identity of the caller to the EJB layer in terms of the security role name defined in the run-as element
+SPEC2_24;Security;security10;OPTION;The security role name must be one of the security role names defined for the web.xml deployment descriptor
+Addl Request Tests;;;;
+SPEC2_11;Request Params Props;properties1;APITEST;The portlet can use the getProperty method to access single portal property and optionally-available HTTP header values
+SPEC2_11;Request Params Props;properties2;APITEST;The portlet can use the getProperties method to access multiple portal property and optionally-available HTTP header values by the same property name
+SPEC2_11;Request Params Props;properties3;APITEST;The portlet can use the getPropertyNames method to obtain an Enumeration of all available property names
+SPEC2_11;Request Params Props;properties4;APITEST;The portlet can access cookies provided by the current request using the getCookies method
+SPEC2_11;Request Params Props;parameters1;TRUE;If a portlet receives a request from a client request targeted to the portlet itself, the parameters must be the string parameters encoded in the URL (added when creating the PortletURL) and the string parameters sent by the client to the portlet as part of the client request
+SPEC2_11;Request Params Props;parameters2;TRUE;The parameters the request object returns must be "x-www-form-urlencoded" decoded
+SPEC2_11;Request Params Props;parameters3;APITEST;The getParameterValues method returns an array of String objects containing all the parameter values associated with a parameter name
+SPEC2_11;Request Params Props;parameters4;APITEST;The value returned from the getParameter method must be the first value in the array of String objects returned by getParameterValues
+SPEC2_11;Request Params Props;parameters6;TRUE;The getParameterMap method must return an unmodifiable Map object
+SPEC2_11;Request Params Props;parameters7;APITEST;If the request does not have any parameters, the getParameterMap must return an empty Map object
+SPEC2_11;Request Params Props;parameters8;TRUE;If the portlet is performing an HTML Form submission via HTTP method POST the post form data will be populated to the portlet request parameter set if the content type is application/x-www-form-urlencoded
+SPEC2_11;Request Params Props;parameters9;TRUE;If the portlet is performing an HTML Form submission via the HTTP method GET the form data set is appended to the portlet URL used for the form submission and are therefore accessible as request parameters for the portlet
+SPEC2_11;Request Params Props;parameters10;TRUE;The portlet-container must not propagate parameters received in an action or event request to subsequent render requests of the portlet
+SPEC2_11;Request Params Props;parameters11;TRUE;If a portlet receives a render request that is the result of a client request targeted to another portlet in the portal page, the parameters should be the same parameters as of the previous render request from this client
+SPEC2_11;Request Params Props;parameters12;TRUE;If a portlet receives an event that is the result of a client request targeted to another portlet in the portal page, the parameters should be the same parameters as of the previous render request from this client
+SPEC2_11;Request Params Props;parameters13;TRUE;If a portlet receives a render request that is the result of invoking a render URL targeting this portlet the render parameters received with the render request must be the parameters set on the render URL
+SPEC2_11;Request Params Props;parameters14;FALSE;Client requests triggered by portal-generated URLs for changing portlet mode or window state must be treated as render URLs and the existing render parameters must be preserved
+SPEC2_11;Request Params Props;parameters15;TRUE;Render parameters get automatically cleared if the portlet receives a processAction or processEvent call
+SPEC2_11;Request Params Props;parameters16;APITEST;For serveResource requests the portlet must receive any resource parameters that were explicitly set on the ResourceURL that triggered the request
+SPEC2_11;Request Params Props;parameters17;TRUE;If the cacheability level of the resource URL is PORTLET or PAGE, the portlet must also receive the render parameters present in the request in which the URL was created
+SPEC2_11;Request PRP;publicRenderParameters1;TRUE;Public render parameters can be declared in the deployment descriptor using the public-render-parameter element
+SPEC2_11;Request PRP;publicRenderParameters2;TRUE;The portlet can specify the public render parameters it would like to share via the supported-public-render-parameter element in the deployment descriptor
+SPEC2_11;Request PRP;publicRenderParameters3;FALSE;The supported-public-render-parameter element must reference the identifier of a public render parameter defined in the portlet application section in a public-render-parameter element
+SPEC2_11;Request PRP;publicRenderParameters4;TRUE;Public render parameters are available in the processAction method
+SPEC2_11;Request PRP;publicRenderParameters5;TRUE;Public render parameters are available in the processEvent method
+SPEC2_11;Request PRP;publicRenderParameters6;TRUE;Public render parameters are available in the render method
+SPEC2_11;Request PRP;publicRenderParameters7;TRUE;Public render parameters are available in the serveResource method
+SPEC2_11;Request PRP;publicRenderParameters8;TRUE;The portlet container must only send those public render parameters to a portlet which the portlet has defined support for using supported-public-render-parameter element in the portlet.xml
+SPEC2_11;Request PRP;publicRenderParameters9;TRUE;The portlet container must only share those render parameters of a portlet which the portlet has declared as supported public render parameters using supported-public-render-parameter element in the portlet.xml
+SPEC2_11;Request PRP;publicRenderParameters10;TRUE;If the portlet was the target of a render URL on which a specific public render parameter is set, the portlet must receive at least this render parameter
+SPEC2_11;Request PRP;publicRenderParameters11;TRUE;If the portlet sets an action parameter with the same name as a public render parameter, this results in a multi-valued parameter. The public render parameter values must be the last entries in the parameter value array
+SPEC2_11;Request PRP;publicRenderParameters12;TRUE;If the portlet sets a resource parameter with the same name as a public render parameter, this results in a multi-valued parameter. The public render parameter values must be the last entries in the parameter value array
+SPEC2_11;Request PRP;publicRenderParameters13;TRUE;A public render parameter can be deleted using the removePublicRenderParameter method on the StateAwareResponse or the PortletURL
+SPEC2_11;Request PRP;publicRenderParameters14;APITEST;Portlets can access a merged set of public and private parameters via the getParameter methods
+SPEC2_11;Request PRP;publicRenderParameters15;TRUE;A map of private parameters can be obtained through the getPrivateParameterMap method
+SPEC2_11;Request PRP;publicRenderParameters16;TRUE;A map of public parameters can be obtained through the getPublicParameterMap method
+SPEC2_11;Request PRP;publicRenderParameters17;FALSE;Extra request parameters added to a portlet URL by the portal/portlet-container must be invisible to the portlets receiving the request
+SPEC2_11;Request;attributes1;TRUE;The portlet can access a map with user information attributes via the request attribute PortletRequest.USER_INFO
+SPEC2_11;Request;attributes2;TRUE;The PortletRequest.CCPP_PROFILE request attribute must return a javax.ccpp.Profile based on the current portlet request
+SPEC2_11;Request;attributes3;TRUE;If the portlet container runtime option javax.portlet.renderHeaders is set to TRUE, the RENDER_PART attribute will be set when the render method is called
+SPEC2_11;Request;attributes4;TRUE;If the portlet container runtime option javax.portlet.renderHeaders is set to TRUE, render method will be called first with the RENDER_PART attribute set to "RENDER_HEADERS"
+SPEC2_11;Request;attributes5;TRUE;If the portlet container runtime option javax.portlet.renderHeaders is set to TRUE, render method will be called a second time with the RENDER_PART attribute set to "RENDER_MARKUP"
+SPEC2_11;Request;attributes6;TRUE;During action processing, the LIFECYCLE_PHASE ("javax.portlet.lifecycle_phase") attribute will contain the string "ACTION_PHASE"
+SPEC2_11;Request;attributes7;TRUE;During event processing, the LIFECYCLE_PHASE ("javax.portlet.lifecycle_phase") attribute will contain the string "EVENT_PHASE"
+SPEC2_11;Request;attributes8;TRUE;During render processing, the LIFECYCLE_PHASE ("javax.portlet.lifecycle_phase") attribute will contain the string "RENDER_PHASE"
+SPEC2_11;Request;attributes9;TRUE;During resource processing, the LIFECYCLE_PHASE ("javax.portlet.lifecycle_phase") attribute will contain the string "RESOURCE_PHASE"
+SPEC2_11;Request;contextPath1;FALSE;If the portlet application is rooted at the default context, the context path must be an empty string
+SPEC2_11;Request;contextPath2;FALSE;If the portlet application is not rooted at the default context, the context path must be a string starting with "/"
+SPEC2_11;Request;contextPath3;FALSE;If the portlet application is not rooted at the default context, the context path string does not end with "/"
+SPEC2_11;Request;security1;APITEST;The getAuthType method returns a String if the user is authenticated
+SPEC2_11;Request;security2;APITEST;The getAuthType method returns null if the user is not authenticated
+SPEC2_11;Request;security3;APITEST;The getRemoteUser method returns a String if the user is authenticated
+SPEC2_11;Request;security4;APITEST;The getRemoteUser method returns null if the user is not authenticated
+SPEC2_11;Request;security5;APITEST;The getisUserInRole method returns true if the authenticated user is in the specified role
+SPEC2_11;Request;security6;APITEST;The getisUserInRole method returns false if the authenticated user is not in the specified role
+SPEC2_11;Request;security7;APITEST;The getisUserInRole method returns false if the user is not authenticated
+SPEC2_11;Request;security8;APITEST;The isSecure method returns true if the request was transmitted over a secure connection
+SPEC2_11;Request;security9;APITEST;The isSecure method returns false if the request was not transmitted over a secure connection
+SPEC2_11;Request;contentType1;TRUE;The getResponseContentType method returns a String representing the default content type the portlet container assumes for the output
+SPEC2_11;Request;contentType2;TRUE;The getResponseContentTypes method returns an Enumeration of String elements representing the acceptable content types for the output in order of preference
+SPEC2_11;Request;contentType3;TRUE;The first element of the Enumeration returned by the getResponseContentTypes method must equal the value returned by the getResponseContentType method
+SPEC2_11;Request;contentType4;TRUE;If a portlet defines support for all content types using a wildcard and the portlet container supports all content types, the getResponseContentType may return the wildcard
+SPEC2_11;Request;contentType5;TRUE;If a portlet defines support for all content types using a wildcard and the portlet container supports all content types, the getResponseContentType may return the preferred content type
+SPEC2_11;Request;contentType6;TRUE;Within the processAction method, the content type must include only the MIME type, not the character set
+SPEC2_11;Request;contentType7;TRUE;Within the processAction method, the getResponseContentTypes method must return only the content types supported by the current portlet mode
+SPEC2_11;Request;contentType8;TRUE;Within the processEvent method, the content type must include only the MIME type, not the character set
+SPEC2_11;Request;contentType9;TRUE;Within the processEvent method, the getResponseContentTypes method must return only the content types supported by the current portlet mode
+SPEC2_11;Request;contentType10;TRUE;Within the render method, the content type must include only the MIME type, not the character set
+SPEC2_11;Request;contentType11;TRUE;Within the render method, the getResponseContentTypes method must return only the content types supported by the current portlet mode
+SPEC2_11;Request;contentType12;TRUE;Within the serveResource method, the content type should be based on the HTTP Accept header provided by the client
+SPEC2_11;Request;contentType13;TRUE;The character set of the response can be retrieved via the RenderResponse.getCharacterEncoding method
+SPEC2_11;Request;windowId1;APITEST;The getWindowID method returns a String representing the current window ID
+SPEC2_11;Request;windowId2;FALSE;The string returned by getWindowID method is unique for this portlet window
+SPEC2_11;Request;windowId3;FALSE;The string returned by getWindowID method is constant over the lifetime of the portlet window
+SPEC2_11;Request;windowId4;TRUE;The string returned by getWindowID method must be the same ID used for scoping portlet-scope session attributes
+SPEC2_11;Request;retrievingData1;APITEST;If the getPortletInputStream method has been used and the getReader is called, the getReader method must throw an IllegalStateException
+SPEC2_11;Request;retrievingData2;APITEST;If the getReader method has been used and the getPortletInputStream is called, the getPortletInputStream method must throw an IllegalStateException
+SPEC2_11;Request;retrievingData3;APITEST;f the user request HTTP POST data is of type application/x-www-form-urlencoded, the getReader method must throw an IllegalStateException
+SPEC2_11;Request;retrievingData4;APITEST;f the user request HTTP POST data is of type application/x-www-form-urlencoded, the getPortletInputStream method must throw an IllegalStateException
+Addl Response Tests;;;;
+SPEC2_12;Response Properties;properties1;APITEST;The setProperty method sets a property with a given name and value
+SPEC2_12;Response Properties;properties2;APITEST;The setProperty method replaces an existing property of the same name
+SPEC2_12;Response Properties;properties3;FALSE;The setProperty method can set HTTP header values to be transported back to the client
+SPEC2_12;Response Properties;properties4;FALSE;If the setProperty method is called after the response has been committed, the property will not be transported back to the client
+SPEC2_12;Response Properties;properties5;APITEST;The addProperty method adds a property with a given name and value
+SPEC2_12;Response Properties;properties6;APITEST;The addProperty method adds a value to an existing property of the same name
+SPEC2_12;Response Properties;properties7;FALSE;The addProperty method can add HTTP header values to be transported back to the client
+SPEC2_12;Response Properties;properties8;FALSE;If the addProperty method is called after the response has been committed, the property will not be transported back to the client
+SPEC2_12;Response Properties;namespace1;APITEST;The getNamespace method must return a String
+SPEC2_12;Response Properties;namespace2;TRUE;The String returned by the getNamespace method must be unique on the portal page
+SPEC2_12;Response Properties;namespace3;APITEST;The String returned by the getNamespace method must be constant for the lifetime of the portlet window
+SPEC2_12;Response Properties;namespace4;TRUE;The String returned by the getNamespace method must be a valid Java identifier
+SPEC2_12;Response Properties;cookie1;TRUE;Cookies set during the Action phase should be available to the portlet during the Render phase
+SPEC2_12;Response Properties;cookie2;TRUE;Cookies set during the Action phase should be available to the portlet during the Resource phase
+SPEC2_12;Response Properties;cookie3;TRUE;Cookies set during the Action phase should be available to the portlet during the Event phase
+SPEC2_12;Response Properties;cookie4;TRUE;Cookies set during the Action phase should be available to the portlet during a subsequent request triggered by a URL
+SPEC2_12;Response Properties;cookie5;TRUE;Cookies set during the Event phase should be available to the portlet during the Render phase
+SPEC2_12;Response Properties;cookie6;TRUE;Cookies set during the Event phase should be available to the portlet during the Resource phase
+SPEC2_12;Response Properties;cookie7;TRUE;Cookies set during the Event phase should be available to the portlet during a subsequent request triggered by a URL
+SPEC2_12;Response Properties;cookie8;TRUE;Cookies set during the Render phase should be available to the portlet during the Resource phase
+SPEC2_12;Response Properties;cookie9;TRUE;Cookies set during the Render phase should be available to the portlet during a subsequent Action phase
+SPEC2_12;Response Properties;cookie10;TRUE;Cookies set during the Render phase should be available to the portlet during a subsequent Render phase
+SPEC2_12;Response Properties;cookie11;TRUE;Cookies set during the Render phase should be available to the portlet during a subsequent request triggered by a URL
+SPEC2_12;Response Properties;cookie12;TRUE;Cookies set during the Render phase after the response has been committed are ignored
+SPEC2_12;Response Properties;cookie13;TRUE;Cookies set during the Resource phase should be available to the portlet during a subsequent Action phase
+SPEC2_12;Response Properties;cookie14;TRUE;Cookies set during the Resource phase should be available to the portlet during a subsequent Resource phase
+SPEC2_12;Response Properties;cookie15;TRUE;Cookies set during the Resource phase should be available to the portlet during a subsequent Render phase
+SPEC2_12;Response Properties;cookie16;TRUE;Cookies set during the Resource phase should be available to the portlet during a subsequent request triggered by a URL
+SPEC2_12;Response Properties;cookie17;TRUE;Cookies set during the Resource phase after the response has been committed are ignored
+SPEC2_12;Response Properties;renderParameters1;APITEST;A call to any of the setRenderParameter methods must replace any parameter with the same name previously set
+SPEC2_12;Response Properties;portletMode1;FALSE;A portlet mode set with the setPortletMode method will be effective in the following processEvent and render requests as allowed by the portal
+SPEC2_12;Response Properties;portletMode2;APITEST;If a disallowed portlet mode set with the setPortletMode method, a PortletModeException must be thrown
+SPEC2_12;Response Properties;portletMode3;APITEST;If the portlet does not set a new portlet mode, the current portlet mode is preserved
+SPEC2_12;Response Properties;portletMode4;APITEST;The portlet can specify  the next possible portlet modes that make sense from the portlet point of view via the setNextPossiblePortletModes method
+SPEC2_12;Response Properties;windowState1;APITEST;A window state set with the setWindowState method will be effective in the following processEvent and render requests as allowed by the portal
+SPEC2_12;Response Properties;windowState2;APITEST;If a disallowed window state set with the setWindowState method, a WindowStateException must be thrown
+SPEC2_12;Response Properties;windowState3;APITEST;If the portlet does not set a new window state, the current window state is preserved
+SPEC2_12;Response Redirect;redirect1;TRUE;If a relative path is supplied to the sendRedirect method, an IllegalArgumentException must be thrown
+SPEC2_12;Response Redirect;redirect2;APITEST;If the sendRedirect method is called after the setPortletMode has been called, an IllegalStateException must be thrown and the redirection must not be executed
+SPEC2_12;Response Redirect;redirect3;APITEST;If the sendRedirect method is called after the setWindowState has been called, an IllegalStateException must be thrown and the redirection must not be executed
+SPEC2_12;Response Redirect;redirect4;APITEST;If the sendRedirect method is called after the setRenderParameter has been called, an IllegalStateException must be thrown and the redirection must not be executed
+SPEC2_12;Response Redirect;redirect5;APITEST;If the sendRedirect method is called after the setRenderParameters has been called, an IllegalStateException must be thrown and the redirection must not be executed
+SPEC2_12;Response Redirect;redirect6;APITEST;If the sendRedirect method is called after the removePublicRenderParameter has been called, an IllegalStateException must be thrown and the redirection must not be executed
+SPEC2_12;Response Redirect;redirect7;APITEST;If the sendRedirect(String location, String renderUrlParamName) method is used, the portlet container must attach a render URL to the target location as a query parameter under the specified parameter name
+SPEC2_12;Response Redirect;redirect8;APITEST;If a new portlet mode value is set on the ActionResponse before the redirect, the new portlet mode value must be set on the attached render URL
+SPEC2_12;Response Redirect;redirect10;APITEST;If a new window state value is set on the ActionResponse before the redirect, the new window state value must be set on the attached render URL
+SPEC2_12;Response Redirect;redirect12;TRUE;If a new private render parameter value is set on the ActionResponse before the redirect, the new private render parameter value must be set on the attached render URL
+SPEC2_12;Response Redirect;redirect14;TRUE;If a new public render parameter value is set on the ActionResponse before the redirect, the new public rend

<TRUNCATED>

Mime
View raw message