JBoss Portal SVN: r10113 - docs/branches/JBoss_Portal_Branch_2_6/referenceGuide/en/modules.
by portal-commits@lists.jboss.org
Author: mmcallis
Date: 2008-02-25 18:59:04 -0500 (Mon, 25 Feb 2008)
New Revision: 10113
Modified:
docs/branches/JBoss_Portal_Branch_2_6/referenceGuide/en/modules/xmldescriptors.xml
Log:
6.1.2. The JBoss Portlet Instance DTD
minor revisions/corrections
Modified: docs/branches/JBoss_Portal_Branch_2_6/referenceGuide/en/modules/xmldescriptors.xml
===================================================================
--- docs/branches/JBoss_Portal_Branch_2_6/referenceGuide/en/modules/xmldescriptors.xml 2008-02-25 23:32:26 UTC (rev 10112)
+++ docs/branches/JBoss_Portal_Branch_2_6/referenceGuide/en/modules/xmldescriptors.xml 2008-02-25 23:59:04 UTC (rev 10113)
@@ -332,7 +332,8 @@
</listitem>
</varlistentry>
<varlistentry><term><screen><![CDATA[
-<!ELEMENT instance (instance-id,portlet-ref,preferences?,security-constraint?)>]]>
+<!ELEMENT instance (instance-id,portlet-ref,display-name*,preferences?,
+security-constraint?, (display-name* | (resource-bundle, supported-locale+)))>]]>
</screen></term>
<listitem>
<para>
@@ -379,11 +380,11 @@
</para>
<para>
<screen><![CDATA[
-<!ELEMENT preferences (preference)>]]>
+<!ELEMENT preferences (preference+)>]]>
</screen>
</para>
<para>
- The <computeroutput><preferences></computeroutput> element configures the instance with a specific set of preferences.
+ The <computeroutput><preferences></computeroutput> element configures the instance with a set of preferences.
</para>
</listitem>
</varlistentry>
@@ -392,7 +393,7 @@
</screen></term>
<listitem>
<para>
- The <computeroutput><preference></computeroutput> element configures one preference which is part of a set of preferences, which is defined using the <computeroutput><preferences></computeroutput> element.
+ The <computeroutput><preference></computeroutput> element configures one preference, which is part of a set of preferences. Use the <computeroutput><preferences></computeroutput> element to define a set of preferences.
</para>
<para>
<screen><![CDATA[
16 years, 2 months
JBoss Portal SVN: r10112 - in modules/portlet/trunk: test and 13 other directories.
by portal-commits@lists.jboss.org
Author: bdaw
Date: 2008-02-25 18:32:26 -0500 (Mon, 25 Feb 2008)
New Revision: 10112
Added:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/tck/
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/tck/TCKPageNavigationalState.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/tck/TCKPageRenderer.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/tck/TCKServlet.java
modules/portlet/trunk/test/src/test/resources/jboss-4.2/portlet-tck-war/
modules/portlet/trunk/test/src/test/resources/jboss-4.2/portlet-tck-war/WEB-INF/
modules/portlet/trunk/test/src/test/resources/jboss-4.2/portlet-tck-war/WEB-INF/context.xml
modules/portlet/trunk/test/src/test/resources/jboss-4.2/portlet-tck-war/WEB-INF/jboss-web.xml
modules/portlet/trunk/test/src/test/resources/portlet-tck-war/
modules/portlet/trunk/test/src/test/resources/portlet-tck-war/WEB-INF/
modules/portlet/trunk/test/src/test/resources/portlet-tck-war/WEB-INF/classes/
modules/portlet/trunk/test/src/test/resources/portlet-tck-war/WEB-INF/jboss-beans.xml
modules/portlet/trunk/test/src/test/resources/portlet-tck-war/WEB-INF/web.xml
modules/portlet/trunk/test/src/test/resources/tomcat-6.0/portlet-tck-war/
modules/portlet/trunk/test/src/test/resources/tomcat-6.0/portlet-tck-war/META-INF/
modules/portlet/trunk/test/src/test/resources/tomcat-6.0/portlet-tck-war/META-INF/context.xml
modules/portlet/trunk/test/src/test/resources/tomcat-6.0/portlet-tck-war/WEB-INF/
Modified:
modules/portlet/trunk/controller/src/main/java/org/jboss/portal/portlet/controller/impl/state/PageNavigationalStateImpl.java
modules/portlet/trunk/test/pom.xml
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/PageRenderer.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/PortletControllerContextImpl.java
modules/portlet/trunk/test/src/test/build.xml
Log:
- TCK portal
- some minor changes to be able to reuse stuff
Modified: modules/portlet/trunk/controller/src/main/java/org/jboss/portal/portlet/controller/impl/state/PageNavigationalStateImpl.java
===================================================================
--- modules/portlet/trunk/controller/src/main/java/org/jboss/portal/portlet/controller/impl/state/PageNavigationalStateImpl.java 2008-02-25 23:12:41 UTC (rev 10111)
+++ modules/portlet/trunk/controller/src/main/java/org/jboss/portal/portlet/controller/impl/state/PageNavigationalStateImpl.java 2008-02-25 23:32:26 UTC (rev 10112)
@@ -39,7 +39,7 @@
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
* @version $Revision: 1.1 $
*/
-class PageNavigationalStateImpl implements PageNavigationalState, Serializable
+public class PageNavigationalStateImpl implements PageNavigationalState, Serializable
{
/** . */
@@ -54,7 +54,7 @@
/** . */
private final boolean modifiable;
- PageNavigationalStateImpl(StateControllerContextImpl context, boolean modifiable)
+ protected PageNavigationalStateImpl(StateControllerContextImpl context, boolean modifiable)
{
this.context = context;
this.windows = new HashMap<String, WindowNavigationalState>();
Modified: modules/portlet/trunk/test/pom.xml
===================================================================
--- modules/portlet/trunk/test/pom.xml 2008-02-25 23:12:41 UTC (rev 10111)
+++ modules/portlet/trunk/test/pom.xml 2008-02-25 23:32:26 UTC (rev 10112)
@@ -365,6 +365,7 @@
<ant antfile="${basedir}/src/test/build.xml">
<target name="tests"/>
<target name="package-simple-portal"/>
+ <target name="package-tck-portal"/>
</ant>
</tasks>
Modified: modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/PageRenderer.java
===================================================================
--- modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/PageRenderer.java 2008-02-25 23:12:41 UTC (rev 10111)
+++ modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/PageRenderer.java 2008-02-25 23:32:26 UTC (rev 10112)
@@ -62,10 +62,10 @@
public class PageRenderer extends AbstractMarkupRenderer
{
- private FragmentRenderer fragmentRenderer = new SimpleFragmentRenderer();
- private List<FragmentResponse> fragments;
- private List<ErrorResponse> errors;
- private PageNavigationalState pageState;
+ protected FragmentRenderer fragmentRenderer = new SimpleFragmentRenderer();
+ protected List<FragmentResponse> fragments;
+ protected List<ErrorResponse> errors;
+ protected PageNavigationalState pageState;
public PageRenderer(ResponseProperties properties, PageNavigationalState pageState)
{
Modified: modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/PortletControllerContextImpl.java
===================================================================
--- modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/PortletControllerContextImpl.java 2008-02-25 23:12:41 UTC (rev 10111)
+++ modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/PortletControllerContextImpl.java 2008-02-25 23:32:26 UTC (rev 10112)
@@ -78,7 +78,7 @@
return stateControllerContext;
}
- protected PortletInvocationResponse invoke(PortletInvocation invocation) throws PortletInvokerException
+ public PortletInvocationResponse invoke(PortletInvocation invocation) throws PortletInvokerException
{
return invoker.invoke(invocation);
}
Added: modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/tck/TCKPageNavigationalState.java
===================================================================
--- modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/tck/TCKPageNavigationalState.java (rev 0)
+++ modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/tck/TCKPageNavigationalState.java 2008-02-25 23:32:26 UTC (rev 10112)
@@ -0,0 +1,62 @@
+/*
+* JBoss, a division of Red Hat
+* Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+
+package org.jboss.portal.portlet.test.tck;
+
+import org.jboss.portal.portlet.controller.state.PageNavigationalState;
+import org.jboss.portal.portlet.controller.state.WindowNavigationalState;
+import org.jboss.portal.portlet.controller.impl.state.StateControllerContextImpl;
+import org.jboss.portal.portlet.controller.impl.state.PageNavigationalStateImpl;
+import org.jboss.portal.portlet.info.PortletInfo;
+import org.jboss.portal.portlet.info.ParameterInfo;
+import org.jboss.portal.portlet.info.NavigationInfo;
+import org.jboss.portal.portlet.Portlet;
+import org.jboss.portal.common.util.ParameterMap;
+
+import javax.xml.namespace.QName;
+import java.io.Serializable;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.Set;
+import java.util.List;
+import java.util.Collection;
+
+/**
+ * @author <a href="mailto:boleslaw dot dawidowicz at redhat anotherdot com">Boleslaw Dawidowicz</a>
+ * @version : 0.1 $
+ */
+public class TCKPageNavigationalState extends PageNavigationalStateImpl
+{
+
+ Collection<Portlet> involvedPortlets;
+
+ public TCKPageNavigationalState(StateControllerContextImpl context, boolean modifiable, Collection<Portlet> involvedPortlets)
+ {
+ super(context, modifiable);
+ this.involvedPortlets = involvedPortlets;
+ }
+
+ public Collection<Portlet> getInvolvedPortlets()
+ {
+ return involvedPortlets;
+ }
+}
Added: modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/tck/TCKPageRenderer.java
===================================================================
--- modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/tck/TCKPageRenderer.java (rev 0)
+++ modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/tck/TCKPageRenderer.java 2008-02-25 23:32:26 UTC (rev 10112)
@@ -0,0 +1,146 @@
+/*
+* JBoss, a division of Red Hat
+* Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+
+package org.jboss.portal.portlet.test.tck;
+
+import org.jboss.portal.portlet.test.controller.PageRenderer;
+import org.jboss.portal.portlet.test.controller.PortletControllerContextImpl;
+import org.jboss.portal.portlet.invocation.response.ResponseProperties;
+import org.jboss.portal.portlet.invocation.response.FragmentResponse;
+import org.jboss.portal.portlet.invocation.response.ErrorResponse;
+import org.jboss.portal.portlet.invocation.response.PortletInvocationResponse;
+import org.jboss.portal.portlet.invocation.RenderInvocation;
+import org.jboss.portal.portlet.controller.state.PageNavigationalState;
+import org.jboss.portal.portlet.controller.state.WindowNavigationalState;
+import org.jboss.portal.portlet.Portlet;
+import org.jboss.portal.portlet.StateString;
+import org.jboss.portal.portlet.PortletInvokerException;
+import org.jboss.portal.Mode;
+import org.jboss.portal.WindowState;
+import org.jboss.portal.common.util.ParameterMap;
+
+import java.util.Collection;
+import java.util.ArrayList;
+
+/**
+ * @author <a href="mailto:boleslaw dot dawidowicz at redhat anotherdot com">Boleslaw Dawidowicz</a>
+ * @version : 0.1 $
+ */
+public class TCKPageRenderer extends PageRenderer
+{
+ TCKPageNavigationalState tckPageState;
+
+ public TCKPageRenderer(ResponseProperties properties, TCKPageNavigationalState pageState)
+ {
+ super(properties, pageState);
+ tckPageState = pageState;
+ }
+
+ protected void prepareRendering(PortletControllerContextImpl context)
+ {
+ // What we collect during the different renders
+ // we don't reuse the render properties argument since we want to avoid that
+ // a portlet rendition affects another rendition of a portlet on the same page
+ ResponseProperties renderProperties = new ResponseProperties();
+
+ //
+ try
+ {
+ Collection<Portlet> portlets = tckPageState.getInvolvedPortlets();
+
+ int capacity = portlets.size();
+ fragments = new ArrayList<FragmentResponse>(capacity);
+ errors = new ArrayList<ErrorResponse>(capacity);
+
+ for (Portlet portlet : portlets)
+ {
+ WindowNavigationalState windowNS = pageState.getWindowNavigationalState(portlet.getContext().getId());
+
+ //
+ Mode mode = Mode.VIEW;
+ WindowState windowState = WindowState.NORMAL;
+ StateString portletNS = null;
+
+ //
+ if (windowNS != null)
+ {
+ if (windowNS.getMode() != null)
+ {
+ mode = windowNS.getMode();
+ }
+ if (windowNS.getWindowState() != null)
+ {
+ windowState = windowNS.getWindowState();
+ }
+ if (windowNS.getPortletNavigationalState() != null)
+ {
+ portletNS = windowNS.getPortletNavigationalState();
+ }
+ }
+
+ //
+ ParameterMap publicNS = pageState.getPublicNavigationalState(portlet.getContext().getId());
+
+ RenderInvocation render = createRenderInvocation(context, properties, pageState, portlet, windowNS, mode, windowState, portletNS, publicNS);
+
+ //
+ try
+ {
+ PortletInvocationResponse response = context.invoke(render);
+
+ if (response instanceof FragmentResponse)
+ {
+ FragmentResponse fragment = (FragmentResponse)response;
+
+ //
+ fragments.add(fragment);
+
+ //
+ ResponseProperties fragmentProperties = fragment.getProperties();
+ if (fragmentProperties != null)
+ {
+ renderProperties.append(fragmentProperties);
+ }
+ }
+ else if (response instanceof ErrorResponse)
+ {
+ ErrorResponse error = (ErrorResponse)response;
+ errors.add(error);
+ }
+
+ }
+ catch (PortletInvokerException e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ // todo
+ e.printStackTrace();
+ }
+
+ // Now we combine the render properties with the page properties
+ properties.append(renderProperties);
+ }
+}
Added: modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/tck/TCKServlet.java
===================================================================
--- modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/tck/TCKServlet.java (rev 0)
+++ modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/tck/TCKServlet.java 2008-02-25 23:32:26 UTC (rev 10112)
@@ -0,0 +1,149 @@
+/*
+* JBoss, a division of Red Hat
+* Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+
+package org.jboss.portal.portlet.test.tck;
+
+import org.jboss.portal.portlet.test.controller.PortletControllerContextImpl;
+import org.jboss.portal.portlet.test.controller.Renderer;
+import org.jboss.portal.portlet.test.controller.ControllerResponseRendererFactory;
+import org.jboss.portal.portlet.test.controller.PageRenderer;
+import org.jboss.portal.portlet.test.URLParameterConstants;
+import org.jboss.portal.portlet.controller.PortletController;
+import org.jboss.portal.portlet.controller.response.ControllerResponse;
+import org.jboss.portal.portlet.controller.request.ControllerRequest;
+import org.jboss.portal.portlet.controller.impl.request.ControllerRequestFactory;
+import org.jboss.portal.portlet.controller.impl.state.StateControllerContextImpl;
+import org.jboss.portal.portlet.invocation.response.ResponseProperties;
+import org.jboss.portal.portlet.Portlet;
+import org.jboss.portal.web.WebRequest;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.ServletException;
+import java.io.IOException;
+import java.util.Collection;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.List;
+import java.util.LinkedList;
+
+/**
+ * @author <a href="mailto:boleslaw dot dawidowicz at redhat anotherdot com">Boleslaw Dawidowicz</a>
+ * @version : 0.1 $
+ */
+public class TCKServlet extends HttpServlet
+{
+
+ public static String TCK_PORTLET_NAME = "portletName";
+
+ protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
+ {
+ try
+ {
+ _service(req, resp);
+ }
+ catch (Exception e)
+ {
+ if (e instanceof ServletException)
+ {
+ throw (ServletException)e;
+ }
+ if (e instanceof IOException)
+ {
+ throw (IOException)e;
+ }
+ if (e instanceof RuntimeException)
+ {
+ throw (RuntimeException)e;
+ }
+ throw new ServletException(e);
+ }
+ }
+
+ protected void _service(HttpServletRequest req, HttpServletResponse resp) throws Exception
+ {
+ PortletControllerContextImpl context = new PortletControllerContextImpl(req, resp, getServletContext());
+
+ //
+ PortletController controller = new PortletController();
+
+ String type = req.getParameter(URLParameterConstants.TYPE);
+
+ //
+ if (URLParameterConstants.PORTLET_TYPE.equals(type))
+ {
+ WebRequest wr = new WebRequest(req);
+ ControllerRequestFactory factory = new ControllerRequestFactory(context.getStateControllerContext());
+ ControllerRequest request = factory.createRequest(wr);
+
+ //
+ ControllerResponse response = controller.process(context, request);
+
+ //
+ Renderer renderer = ControllerResponseRendererFactory.getRenderer(response);
+
+ //
+ renderer.render(context);
+ }
+ else
+ {
+
+ String[] tckParamers = req.getParameterValues(TCK_PORTLET_NAME);
+
+ Collection<Portlet> portlets = context.getPortlets();
+
+ List<Portlet> involvedPortlets = new LinkedList<Portlet>();
+
+ for (int i = 0; i < tckParamers.length; i++)
+ {
+ String tckParamer = tckParamers[i];
+
+ String[] parts = tckParamer.split("/");
+
+ String portletAppName = parts[0];
+ String portletName = parts[1];
+
+ for (Portlet portlet : portlets)
+ {
+ if (portlet.getInfo().getApplicationName().equals(portletAppName)
+ && portlet.getInfo().getName().equals(portletName))
+ {
+ involvedPortlets.add(portlet);
+ }
+ }
+ }
+
+ if (tckParamers.length > 0 && involvedPortlets.isEmpty())
+ {
+ throw new IllegalStateException("Portlets requested by TCK were not found");
+ }
+
+ TCKPageNavigationalState tckPageState = new TCKPageNavigationalState((StateControllerContextImpl)context.getStateControllerContext(), false, involvedPortlets);
+
+ PageRenderer renderer = new TCKPageRenderer(new ResponseProperties(), tckPageState);
+
+ //
+ renderer.render(context);
+ }
+ }
+}
Modified: modules/portlet/trunk/test/src/test/build.xml
===================================================================
--- modules/portlet/trunk/test/src/test/build.xml 2008-02-25 23:12:41 UTC (rev 10111)
+++ modules/portlet/trunk/test/src/test/build.xml 2008-02-25 23:32:26 UTC (rev 10112)
@@ -708,6 +708,89 @@
</sequential>
</macrodef>
+ <target name="package-tck-portal" depends="prepare_env">
+
+ <property name="tck" value="${target}/tck"/>
+ <property name="tck-jboss" value="${tck}/jboss42"/>
+
+
+ <mkdir dir="${tck}"/>
+ <mkdir dir="${tck-jboss}"/>
+ <!--<mkdir dir="${tck}/jboss42"/>-->
+ <!--<mkdir dir="${tck}/tomcat6"/>-->
+
+
+ <jar jarfile="${target}/portlet-test-lib.jar">
+ <fileset dir="${target}/classes" excludes="org/jboss/portal/portlet/portal/samples/**"/>
+ </jar>
+
+ <copy todir="${tck-jboss}/portlet-tck-war">
+ <fileset dir="${target}/test-classes/portlet-tck-war"/>
+ </copy>
+ <copy todir="${tck-jboss}/portlet-tck-war">
+ <fileset dir="${target}/test-classes/jboss-4.2/portlet-tck-war"/>
+ </copy>
+
+ <copy todir="${tck-jboss}/portlet-tck-war/WEB-INF/lib" flatten="true">
+
+ <!-- -->
+ <fileset dir="${target}" includes="portlet-test-lib.jar"/>
+
+ <!-- -->
+ <path refid="mc.portal-common"/>
+
+ <path refid="mc.portal-portlet-controller"/>
+
+ <!-- Remote plugin -->
+ <path refid="mc.jboss-remoting"/>
+ <path refid="mc.portal-test-generic"/>
+
+
+ <!-- MC 2.0.0.Beta4 -->
+ <path refid="mc.trove"/>
+ <path refid="mc.javassist"/>
+ <path refid="mc.jboss_common_core"/>
+ <path refid="mc.jboss_vfs"/>
+ <path refid="mc.jboss_xb"/>
+ <path refid="mc.jboss_aop"/>
+ <path refid="mc.jboss_microcontainer"/>
+ <path refid="mc.jaxb-api"/>
+
+
+ </copy>
+
+ <mkdir dir="${tck-jboss}/tck-portal"/>
+
+ <jar jarfile="${tck-jboss}/tck-portal/portlet-tck.war">
+ <fileset dir="${tck-jboss}/portlet-tck-war"/>
+ </jar>
+
+ <copy todir="${tck-jboss}/tck-portal" flatten="true">
+
+ <!--Stuff from shared classpath-->
+ <path location="${dependency.portal-common.jar}"/>
+ <path location="${dependency.portal-common-portal.jar}"/>
+ <path location="${dependency.portal-portlet.jar}"/>
+ <path location="${dependency.portal-web.jar}"/>
+ <!--<path location="${dependency.jsr168api.jar}"/>-->
+
+ <path location="${dependency.jboss-unit.jar}"/>
+ <path location="${dependency.jboss-unit-remote.jar}"/>
+ <path location="${dependency.portal-test.jar}"/>
+
+ </copy>
+
+ <copy todir="${tck}" flatten="true">
+
+ <path location="${dependency.jsr168api.jar}"/>
+
+ </copy>
+
+
+ <delete file="${target}/portlet-test-lib.jar"/>
+
+ </target>
+
<target name="package-simple-portal" depends="prepare_env">
<property name="portal.dir" value="${target}/portal"/>
<property name="simple.tomcat.dir" value="${portal.dir}/tomcat"/>
Added: modules/portlet/trunk/test/src/test/resources/jboss-4.2/portlet-tck-war/WEB-INF/context.xml
===================================================================
--- modules/portlet/trunk/test/src/test/resources/jboss-4.2/portlet-tck-war/WEB-INF/context.xml (rev 0)
+++ modules/portlet/trunk/test/src/test/resources/jboss-4.2/portlet-tck-war/WEB-INF/context.xml 2008-02-25 23:32:26 UTC (rev 10112)
@@ -0,0 +1,2 @@
+<Context privileged="true">
+</Context>
\ No newline at end of file
Added: modules/portlet/trunk/test/src/test/resources/jboss-4.2/portlet-tck-war/WEB-INF/jboss-web.xml
===================================================================
--- modules/portlet/trunk/test/src/test/resources/jboss-4.2/portlet-tck-war/WEB-INF/jboss-web.xml (rev 0)
+++ modules/portlet/trunk/test/src/test/resources/jboss-4.2/portlet-tck-war/WEB-INF/jboss-web.xml 2008-02-25 23:32:26 UTC (rev 10112)
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ JBoss, a division of Red Hat ~
+ ~ Copyright 2006, Red Hat Middleware, LLC, and individual ~
+ ~ contributors as indicated by the @authors tag. See the ~
+ ~ copyright.txt in the distribution for a full listing of ~
+ ~ individual contributors. ~
+ ~ ~
+ ~ This is free software; you can redistribute it and/or modify it ~
+ ~ under the terms of the GNU Lesser General Public License as ~
+ ~ published by the Free Software Foundation; either version 2.1 of ~
+ ~ the License, or (at your option) any later version. ~
+ ~ ~
+ ~ This software is distributed in the hope that it will be useful, ~
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of ~
+ ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ~
+ ~ Lesser General Public License for more details. ~
+ ~ ~
+ ~ You should have received a copy of the GNU Lesser General Public ~
+ ~ License along with this software; if not, write to the Free ~
+ ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA ~
+ ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org. ~
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+<!DOCTYPE jboss-web PUBLIC
+ "-//JBoss//DTD Web Application 4.2//EN"
+ "http://www.jboss.org/j2ee/dtd/jboss-web_4_2.dtd">
+<jboss-web>
+ <class-loading java2ClassLoadingCompliance="false">
+ <loader-repository>test:loader=portlet</loader-repository>
+ </class-loading>
+</jboss-web>
\ No newline at end of file
Added: modules/portlet/trunk/test/src/test/resources/portlet-tck-war/WEB-INF/jboss-beans.xml
===================================================================
--- modules/portlet/trunk/test/src/test/resources/portlet-tck-war/WEB-INF/jboss-beans.xml (rev 0)
+++ modules/portlet/trunk/test/src/test/resources/portlet-tck-war/WEB-INF/jboss-beans.xml 2008-02-25 23:32:26 UTC (rev 10112)
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ JBoss, a division of Red Hat ~
+ ~ Copyright 2006, Red Hat Middleware, LLC, and individual ~
+ ~ contributors as indicated by the @authors tag. See the ~
+ ~ copyright.txt in the distribution for a full listing of ~
+ ~ individual contributors. ~
+ ~ ~
+ ~ This is free software; you can redistribute it and/or modify it ~
+ ~ under the terms of the GNU Lesser General Public License as ~
+ ~ published by the Free Software Foundation; either version 2.1 of ~
+ ~ the License, or (at your option) any later version. ~
+ ~ ~
+ ~ This software is distributed in the hope that it will be useful, ~
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of ~
+ ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ~
+ ~ Lesser General Public License for more details. ~
+ ~ ~
+ ~ You should have received a copy of the GNU Lesser General Public ~
+ ~ License along with this software; if not, write to the Free ~
+ ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA ~
+ ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org. ~
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+ <bean name="TestDriverServer" class="org.jboss.unit.remote.driver.RemoteTestDriverServer"/>
+
+ <bean name="TestDriverServerExporter"
+ class="org.jboss.portal.test.framework.impl.generic.server.GenericServiceExporter">
+ <constructor>
+ <parameter>socket://localhost:5400</parameter>
+ <parameter><inject bean="TestDriverServer"/></parameter>
+ <parameter>org.jboss.unit.remote.driver.RemoteTestDriver</parameter>
+ </constructor>
+ </bean>
+
+ <bean name="PortletApplicationDeployer" class="org.jboss.portal.portlet.test.TestPortletApplicationDeployer">
+ <property name="servletContainer"><inject bean="ServletContainer"/></property>
+ <property name="driver"><inject bean="TestDriverServer"/></property>
+ <property name="portletContainerInvoker"><inject bean="PortletContainerInvoker"/></property>
+ </bean>
+
+ <!-- The ServletContainerFactory -->
+ <bean name="ServletContainerFactory" class="org.jboss.portal.web.impl.DefaultServletContainerFactory">
+ <constructor factoryClass="org.jboss.portal.web.impl.DefaultServletContainerFactory" factoryMethod="getInstance"/>
+ </bean>
+
+ <!-- The servlet container obtained from the ServletContainerFactory -->
+ <bean name="ServletContainer" class="org.jboss.portal.web.ServletContainer">
+ <constructor factoryMethod="getServletContainer">
+ <factory bean="ServletContainerFactory"/>
+ </constructor>
+ </bean>
+
+ <!-- Consumer stack -->
+ <bean name="ConsumerCacheInterceptor" class="org.jboss.portal.portlet.aspects.portlet.ConsumerCacheInterceptor">
+ </bean>
+ <bean name="ConsumerStackFactory" class="org.jboss.portal.portlet.test.InterceptorStackFactoryImpl">
+ <property name="interceptors">
+ <array>
+ <inject bean="ConsumerCacheInterceptor"/>
+ </array>
+ </property>
+ </bean>
+
+ <!-- The consumer portlet invoker -->
+ <bean name="ConsumerPortletInvoker" class="org.jboss.portal.portlet.test.controller.TestPortletInvoker">
+ <property name="producer"><inject bean="ProducerPortletInvoker"/></property>
+ <property name="stackFactory"><inject bean="ConsumerStackFactory"/></property>
+ </bean>
+
+ <!-- Container stack -->
+ <bean name="ValveInterceptor" class="org.jboss.portal.portlet.aspects.portlet.ValveInterceptor"/>
+ <bean name="SecureTransportInterceptor" class="org.jboss.portal.portlet.aspects.portlet.SecureTransportInterceptor"/>
+ <bean name="ContextDispatcherInterceptor"
+ class="org.jboss.portal.portlet.aspects.portlet.ContextDispatcherInterceptor">
+ <property name="servletContainerFactory"><inject bean="ServletContainerFactory"/></property>
+ </bean>
+ <bean name="ProducerCacheInterceptor" class="org.jboss.portal.portlet.aspects.portlet.ProducerCacheInterceptor"/>
+ <bean name="RequestAttributeConversationInterceptor" class="org.jboss.portal.portlet.aspects.portlet.RequestAttributeConversationInterceptor"/>
+ <bean name="ContainerStackFactory" class="org.jboss.portal.portlet.test.InterceptorStackFactoryImpl">
+ <property name="interceptors">
+ <array>
+ <inject bean="ValveInterceptor"/>
+ <inject bean="SecureTransportInterceptor"/>
+ <inject bean="ContextDispatcherInterceptor"/>
+ <inject bean="ProducerCacheInterceptor"/>
+ <inject bean="RequestAttributeConversationInterceptor"/>
+ </array>
+ </property>
+ </bean>
+
+ <!-- The portlet container invoker -->
+ <bean name="PortletContainerInvoker" class="org.jboss.portal.portlet.container.PortletContainerInvoker">
+ <property name="stackFactory"><inject bean="ContainerStackFactory"/></property>
+ </bean>
+
+ <!-- The producer persistence manager -->
+ <bean name="ProducerPersistenceManager"
+ class="org.jboss.portal.portlet.impl.state.producer.PortletStatePersistenceManagerService"/>
+
+ <!-- The producer state management policy -->
+ <bean name="ProducerStateManagementPolicy" class="org.jboss.portal.portlet.impl.state.StateManagementPolicyService">
+ <property name="persistLocally"><value>true</value></property>
+ </bean>
+
+ <!-- The producer state converter -->
+ <bean name="ProducerStateConverter" class="org.jboss.portal.portlet.impl.state.StateConverterV0"/>
+
+ <!-- The producer portlet invoker -->
+ <bean name="ProducerPortletInvoker" class="org.jboss.portal.portlet.state.producer.ProducerPortletInvoker">
+ <property name="portletInvoker"><inject bean="PortletContainerInvoker"/></property>
+ <property name="persistenceManager"><inject bean="ProducerPersistenceManager"/></property>
+ <property name="stateManagementPolicy"><inject bean="ProducerStateManagementPolicy"/></property>
+ <property name="stateConverter"><inject bean="ProducerStateConverter"/></property>
+ </bean>
+
+</deployment>
Added: modules/portlet/trunk/test/src/test/resources/portlet-tck-war/WEB-INF/web.xml
===================================================================
--- modules/portlet/trunk/test/src/test/resources/portlet-tck-war/WEB-INF/web.xml (rev 0)
+++ modules/portlet/trunk/test/src/test/resources/portlet-tck-war/WEB-INF/web.xml 2008-02-25 23:32:26 UTC (rev 10112)
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ JBoss, a division of Red Hat ~
+ ~ Copyright 2006, Red Hat Middleware, LLC, and individual ~
+ ~ contributors as indicated by the @authors tag. See the ~
+ ~ copyright.txt in the distribution for a full listing of ~
+ ~ individual contributors. ~
+ ~ ~
+ ~ This is free software; you can redistribute it and/or modify it ~
+ ~ under the terms of the GNU Lesser General Public License as ~
+ ~ published by the Free Software Foundation; either version 2.1 of ~
+ ~ the License, or (at your option) any later version. ~
+ ~ ~
+ ~ This software is distributed in the hope that it will be useful, ~
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of ~
+ ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ~
+ ~ Lesser General Public License for more details. ~
+ ~ ~
+ ~ You should have received a copy of the GNU Lesser General Public ~
+ ~ License along with this software; if not, write to the Free ~
+ ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA ~
+ ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org. ~
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+
+<!DOCTYPE web-app PUBLIC
+ "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+ "http://java.sun.com/dtd/web-app_2_3.dtd">
+<web-app>
+ <listener>
+ <listener-class>org.jboss.portal.common.mc.bootstrap.WebBootstrap</listener-class>
+ </listener>
+ <servlet>
+ <servlet-name>ContainerServlet</servlet-name>
+ <servlet-class>org.jboss.portal.web.impl.tomcat.TC6ContainerServlet</servlet-class>
+ <load-on-startup>0</load-on-startup>
+ </servlet>
+ <servlet>
+ <servlet-name>PortalServlet</servlet-name>
+ <servlet-class>org.jboss.portal.portlet.test.tck.TCKServlet</servlet-class>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>PortalServlet</servlet-name>
+ <url-pattern>/*</url-pattern>
+ </servlet-mapping>
+</web-app>
Added: modules/portlet/trunk/test/src/test/resources/tomcat-6.0/portlet-tck-war/META-INF/context.xml
===================================================================
--- modules/portlet/trunk/test/src/test/resources/tomcat-6.0/portlet-tck-war/META-INF/context.xml (rev 0)
+++ modules/portlet/trunk/test/src/test/resources/tomcat-6.0/portlet-tck-war/META-INF/context.xml 2008-02-25 23:32:26 UTC (rev 10112)
@@ -0,0 +1,2 @@
+<Context privileged="true">
+</Context>
16 years, 2 months
JBoss Portal SVN: r10111 - in modules/portlet/trunk: portlet/src/main/java/org/jboss/portal/portlet/container and 12 other directories.
by portal-commits@lists.jboss.org
Author: julien(a)jboss.com
Date: 2008-02-25 18:12:41 -0500 (Mon, 25 Feb 2008)
New Revision: 10111
Added:
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/ext/portletinterface/
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/ext/portletinterface/UnavailablePortletTestCase.java
modules/portlet/trunk/test/src/test/resources/jsr286/ext/portletinterface-war/
modules/portlet/trunk/test/src/test/resources/jsr286/ext/portletinterface-war/WEB-INF/
modules/portlet/trunk/test/src/test/resources/jsr286/ext/portletinterface-war/WEB-INF/portlet.xml
modules/portlet/trunk/test/src/test/resources/jsr286/ext/portletinterface-war/WEB-INF/web.xml
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/aspects/portlet/ValveInterceptor.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/container/PortletApplicationContext.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/container/PortletContainerContext.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/container/PortletFilterContext.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletContainerImpl.java
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/portlet/container/PortletApplicationContextSupport.java
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/portlet/container/PortletContainerContextSupport.java
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/portlet/container/PortletFilterContextSupport.java
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/base/AbstractUniversalTestPortlet.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletApplicationContextImpl.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletApplicationDeployment.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletContainerContextImpl.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletFilterContextImpl.java
modules/portlet/trunk/test/src/test/build.xml
modules/portlet/trunk/test/src/test/resources/portlet-test-war/WEB-INF/jboss-beans.xml
modules/portlet/trunk/test/src/test/resources/test/remote-jboss-unit.xml
Log:
- fixed the valve interceptor
- added test case for valve interceptor unavailability
Modified: modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/aspects/portlet/ValveInterceptor.java
===================================================================
--- modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/aspects/portlet/ValveInterceptor.java 2008-02-25 22:53:37 UTC (rev 10110)
+++ modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/aspects/portlet/ValveInterceptor.java 2008-02-25 23:12:41 UTC (rev 10111)
@@ -23,13 +23,15 @@
package org.jboss.portal.portlet.aspects.portlet;
import org.jboss.portal.common.invocation.InvocationException;
-import org.jboss.portal.portlet.container.PortletContainer;
+import org.jboss.portal.common.concurrent.Valve;
import org.jboss.portal.portlet.container.PortletContainerInvoker;
import org.jboss.portal.portlet.container.PortletContainerContext;
+import org.jboss.portal.portlet.container.managed.PortletApplicationRegistry;
import org.jboss.portal.portlet.invocation.PortletInterceptor;
import org.jboss.portal.portlet.invocation.PortletInvocation;
import org.jboss.portal.portlet.invocation.response.PortletInvocationResponse;
import org.jboss.portal.portlet.invocation.response.UnavailableResponse;
+import org.jboss.portal.portlet.impl.jsr168.PortletContainerImpl;
/**
* This aspect has two responsabilities :<br/> <ul> <li>continue the request only if the portlet container valve is
@@ -44,26 +46,57 @@
public class ValveInterceptor extends PortletInterceptor
{
+ /** . */
+ private PortletApplicationRegistry registry;
+
+ public PortletApplicationRegistry getPortletApplicationRegistry()
+ {
+ return registry;
+ }
+
+ public void setPortletApplicationRegistry(PortletApplicationRegistry portletApplicationRegistry)
+ {
+ this.registry = portletApplicationRegistry;
+ }
+
protected Object invoke(PortletInvocation invocation) throws Exception, InvocationException
{
- PortletInvocationResponse response = (PortletInvocationResponse)invocation.invokeNext();
+ PortletContainerImpl container = (PortletContainerImpl)invocation.getAttribute(PortletInvocation.INVOCATION_SCOPE, PortletContainerInvoker.PORTLET_CONTAINER);
- // Stop the container if necessary
- if (response instanceof UnavailableResponse)
+ //
+ Valve valve = container.getValve();
+
+ if (valve.beforeInvocation())
{
- // This call will wait until all the current threads have exited the component valve.
- // Perhaps this should be done asynchronously as it may lead to a long delay ?
- // It could be made parametrizable too, so the deployer can choose what mode is preferable
- PortletContainer container = (PortletContainer)invocation.getAttribute(PortletInvocation.INVOCATION_SCOPE, PortletContainerInvoker.PORTLET_CONTAINER);
+ PortletInvocationResponse response;
- // Get the context
- PortletContainerContext context = container.getContext();
+ try
+ {
+ response = (PortletInvocationResponse)invocation.invokeNext();
+ }
+ finally
+ {
+ // Release the valve
+ valve.afterInvocation();
+ }
- // Invoke stop
-// context.invokeStop();
+ // Stop the container if necessary
+ if (response instanceof UnavailableResponse)
+ {
+ PortletContainerContext containerContext = container.getContext();
+
+ // This call will wait until all the current threads have exited the component valve.
+ // Perhaps this should be done asynchronously as it may lead to a long delay ?
+ // It could be made parametrizable as a runtime option too, so the deployer can choose what mode is preferable
+ containerContext.managedStop();
+ }
+
+ //
+ return response;
}
-
- //
- return response;
+ else
+ {
+ return new UnavailableResponse();
+ }
}
}
Modified: modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/container/PortletApplicationContext.java
===================================================================
--- modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/container/PortletApplicationContext.java 2008-02-25 22:53:37 UTC (rev 10110)
+++ modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/container/PortletApplicationContext.java 2008-02-25 23:12:41 UTC (rev 10111)
@@ -54,4 +54,14 @@
* @return the classloader
*/
ClassLoader getClassLoader();
+
+ /**
+ * Attempt to start the portlet application.
+ */
+ void managedStart();
+
+ /**
+ * Stop the portlet application.
+ */
+ void managedStop();
}
Modified: modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/container/PortletContainerContext.java
===================================================================
--- modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/container/PortletContainerContext.java 2008-02-25 22:53:37 UTC (rev 10110)
+++ modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/container/PortletContainerContext.java 2008-02-25 23:12:41 UTC (rev 10111)
@@ -28,4 +28,13 @@
*/
public interface PortletContainerContext
{
+ /**
+ * Attempt to start the portlet container.
+ */
+ void managedStart();
+
+ /**
+ * Stop the portlet container.
+ */
+ void managedStop();
}
Modified: modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/container/PortletFilterContext.java
===================================================================
--- modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/container/PortletFilterContext.java 2008-02-25 22:53:37 UTC (rev 10110)
+++ modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/container/PortletFilterContext.java 2008-02-25 23:12:41 UTC (rev 10111)
@@ -28,4 +28,13 @@
*/
public interface PortletFilterContext
{
+ /**
+ * Attempt to start the portlet filter.
+ */
+ void managedStart();
+
+ /**
+ * Stop the portlet filter.
+ */
+ void managedStop();
}
Modified: modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletContainerImpl.java
===================================================================
--- modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletContainerImpl.java 2008-02-25 22:53:37 UTC (rev 10110)
+++ modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletContainerImpl.java 2008-02-25 23:12:41 UTC (rev 10111)
@@ -80,7 +80,6 @@
import javax.portlet.filter.FilterChain;
import javax.portlet.filter.FilterConfig;
import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Set;
import java.util.List;
@@ -200,11 +199,6 @@
filters.remove((PortletFilterImpl)filter);
}
- public boolean isStarted()
- {
- return valve.getState() == Valve.OPEN;
- }
-
public void start() throws PortletInitializationException
{
// Set class name
@@ -340,7 +334,7 @@
public void stop()
{
- // if the portlet is not started, we shouldn't be trying to stop it...
+ // If the portlet is not started, we shouldn't be trying to stop it...
if (started)
{
// Wait at most 60 seconds before all invocations are done
@@ -457,28 +451,7 @@
public PortletInvocationResponse dispatch(PortletInvocation invocation) throws PortletInvokerException, InvocationException
{
- if (valve.beforeInvocation())
- {
- try
- {
- return invokeDispatch(invocation);
- }
- finally
- {
- // Release the valve
- valve.afterInvocation();
- }
- }
- else
- {
- return new UnavailableResponse();
- }
- }
-
- private PortletInvocationResponse invokeDispatch(PortletInvocation invocation) throws PortletInvokerException, InvocationException
- {
HttpServletRequest dreq = invocation.getDispatchedRequest();
- HttpServletResponse dresp = invocation.getDispatchedResponse();
//
PortletRequestImpl req;
Modified: modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/portlet/container/PortletApplicationContextSupport.java
===================================================================
--- modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/portlet/container/PortletApplicationContextSupport.java 2008-02-25 22:53:37 UTC (rev 10110)
+++ modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/portlet/container/PortletApplicationContextSupport.java 2008-02-25 23:12:41 UTC (rev 10111)
@@ -44,4 +44,14 @@
{
throw new UnsupportedOperationException();
}
+
+ public void managedStart()
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public void managedStop()
+ {
+ throw new UnsupportedOperationException();
+ }
}
Modified: modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/portlet/container/PortletContainerContextSupport.java
===================================================================
--- modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/portlet/container/PortletContainerContextSupport.java 2008-02-25 22:53:37 UTC (rev 10110)
+++ modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/portlet/container/PortletContainerContextSupport.java 2008-02-25 23:12:41 UTC (rev 10111)
@@ -28,4 +28,13 @@
*/
public class PortletContainerContextSupport implements PortletContainerContext
{
+ public void managedStart()
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public void managedStop()
+ {
+ throw new UnsupportedOperationException();
+ }
}
Modified: modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/portlet/container/PortletFilterContextSupport.java
===================================================================
--- modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/portlet/container/PortletFilterContextSupport.java 2008-02-25 22:53:37 UTC (rev 10110)
+++ modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/portlet/container/PortletFilterContextSupport.java 2008-02-25 23:12:41 UTC (rev 10111)
@@ -28,4 +28,13 @@
*/
public class PortletFilterContextSupport implements PortletFilterContext
{
+ public void managedStart()
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public void managedStop()
+ {
+ throw new UnsupportedOperationException();
+ }
}
Added: modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/ext/portletinterface/UnavailablePortletTestCase.java
===================================================================
--- modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/ext/portletinterface/UnavailablePortletTestCase.java (rev 0)
+++ modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/ext/portletinterface/UnavailablePortletTestCase.java 2008-02-25 23:12:41 UTC (rev 10111)
@@ -0,0 +1,96 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2008, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * This is free software; you can redistribute it and/or modify it *
+ * under the terms of the GNU Lesser General Public License as *
+ * published by the Free Software Foundation; either version 2.1 of *
+ * the License, or (at your option) any later version. *
+ * *
+ * This software is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this software; if not, write to the Free *
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org. *
+ ******************************************************************************/
+package org.jboss.portal.test.portlet.jsr286.ext.portletinterface;
+
+import org.jboss.portal.unit.annotations.TestCase;
+import org.jboss.portal.unit.PortletTestCase;
+import org.jboss.portal.unit.PortletTestContext;
+import org.jboss.portal.unit.base.AbstractUniversalTestPortlet;
+import org.jboss.portal.unit.actions.PortletRenderTestAction;
+import org.jboss.portal.test.portlet.framework.UTP1;
+import org.jboss.portal.test.portlet.framework.UTP2;
+import org.jboss.unit.driver.DriverResponse;
+import org.jboss.unit.driver.response.EndTestResponse;
+import org.jboss.unit.remote.driver.handler.http.response.InvokeGetResponse;
+
+import static org.jboss.unit.api.Assert.*;
+
+import javax.portlet.Portlet;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+import javax.portlet.PortletException;
+import javax.portlet.UnavailableException;
+import java.io.IOException;
+
+/**
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision: 630 $
+ */
+@TestCase
+public class UnavailablePortletTestCase
+{
+
+ /** . */
+ private AbstractUniversalTestPortlet utp1;
+
+ public UnavailablePortletTestCase(PortletTestCase seq)
+ {
+ seq.bindAction(0, UTP1.RENDER_JOIN_POINT, new PortletRenderTestAction()
+ {
+ protected DriverResponse runWithRuntimeException(Portlet portlet, RenderRequest request, RenderResponse response, PortletTestContext context) throws PortletException, IOException
+ {
+ utp1 = (AbstractUniversalTestPortlet)portlet;
+
+ //
+ throw new UnavailableException("blah");
+ }
+ });
+ seq.bindAction(0, UTP2.RENDER_JOIN_POINT, new PortletRenderTestAction()
+ {
+ protected DriverResponse run(Portlet portlet, RenderRequest request, RenderResponse response, PortletTestContext context) throws PortletException, IOException
+ {
+ return new InvokeGetResponse(response.createRenderURL().toString());
+ }
+ });
+ seq.bindAction(1, UTP1.RENDER_JOIN_POINT, new PortletRenderTestAction()
+ {
+ protected DriverResponse run(Portlet portlet, RenderRequest request, RenderResponse response, PortletTestContext context) throws PortletException, IOException
+ {
+ fail("Should not be called");
+
+ //
+ return null;
+ }
+ });
+ seq.bindAction(1, UTP2.RENDER_JOIN_POINT, new PortletRenderTestAction()
+ {
+ protected DriverResponse run(Portlet portlet, RenderRequest request, RenderResponse response, PortletTestContext context) throws PortletException, IOException
+ {
+ assertEquals(AbstractUniversalTestPortlet.RuntimeStatus.STOPPED, utp1.getRuntimeStatus());
+
+ //
+ return new EndTestResponse();
+ }
+ });
+ }
+}
Modified: modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/base/AbstractUniversalTestPortlet.java
===================================================================
--- modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/base/AbstractUniversalTestPortlet.java 2008-02-25 22:53:37 UTC (rev 10110)
+++ modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/base/AbstractUniversalTestPortlet.java 2008-02-25 23:12:41 UTC (rev 10111)
@@ -77,6 +77,16 @@
return className;
}
+ /**
+ * The runtime status of a portlet.
+ */
+ public static enum RuntimeStatus
+ {
+ INSTANTIATED,
+ STARTED,
+ STOPPED
+ }
+
/** . */
private final Logger log = createLogger();
@@ -95,14 +105,19 @@
/** To keep PortletConfig for some tests*-. */
private PortletConfig config;
+ /** Indicate the status of the portlet. */
+ private RuntimeStatus runtimeStatus;
+
/** Construct a test portlet with a test id computed with the method <code>getComponentId()</code>. */
public AbstractUniversalTestPortlet()
{
+ runtimeStatus = RuntimeStatus.INSTANTIATED;
}
public void init(PortletConfig config) throws PortletException
{
this.config = config;
+ this.runtimeStatus = RuntimeStatus.STARTED;
}
/**
@@ -376,8 +391,14 @@
public void destroy()
{
+ this.runtimeStatus = RuntimeStatus.STOPPED;
}
+ public RuntimeStatus getRuntimeStatus()
+ {
+ return runtimeStatus;
+ }
+
/**
* Returns SequenceRegistry which should be injected into ServletContext Returns null if there is no SequenceRegistry
* in context
Modified: modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletApplicationContextImpl.java
===================================================================
--- modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletApplicationContextImpl.java 2008-02-25 22:53:37 UTC (rev 10110)
+++ modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletApplicationContextImpl.java 2008-02-25 23:12:41 UTC (rev 10111)
@@ -23,6 +23,7 @@
package org.jboss.portal.portlet.test;
import org.jboss.portal.portlet.container.PortletApplicationContext;
+import org.jboss.portal.portlet.container.managed.ManagedPortletApplication;
import org.jboss.portal.web.WebApp;
import javax.servlet.ServletContext;
@@ -37,6 +38,8 @@
/** . */
private final WebApp webApp;
+ ManagedPortletApplication managedPortletApplication;
+
public PortletApplicationContextImpl(WebApp webApp)
{
this.webApp = webApp;
@@ -56,4 +59,14 @@
{
return webApp.getClassLoader();
}
+
+ public void managedStart()
+ {
+ managedPortletApplication.managedStart();
+ }
+
+ public void managedStop()
+ {
+ managedPortletApplication.managedStop();
+ }
}
Modified: modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletApplicationDeployment.java
===================================================================
--- modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletApplicationDeployment.java 2008-02-25 22:53:37 UTC (rev 10110)
+++ modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletApplicationDeployment.java 2008-02-25 23:12:41 UTC (rev 10111)
@@ -38,9 +38,6 @@
import org.jboss.portal.portlet.container.object.PortletApplicationObject;
import org.jboss.portal.portlet.container.object.PortletContainerObject;
import org.jboss.portal.portlet.container.object.PortletFilterObject;
-import org.jboss.portal.portlet.container.PortletApplicationContext;
-import org.jboss.portal.portlet.container.PortletContainerContext;
-import org.jboss.portal.portlet.container.PortletFilterContext;
import org.jboss.portal.portlet.container.managed.ManagedObjectRegistryEventListener;
import org.jboss.portal.web.WebApp;
@@ -94,7 +91,7 @@
//
PortletApplicationObject portletApplicationObject = new PortletApplicationImpl(builder.getApplication());
- PortletApplicationContext portletApplicationContext = new PortletApplicationContextImpl(webApp);
+ PortletApplicationContextImpl portletApplicationContext = new PortletApplicationContextImpl(webApp);
//
@@ -103,25 +100,34 @@
portletApplicationContext,
portletApplicationObject);
+ // Needed for the managed callbacks
+ portletApplicationContext.managedPortletApplication = portletApplicationLifeCycle;
+
//
for (ContainerFilterInfo filterInfo : builder.getApplication().getFilters().values())
{
PortletFilterObject portletFilterObject = new PortletFilterImpl(filterInfo);
- PortletFilterContext portletFilterContext = new PortletFilterContextImpl();
+ PortletFilterContextImpl portletFilterContext = new PortletFilterContextImpl();
//
- portletApplicationLifeCycle.addPortletFilter(portletFilterContext, portletFilterObject);
+ PortletFilterLifeCycle portletFilterLifeCycle = portletApplicationLifeCycle.addPortletFilter(portletFilterContext, portletFilterObject);
+
+ // Needed for the managed callbacks
+ portletFilterContext.managedPortletFilter = portletFilterLifeCycle;
}
//
for (ContainerPortletInfo containerInfo : builder.getPortlets())
{
PortletContainerObject portletContainerObject = new PortletContainerImpl(containerInfo);
- PortletContainerContext portletContainerContext = new PortletContainerContextImpl();
+ PortletContainerContextImpl portletContainerContext = new PortletContainerContextImpl();
//
PortletContainerLifeCycle portletContainerLifeCycle = portletApplicationLifeCycle.addPortletContainer(portletContainerContext, portletContainerObject);
+ // Needed for the managed callbacks
+ portletContainerContext.managedPortletContainer = portletContainerLifeCycle;
+
// Now create deps
for (String filterRef : containerInfo.getFilterRefs())
{
Modified: modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletContainerContextImpl.java
===================================================================
--- modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletContainerContextImpl.java 2008-02-25 22:53:37 UTC (rev 10110)
+++ modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletContainerContextImpl.java 2008-02-25 23:12:41 UTC (rev 10111)
@@ -23,6 +23,7 @@
package org.jboss.portal.portlet.test;
import org.jboss.portal.portlet.container.PortletContainerContext;
+import org.jboss.portal.portlet.container.managed.ManagedPortletContainer;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -30,4 +31,17 @@
*/
public class PortletContainerContextImpl implements PortletContainerContext
{
+
+ /** . */
+ ManagedPortletContainer managedPortletContainer;
+
+ public void managedStart()
+ {
+ managedPortletContainer.managedStart();
+ }
+
+ public void managedStop()
+ {
+ managedPortletContainer.managedStop();
+ }
}
Modified: modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletFilterContextImpl.java
===================================================================
--- modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletFilterContextImpl.java 2008-02-25 22:53:37 UTC (rev 10110)
+++ modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletFilterContextImpl.java 2008-02-25 23:12:41 UTC (rev 10111)
@@ -23,6 +23,7 @@
package org.jboss.portal.portlet.test;
import org.jboss.portal.portlet.container.PortletFilterContext;
+import org.jboss.portal.portlet.container.managed.ManagedPortletFilter;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -30,4 +31,16 @@
*/
public class PortletFilterContextImpl implements PortletFilterContext
{
+
+ ManagedPortletFilter managedPortletFilter;
+
+ public void managedStart()
+ {
+ managedPortletFilter.managedStart();
+ }
+
+ public void managedStop()
+ {
+ managedPortletFilter.managedStop();
+ }
}
Modified: modules/portlet/trunk/test/src/test/build.xml
===================================================================
--- modules/portlet/trunk/test/src/test/build.xml 2008-02-25 22:53:37 UTC (rev 10110)
+++ modules/portlet/trunk/test/src/test/build.xml 2008-02-25 23:12:41 UTC (rev 10111)
@@ -377,6 +377,7 @@
<package-jsr286-ext-test test="portletresponses"/>
<package-jsr286-ext-test test="dispatcher"/>
<package-jsr286-ext-test test="portletcontext"/>
+ <package-jsr286-ext-test test="portletinterface"/>
<!-- -->
<jar jarfile="${test.temp.lib}/portlet-test-lib.jar">
Added: modules/portlet/trunk/test/src/test/resources/jsr286/ext/portletinterface-war/WEB-INF/portlet.xml
===================================================================
--- modules/portlet/trunk/test/src/test/resources/jsr286/ext/portletinterface-war/WEB-INF/portlet.xml (rev 0)
+++ modules/portlet/trunk/test/src/test/resources/jsr286/ext/portletinterface-war/WEB-INF/portlet.xml 2008-02-25 23:12:41 UTC (rev 10111)
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ JBoss, a division of Red Hat ~
+ ~ Copyright 2006, Red Hat Middleware, LLC, and individual ~
+ ~ contributors as indicated by the @authors tag. See the ~
+ ~ copyright.txt in the distribution for a full listing of ~
+ ~ individual contributors. ~
+ ~ ~
+ ~ This is free software; you can redistribute it and/or modify it ~
+ ~ under the terms of the GNU Lesser General Public License as ~
+ ~ published by the Free Software Foundation; either version 2.1 of ~
+ ~ the License, or (at your option) any later version. ~
+ ~ ~
+ ~ This software is distributed in the hope that it will be useful, ~
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of ~
+ ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ~
+ ~ Lesser General Public License for more details. ~
+ ~ ~
+ ~ You should have received a copy of the GNU Lesser General Public ~
+ ~ License along with this software; if not, write to the Free ~
+ ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA ~
+ ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org. ~
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+
+<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
+ version="2.0">
+
+ <portlet>
+ <portlet-name>UniversalTestPortletA</portlet-name>
+ <portlet-class>org.jboss.portal.test.portlet.framework.UTP1</portlet-class>
+ <supports>
+ <mime-type>text/html</mime-type>
+ </supports>
+ </portlet>
+
+ <portlet>
+ <portlet-name>UniversalTestPortletB</portlet-name>
+ <portlet-class>org.jboss.portal.test.portlet.framework.UTP2</portlet-class>
+ <supports>
+ <mime-type>text/html</mime-type>
+ </supports>
+ </portlet>
+
+</portlet-app>
Added: modules/portlet/trunk/test/src/test/resources/jsr286/ext/portletinterface-war/WEB-INF/web.xml
===================================================================
--- modules/portlet/trunk/test/src/test/resources/jsr286/ext/portletinterface-war/WEB-INF/web.xml (rev 0)
+++ modules/portlet/trunk/test/src/test/resources/jsr286/ext/portletinterface-war/WEB-INF/web.xml 2008-02-25 23:12:41 UTC (rev 10111)
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ JBoss, a division of Red Hat ~
+ ~ Copyright 2006, Red Hat Middleware, LLC, and individual ~
+ ~ contributors as indicated by the @authors tag. See the ~
+ ~ copyright.txt in the distribution for a full listing of ~
+ ~ individual contributors. ~
+ ~ ~
+ ~ This is free software; you can redistribute it and/or modify it ~
+ ~ under the terms of the GNU Lesser General Public License as ~
+ ~ published by the Free Software Foundation; either version 2.1 of ~
+ ~ the License, or (at your option) any later version. ~
+ ~ ~
+ ~ This software is distributed in the hope that it will be useful, ~
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of ~
+ ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ~
+ ~ Lesser General Public License for more details. ~
+ ~ ~
+ ~ You should have received a copy of the GNU Lesser General Public ~
+ ~ License along with this software; if not, write to the Free ~
+ ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA ~
+ ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org. ~
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+
+<!DOCTYPE web-app PUBLIC
+ "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+ "http://java.sun.com/dtd/web-app_2_3.dtd">
+<web-app>
+ <listener>
+ <listener-class>org.jboss.portal.unit.PortletTestSuite</listener-class>
+ </listener>
+</web-app>
Modified: modules/portlet/trunk/test/src/test/resources/portlet-test-war/WEB-INF/jboss-beans.xml
===================================================================
--- modules/portlet/trunk/test/src/test/resources/portlet-test-war/WEB-INF/jboss-beans.xml 2008-02-25 22:53:37 UTC (rev 10110)
+++ modules/portlet/trunk/test/src/test/resources/portlet-test-war/WEB-INF/jboss-beans.xml 2008-02-25 23:12:41 UTC (rev 10111)
@@ -35,6 +35,7 @@
</bean>
<bean name="PortletApplicationDeployer" class="org.jboss.portal.portlet.test.TestPortletApplicationDeployer">
+ <alias>PortletApplicationRegistry</alias>
<property name="servletContainer"><inject bean="ServletContainer"/></property>
<property name="driver"><inject bean="TestDriverServer"/></property>
<property name="portletContainerInvoker"><inject bean="PortletContainerInvoker"/></property>
@@ -70,7 +71,9 @@
</bean>
<!-- Container stack -->
- <bean name="ValveInterceptor" class="org.jboss.portal.portlet.aspects.portlet.ValveInterceptor"/>
+ <bean name="ValveInterceptor" class="org.jboss.portal.portlet.aspects.portlet.ValveInterceptor">
+ <property name="portletApplicationRegistry"><inject bean="PortletApplicationRegistry" state="Instantiated"/></property>
+ </bean>
<bean name="SecureTransportInterceptor" class="org.jboss.portal.portlet.aspects.portlet.SecureTransportInterceptor"/>
<bean name="ContextDispatcherInterceptor"
class="org.jboss.portal.portlet.aspects.portlet.ContextDispatcherInterceptor">
Modified: modules/portlet/trunk/test/src/test/resources/test/remote-jboss-unit.xml
===================================================================
--- modules/portlet/trunk/test/src/test/resources/test/remote-jboss-unit.xml 2008-02-25 22:53:37 UTC (rev 10110)
+++ modules/portlet/trunk/test/src/test/resources/test/remote-jboss-unit.xml 2008-02-25 23:12:41 UTC (rev 10111)
@@ -223,6 +223,10 @@
<class name="org.jboss.unit.remote.driver.RemoteTestDriverClient"/>
<property name="archiveId" value="test-jsr286-ext-portletcontext.war"/>
</generic>
+ <generic>
+ <class name="org.jboss.unit.remote.driver.RemoteTestDriverClient"/>
+ <property name="archiveId" value="test-jsr286-ext-portletinterface.war"/>
+ </generic>
<!--Misc Tests-->
<!--
16 years, 2 months
JBoss Portal SVN: r10110 - modules/web/trunk/web.
by portal-commits@lists.jboss.org
Author: mwringe
Date: 2008-02-25 17:53:37 -0500 (Mon, 25 Feb 2008)
New Revision: 10110
Modified:
modules/web/trunk/web/pom.xml
Log:
Fix dependency issue when run under maven 2.0.8
Modified: modules/web/trunk/web/pom.xml
===================================================================
--- modules/web/trunk/web/pom.xml 2008-02-25 17:18:05 UTC (rev 10109)
+++ modules/web/trunk/web/pom.xml 2008-02-25 22:53:37 UTC (rev 10110)
@@ -21,6 +21,12 @@
<dependency>
<groupId>org.jboss.portal.common</groupId>
<artifactId>common-common</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.codehaus.cargo</groupId>
+ <artifactId>cargo-core-uberjar</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>sun-servlet</groupId>
16 years, 2 months
JBoss Portal SVN: r10109 - branches/JBoss_Portal_Branch_2_7/build.
by portal-commits@lists.jboss.org
Author: thomas.heute(a)jboss.com
Date: 2008-02-25 12:18:05 -0500 (Mon, 25 Feb 2008)
New Revision: 10109
Modified:
branches/JBoss_Portal_Branch_2_7/build/distrib.xml
Log:
Exclude serverl/all and server/minimal in the bundle, include everything else
Modified: branches/JBoss_Portal_Branch_2_7/build/distrib.xml
===================================================================
--- branches/JBoss_Portal_Branch_2_7/build/distrib.xml 2008-02-25 17:14:57 UTC (rev 10108)
+++ branches/JBoss_Portal_Branch_2_7/build/distrib.xml 2008-02-25 17:18:05 UTC (rev 10109)
@@ -318,11 +318,9 @@
</copy>
<copy todir="${portal.build.normal.bundled}">
<fileset dir="${jboss.home}">
- <include name="bin/**"/>
- <include name="client/**"/>
- <include name="docs/**"/>
- <include name="lib/**"/>
- <include name="server/default/**"/>
+ <include name="**"/>
+ <exclude name="server/minimal"/>
+ <exclude name="server/all"/>
</fileset>
</copy>
<copy file="${docs.dir}/readmeFiles/jboss-portal-bin.README" todir="${portal.build.normal.bundled}"/>
16 years, 2 months
JBoss Portal SVN: r10108 - branches/JBoss_Portal_Branch_2_6/build.
by portal-commits@lists.jboss.org
Author: thomas.heute(a)jboss.com
Date: 2008-02-25 12:14:57 -0500 (Mon, 25 Feb 2008)
New Revision: 10108
Modified:
branches/JBoss_Portal_Branch_2_6/build/distrib.xml
Log:
Include all files in the bundle version except minimal and all.
Modified: branches/JBoss_Portal_Branch_2_6/build/distrib.xml
===================================================================
--- branches/JBoss_Portal_Branch_2_6/build/distrib.xml 2008-02-25 13:41:19 UTC (rev 10107)
+++ branches/JBoss_Portal_Branch_2_6/build/distrib.xml 2008-02-25 17:14:57 UTC (rev 10108)
@@ -318,11 +318,9 @@
</copy>
<copy todir="${portal.build.normal.bundled}">
<fileset dir="${jboss.home}">
- <include name="bin/**"/>
- <include name="client/**"/>
- <include name="docs/**"/>
- <include name="lib/**"/>
- <include name="server/default/**"/>
+ <include name="**"/>
+ <exclude name="server/all/**"/>
+ <exclude name="server/minimal/**"/>
</fileset>
</copy>
<copy file="${docs.dir}/readmeFiles/jboss-portal-bin.README" todir="${portal.build.normal.bundled}"/>
16 years, 2 months
JBoss Portal SVN: r10107 - modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/api/portleturl.
by portal-commits@lists.jboss.org
Author: julien(a)jboss.com
Date: 2008-02-25 08:41:19 -0500 (Mon, 25 Feb 2008)
New Revision: 10107
Added:
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/api/portleturl/URLWriteThrowsIOExceptionTestCase.java
Log:
added test case for a writer than throws IOException in baseURL.write()
Added: modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/api/portleturl/URLWriteThrowsIOExceptionTestCase.java
===================================================================
--- modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/api/portleturl/URLWriteThrowsIOExceptionTestCase.java (rev 0)
+++ modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/api/portleturl/URLWriteThrowsIOExceptionTestCase.java 2008-02-25 13:41:19 UTC (rev 10107)
@@ -0,0 +1,87 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2008, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * This is free software; you can redistribute it and/or modify it *
+ * under the terms of the GNU Lesser General Public License as *
+ * published by the Free Software Foundation; either version 2.1 of *
+ * the License, or (at your option) any later version. *
+ * *
+ * This software is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this software; if not, write to the Free *
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org. *
+ ******************************************************************************/
+package org.jboss.portal.test.portlet.jsr286.api.portleturl;
+
+import org.jboss.portal.unit.annotations.TestCase;
+import org.jboss.portal.unit.Assertion;
+import org.jboss.portal.unit.PortletTestCase;
+import org.jboss.portal.unit.PortletTestContext;
+import org.jboss.portal.unit.actions.PortletRenderTestAction;
+import org.jboss.portal.test.portlet.framework.UTP1;
+import org.jboss.unit.driver.DriverResponse;
+import org.jboss.unit.driver.response.EndTestResponse;
+import static org.jboss.unit.api.Assert.*;
+
+import javax.portlet.Portlet;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+import javax.portlet.PortletException;
+import javax.portlet.BaseURL;
+import java.io.IOException;
+import java.io.Writer;
+
+/**
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision: 630 $
+ */
+(a)TestCase(Assertion.API_BASE_URL_2)
+public class URLWriteThrowsIOExceptionTestCase
+{
+ public URLWriteThrowsIOExceptionTestCase(PortletTestCase seq)
+ {
+ seq.bindAction(0, UTP1.RENDER_JOIN_POINT, new PortletRenderTestAction()
+ {
+ protected DriverResponse run(Portlet portlet, RenderRequest request, RenderResponse response, PortletTestContext context) throws PortletException, IOException
+ {
+ BaseURL url = response.createRenderURL();
+
+ //
+ try
+ {
+ url.write(new Writer()
+ {
+ public void write(char cbuf[], int off, int len) throws IOException
+ {
+ throw new IOException();
+ }
+
+ public void flush() throws IOException
+ {
+ }
+
+ public void close() throws IOException
+ {
+ }
+ });
+ fail("Was expecting an IOException to be thrown");
+ }
+ catch (IOException ignore)
+ {
+ }
+
+ //
+ return new EndTestResponse();
+ }
+ });
+ }
+}
16 years, 2 months
JBoss Portal SVN: r10106 - in modules/portlet/trunk: portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api and 14 other directories.
by portal-commits@lists.jboss.org
Author: julien(a)jboss.com
Date: 2008-02-25 07:32:25 -0500 (Mon, 25 Feb 2008)
New Revision: 10106
Added:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/URLFormat.java
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/api/portleturl/
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/api/portleturl/EscapeXMLTestCase.java
modules/portlet/trunk/test/src/test/resources/jsr286/api/portleturl-war/
modules/portlet/trunk/test/src/test/resources/jsr286/api/portleturl-war/WEB-INF/
modules/portlet/trunk/test/src/test/resources/jsr286/api/portleturl-war/WEB-INF/portlet.xml
modules/portlet/trunk/test/src/test/resources/jsr286/api/portleturl-war/WEB-INF/web.xml
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/BaseURLImpl.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/spi/AbstractPortletInvocationContext.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/spi/PortletInvocationContext.java
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/portlet/support/spi/PortletInvocationContextSupport.java
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/Assertion.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/PortletURLRenderer.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/TestPortletInvocationContext.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/ControllerFilter.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/taglib/PortletURLTag.java
modules/portlet/trunk/test/src/test/build.xml
modules/portlet/trunk/test/src/test/resources/test/remote-jboss-unit.xml
Log:
- support URL streaming in PortletInvocationContext
- introduced URLFormat to gather all the options for formatting an URL
- test case for XML escaping in BaseURL.write(...) method
Added: modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/URLFormat.java
===================================================================
--- modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/URLFormat.java (rev 0)
+++ modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/URLFormat.java 2008-02-25 12:32:25 UTC (rev 10106)
@@ -0,0 +1,73 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2008, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * This is free software; you can redistribute it and/or modify it *
+ * under the terms of the GNU Lesser General Public License as *
+ * published by the Free Software Foundation; either version 2.1 of *
+ * the License, or (at your option) any later version. *
+ * *
+ * This software is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this software; if not, write to the Free *
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org. *
+ ******************************************************************************/
+package org.jboss.portal.portlet;
+
+/**
+ * Defines how a container URL should be formatted when rendered.
+ *
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision: 630 $
+ */
+public class URLFormat
+{
+
+ /** . */
+ private final Boolean wantSecure;
+
+ /** . */
+ private final Boolean wantAuthenticated;
+
+ /** . */
+ private final Boolean wantRelative;
+
+ /** . */
+ private final Boolean wantEscapeXML;
+
+ public URLFormat(Boolean wantSecure, Boolean wantAuthenticated, Boolean wantRelative, Boolean wantEscapeXML)
+ {
+ this.wantSecure = wantSecure;
+ this.wantAuthenticated = wantAuthenticated;
+ this.wantRelative = wantRelative;
+ this.wantEscapeXML = wantEscapeXML;
+ }
+
+ public Boolean getWantSecure()
+ {
+ return wantSecure;
+ }
+
+ public Boolean getWantAuthenticated()
+ {
+ return wantAuthenticated;
+ }
+
+ public Boolean getWantRelative()
+ {
+ return wantRelative;
+ }
+
+ public Boolean getWantEscapeXML()
+ {
+ return wantEscapeXML;
+ }
+}
Modified: modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/BaseURLImpl.java
===================================================================
--- modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/BaseURLImpl.java 2008-02-25 10:16:10 UTC (rev 10105)
+++ modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/BaseURLImpl.java 2008-02-25 12:32:25 UTC (rev 10106)
@@ -25,8 +25,7 @@
import org.jboss.portal.portlet.invocation.PortletInvocation;
import org.jboss.portal.portlet.spi.PortletInvocationContext;
import org.jboss.portal.portlet.impl.jsr168.PortletApplicationImpl;
-import org.jboss.portal.common.io.WriterCharWriter;
-import org.jboss.portal.common.text.EntityEncoder;
+import org.jboss.portal.portlet.URLFormat;
import javax.portlet.BaseURL;
import javax.portlet.PortletSecurityException;
@@ -43,13 +42,36 @@
{
/** . */
+ private static final URLFormat[][] FORMATS = {
+ {
+ new URLFormat(null, null, true, null),
+ new URLFormat(false, null, true, null),
+ new URLFormat(true, null, true, null)
+ },
+ {
+ new URLFormat(null, null, true, true),
+ new URLFormat(false, null, true, true),
+ new URLFormat(true, null, true, true)
+ }
+ };
+
+ /** . */
+ private static final int SECURE_NOT_DETERMINED = 0;
+
+ /** . */
+ private static final int NOT_SECURE = 1;
+
+ /** . */
+ private static final int SECURE = 2;
+
+ /** . */
protected final PortletInvocation inv;
/** . */
protected final PortletRequestImpl preq;
/** . */
- protected Boolean secure;
+ protected int secure;
/** . */
protected final boolean filterable;
@@ -62,6 +84,7 @@
this.inv = invocation;
this.preq = preq;
this.filterable = filterable;
+ this.secure= SECURE_NOT_DETERMINED;
}
protected BaseURLImpl(BaseURLImpl original)
@@ -69,6 +92,7 @@
this.inv = original.inv;
this.preq = original.preq;
this.filterable = false;
+ this.secure= SECURE_NOT_DETERMINED;
}
/** @throws IllegalArgumentException if the name is null */
@@ -92,7 +116,7 @@
public void setSecure(boolean secure) throws PortletSecurityException
{
- this.secure = Boolean.valueOf(secure);
+ this.secure = secure ? SECURE : NOT_SECURE;
}
public Map<String, String[]> getParameterMap()
@@ -101,23 +125,6 @@
return url.getParameters();
}
- public void write(Writer writer) throws IOException
- {
- writer.write(toString());
- }
-
- public void write(Writer writer, boolean b) throws IOException
- {
- if (b)
- {
- EntityEncoder.FULL.encode(toString(), new WriterCharWriter(writer));
- }
- else
- {
- EntityEncoder.BASIC.encode(toString(), new WriterCharWriter(writer));
- }
- }
-
public void addProperty(String s, String s1)
{
if (s == null)
@@ -139,7 +146,7 @@
//TODO:
}
- public String toString()
+ private InternalContainerURL blah()
{
PortletURLGenerationListener listener = ((PortletApplicationImpl)preq.container.getPortletApplication()).getListener(PortletURLGenerationListener.class);
@@ -158,10 +165,43 @@
}
//
+ return url;
+ }
+
+ public String toString()
+ {
+ InternalContainerURL url = blah();
+
+ //
+ URLFormat format = FORMATS[0][secure];
+
+ //
PortletInvocationContext responseContext = inv.getContext();
- return responseContext.renderURL(url, secure, null, true);
+
+ //
+ return responseContext.renderURL(url, format);
}
+ public void write(Writer writer) throws IOException
+ {
+ write(writer, false);
+ }
+
+ public void write(Writer writer, boolean b) throws IOException
+ {
+ InternalContainerURL url = blah();
+
+ //
+ URLFormat format = FORMATS[b ? 1 : 0][secure];
+
+ //
+ PortletInvocationContext responseContext = inv.getContext();
+
+ //
+ responseContext.renderURL(writer, url, format);
+ }
+
+
protected abstract void filter(PortletURLGenerationListener listener);
protected abstract BaseURLImpl createClone();
Modified: modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/spi/AbstractPortletInvocationContext.java
===================================================================
--- modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/spi/AbstractPortletInvocationContext.java 2008-02-25 10:16:10 UTC (rev 10105)
+++ modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/spi/AbstractPortletInvocationContext.java 2008-02-25 12:32:25 UTC (rev 10106)
@@ -25,9 +25,13 @@
import org.jboss.portal.common.invocation.AbstractInvocationContext;
import org.jboss.portal.common.util.MarkupInfo;
import org.jboss.portal.portlet.spi.PortletInvocationContext;
+import org.jboss.portal.portlet.ContainerURL;
+import org.jboss.portal.portlet.URLFormat;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import java.io.Writer;
+import java.io.IOException;
/**
* An abstract implementation that relies on the a request and response provided by the client (i.e the portal).
@@ -84,4 +88,18 @@
{
return markupInfo;
}
+
+ /**
+ * Delegates the URL rendendition to the method {@link #renderURL(org.jboss.portal.portlet.ContainerURL,org.jboss.portal.portlet.URLFormat)} and
+ * then invoke the {@link java.io.Writer#write(String)} method with the returned result.
+ *
+ * @see org.jboss.portal.portlet.spi.PortletInvocationContext#renderURL(org.jboss.portal.portlet.ContainerURL, org.jboss.portal.portlet.URLFormat)
+ */
+ public void renderURL(Writer writer, ContainerURL containerURL, URLFormat format) throws IOException
+ {
+ String renderedURL = renderURL(containerURL, format);
+
+ //
+ writer.write(renderedURL);
+ }
}
Modified: modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/spi/PortletInvocationContext.java
===================================================================
--- modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/spi/PortletInvocationContext.java 2008-02-25 10:16:10 UTC (rev 10105)
+++ modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/spi/PortletInvocationContext.java 2008-02-25 12:32:25 UTC (rev 10106)
@@ -29,7 +29,11 @@
import org.jboss.portal.common.util.ParameterMap;
import org.jboss.portal.portlet.StateString;
import org.jboss.portal.portlet.ContainerURL;
+import org.jboss.portal.portlet.URLFormat;
+import java.io.IOException;
+import java.io.Writer;
+
/**
* Contract that defines what input/services the caller of a portlet container must provide.
*
@@ -67,10 +71,18 @@
* Renders a container URL.
*
* @param containerURL the portlet url
- * @param wantSecure if the url should be secure
- * @param wantAuthenticated if the url should be authenticated
- * @param relative if the url should be relative
+ * @param format the url format
* @return the rendered url
*/
- String renderURL(ContainerURL containerURL, Boolean wantSecure, Boolean wantAuthenticated, boolean relative);
+ String renderURL(ContainerURL containerURL, URLFormat format);
+
+ /**
+ * Renders a container URL.
+ *
+ * @param writer the writer
+ * @param containerURL the portlet url
+ * @param format the url format
+ * @throws IOException any IOException thrown by the writer
+ */
+ void renderURL(Writer writer, ContainerURL containerURL, URLFormat format) throws IOException;
}
Modified: modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/portlet/support/spi/PortletInvocationContextSupport.java
===================================================================
--- modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/portlet/support/spi/PortletInvocationContextSupport.java 2008-02-25 10:16:10 UTC (rev 10105)
+++ modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/portlet/support/spi/PortletInvocationContextSupport.java 2008-02-25 12:32:25 UTC (rev 10106)
@@ -22,15 +22,15 @@
******************************************************************************/
package org.jboss.portal.portlet.support.spi;
-import org.jboss.portal.Mode;
-import org.jboss.portal.WindowState;
import org.jboss.portal.common.invocation.AbstractInvocationContext;
import org.jboss.portal.common.util.MarkupInfo;
-import org.jboss.portal.common.util.ParameterMap;
-import org.jboss.portal.portlet.StateString;
import org.jboss.portal.portlet.ContainerURL;
+import org.jboss.portal.portlet.URLFormat;
import org.jboss.portal.portlet.spi.PortletInvocationContext;
+import java.io.Writer;
+import java.io.IOException;
+
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
* @version $Revision: 5064 $
@@ -48,8 +48,13 @@
throw new UnsupportedOperationException();
}
- public String renderURL(ContainerURL containerURL, Boolean wantSecure, Boolean wantAuthenticated, boolean relative)
+ public String renderURL(ContainerURL containerURL, URLFormat format)
{
throw new UnsupportedOperationException();
}
+
+ public void renderURL(Writer writer, ContainerURL containerURL, URLFormat format) throws IOException
+ {
+ throw new UnsupportedOperationException();
+ }
}
Added: modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/api/portleturl/EscapeXMLTestCase.java
===================================================================
--- modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/api/portleturl/EscapeXMLTestCase.java (rev 0)
+++ modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/api/portleturl/EscapeXMLTestCase.java 2008-02-25 12:32:25 UTC (rev 10106)
@@ -0,0 +1,126 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2008, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * This is free software; you can redistribute it and/or modify it *
+ * under the terms of the GNU Lesser General Public License as *
+ * published by the Free Software Foundation; either version 2.1 of *
+ * the License, or (at your option) any later version. *
+ * *
+ * This software is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this software; if not, write to the Free *
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org. *
+ ******************************************************************************/
+package org.jboss.portal.test.portlet.jsr286.api.portleturl;
+
+import org.jboss.portal.unit.annotations.TestCase;
+import org.jboss.portal.unit.Assertion;
+import org.jboss.portal.unit.PortletTestCase;
+import org.jboss.portal.unit.PortletTestContext;
+import org.jboss.portal.unit.actions.PortletRenderTestAction;
+import org.jboss.portal.test.portlet.framework.UTP1;
+import org.jboss.unit.driver.DriverResponse;
+import org.jboss.unit.driver.response.EndTestResponse;
+import org.jboss.unit.remote.driver.handler.http.response.InvokeGetResponse;
+
+import static org.jboss.unit.api.Assert.*;
+
+import javax.portlet.Portlet;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+import javax.portlet.PortletException;
+import javax.portlet.PortletURL;
+import java.io.IOException;
+import java.io.Writer;
+
+/**
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision: 630 $
+ */
+(a)TestCase(Assertion.API_BASE_URL_1)
+public class EscapeXMLTestCase
+{
+
+ public EscapeXMLTestCase(PortletTestCase seq)
+ {
+ seq.bindAction(0, UTP1.RENDER_JOIN_POINT, new PortletRenderTestAction()
+ {
+ protected DriverResponse run(Portlet portlet, RenderRequest request, RenderResponse response, PortletTestContext context) throws PortletException, IOException
+ {
+ response.setContentType("text/html");
+ Writer writer = response.getWriter();
+
+ //
+ PortletURL url = response.createRenderURL();
+
+ //
+ url.setParameter("foo", "bar");
+
+ //
+ writer.write("@BEFORE_ESCAPED@");
+ url.write(writer, true);
+ writer.write("@AFTER_ESCAPED@");
+
+ //
+ writer.write("@BEFORE_NON_ESCAPED@");
+ url.write(writer, false);
+ writer.write("@AFTER_NON_ESCAPED@");
+
+ //
+ return new InvokeGetResponse(response.createRenderURL().toString());
+ }
+ });
+ seq.bindAction(1, UTP1.RENDER_JOIN_POINT, new PortletRenderTestAction()
+ {
+ protected DriverResponse run(Portlet portlet, RenderRequest request, RenderResponse response, PortletTestContext context) throws PortletException, IOException
+ {
+ byte[] content = context.getResponseBody();
+ String text = new String(content, "UTF-8");
+
+ //
+ String escapedURL = getURL(text, "ESCAPED");
+ for (int pos = escapedURL.indexOf('&'); pos != -1; pos = escapedURL.indexOf('&', pos + 1))
+ {
+ String s = escapedURL.substring(pos, pos + "&".length());
+ assertEquals("&", s);
+ }
+
+ String nonEscapedURL = getURL(text, "NON_ESCAPED");
+ for (int pos = nonEscapedURL.indexOf('&'); pos != -1; pos = nonEscapedURL.indexOf('&', pos + 1))
+ {
+ int end = Math.min(pos + "&".length(), nonEscapedURL.length());
+ String s = nonEscapedURL.substring(pos, end);
+ String comparison = "&".substring(0, end - pos);
+ assertNotEquals(comparison, s);
+ }
+
+ //
+ return new EndTestResponse();
+ }
+ });
+
+
+ }
+
+ private String getURL(String text, String type)
+ {
+ int from = text.indexOf("@BEFORE_" + type + "@");
+ assertNotEquals(-1, from);
+
+ //
+ int to = text.indexOf("@AFTER_" + type + "@");
+ assertNotEquals(-1, to);
+
+ //
+ return text.substring(from + ("@BEFORE_" + type + "@").length(), to);
+ }
+}
Modified: modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/Assertion.java
===================================================================
--- modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/Assertion.java 2008-02-25 10:16:10 UTC (rev 10105)
+++ modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/Assertion.java 2008-02-25 12:32:25 UTC (rev 10106)
@@ -22,6 +22,9 @@
******************************************************************************/
package org.jboss.portal.unit;
+import javax.portlet.PortletURL;
+import javax.portlet.BaseURL;
+
/**
* Define TCK assertions.
*
@@ -431,346 +434,346 @@
JSR168_1000(new TCK(1000), "todo ???"),
// PLT.2 Overview
- JSR286_1(new TCK(1), Status.specUntestable(""), "PLT.2.5", "Portlet V2.0 containers must support deploying JSR 168 portlets and the JSR 168 deployment descriptor"),
+ JSR286_1(new TCK(1, "PLT.2.5"), Status.specUntestable(""), "Portlet V2.0 containers must support deploying JSR 168 portlets and the JSR 168 deployment descriptor"),
// PLT.5 The Portlet Interface and Additional Life
- JSR286_2(new TCK(2), Status.specUntestable(""), "PLT.5.1", "For a portlet, not hosted in a distributed environment " +
+ JSR286_2(new TCK(2, "PLT.5.1"), Status.specUntestable(""), "For a portlet, not hosted in a distributed environment " +
"(the default), the portlet container must instantiate and use only one portlet object per portlet definition"),
- JSR286_3(new TCK(3), Status.specUntestable(""), "PLT.5.1", "In the case where a portlet is deployed as part of a" +
+ JSR286_3(new TCK(3, "PLT.5.1"), Status.specUntestable(""), "In the case where a portlet is deployed as part of a" +
" portlet application marked as distributable, in the web.xml deployment descriptor, a portlet container may " +
"instantiate only one portlet object per portlet definition -in the deployment descriptor- per virtual machine (VM)."),
- JSR286_4(new TCK(4), "PLT.5.2.1", "The portlet container must load the portlet class using the same ClassLoader " +
+ JSR286_4(new TCK(4, "PLT.5.2.1"), "The portlet container must load the portlet class using the same ClassLoader " +
"the servlet container uses for the web application part of the portlet application."),
- JSR286_5(new TCK(5), "PLT.5.2.2", "After the portlet object is instantiated, the portlet container must initialize " +
+ JSR286_5(new TCK(5, "PLT.5.2.2"), "After the portlet object is instantiated, the portlet container must initialize " +
"the portlet before invoking it to handle requests."),
- JSR286_6(new TCK(6), "PLT.5.2.2.1", "During initialization, the portlet object may throw an UnavailableException " +
+ JSR286_6(new TCK(6, "PLT.5.2.2.1"), "During initialization, the portlet object may throw an UnavailableException " +
"or a PortletException. In this case, the portlet container must not place the portlet object into active " +
"service and it must release the portlet object."),
- JSR286_7(new TCK(7), "PLT.5.2.2.1", "The destroy method must not be called because the initialization is considered " +
+ JSR286_7(new TCK(7, "PLT.5.2.2.1"), "The destroy method must not be called because the initialization is considered " +
"unsuccessful."),
- JSR286_8(new TCK(8), "PLT.5.2.2.1", "The portlet container may reattempt to instantiate and initialize the portlets " +
+ JSR286_8(new TCK(8, "PLT.5.2.2.1"), "The portlet container may reattempt to instantiate and initialize the portlets " +
"at any time after a failure. The exception to this rule is when an UnavailableException indicates a minimum time " +
"of unavailability. When this happens the portlet container must wait for 30 the specified time to pass before " +
"creating and initializing a new portlet object."),
- JSR286_9(new TCK(9), "PLT.5.2.2.1", "A RuntimeException thrown during initialization must be handled as a " +
+ JSR286_9(new TCK(9, "PLT.5.2.2.1"), "A RuntimeException thrown during initialization must be handled as a " +
"PortletException."),
- JSR286_10(new TCK(10), Status.specUntestable(""), "PLT.5.2.3", "Once the destroy method is called on a portlet " +
+ JSR286_10(new TCK(10, "PLT.5.2.3"), Status.specUntestable(""), "Once the destroy method is called on a portlet " +
"object, the portlet container must not route any requests to that portlet object."),
- JSR286_11(new TCK(11), Status.specUntestable(""), "PLT.5.2.3", "If the portlet container needs to enable the " +
+ JSR286_11(new TCK(11, "PLT.5.2.3"), Status.specUntestable(""), "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."),
- JSR286_12(new TCK(12), Status.specUntestable(""), "PLT.5.2.3", "If the portlet object throws a RuntimeException " +
+ JSR286_12(new TCK(12, "PLT.5.2.3"), Status.specUntestable(""), "If the portlet object throws a RuntimeException " +
"within the execution of the destroy method the portlet container must consider the portlet object successfully " +
"destroyed."),
- JSR286_13(new TCK(13), Status.specUntestable(""), "PLT.5.2.3", "After the destroy method completes, the portlet " +
+ JSR286_13(new TCK(13, "PLT.5.2.3"), Status.specUntestable(""), "After the destroy method completes, the portlet " +
"container must release the portlet object so that it is eligible for garbage collection."),
- JSR286_14(new TCK(14), "PLT.5.4", "If the client request is triggered by an action URL, the portal/portlet-container " +
+ JSR286_14(new TCK(14, "PLT.5.4"), "If the client request is triggered by an action URL, the portal/portlet-container " +
"must first trigger the action request by invoking the processAction method of the targeted portlet."),
- JSR286_15(new TCK(15), "PLT.5.4", "The portal/portlet-container must wait until the action request finishes. Then, " +
+ JSR286_15(new TCK(15, "PLT.5.4"), "The portal/portlet-container must wait until the action request finishes. Then, " +
"the portal/portlet-container should call the processEvent methods of the event receiving portlets and after the " +
"event processing is finished must trigger the render request by invoking the render method for all the portlets " +
"in the portal page with the possible exception of portlets for which their content is being cached."),
- JSR286_16(new TCK(16), "PLT.5.4", "If the client request is triggered by a render URL, the portal/portlet-container " +
+ JSR286_16(new TCK(16, "PLT.5.4"), "If the client request is triggered by a render URL, the portal/portlet-container " +
"must invoke the render method for all the portlets in the portal page with the possible exception of portlets " +
"for which their content is being cached."),
- JSR286_17(new TCK(17), "PLT.5.4", "If the client request is triggered by a resource URL, the portal/portlet-container " +
+ JSR286_17(new TCK(17, "PLT.5.4"), "If the client request is triggered by a resource URL, the portal/portlet-container " +
"must invoke the serveResource method of the target portlet with the possible exception of content that has a " +
"valid cache entry."),
- JSR286_18(new TCK(18), "PLT.5.4.1", "If the portlet issues a redirection, when the processAction method concludes, " +
+ JSR286_18(new TCK(18, "PLT.5.4.1"), "If the portlet issues a redirection, when the processAction method concludes, " +
"the portal/portlet-container must send the redirection back to the user agent"),
- JSR286_19(new TCK(19), "PLT.5.4.5.4", "If no matching annotated method is found GenericPortlet will dispatch to " +
+ JSR286_19(new TCK(19, "PLT.5.4.5.4"), "If no matching annotated method is found GenericPortlet will dispatch to " +
"the following methods: doView for handling VIEW requests"),
- JSR286_20(new TCK(20), "PLT.5.4.5.4", "If no matching annotated method is found GenericPortlet will dispatch to " +
+ JSR286_20(new TCK(20, "PLT.5.4.5.4"), "If no matching annotated method is found GenericPortlet will dispatch to " +
"the following methods: doEdit for handling EDIT requests"),
- JSR286_21(new TCK(21), "PLT.5.4.5.4", "If no matching annotated method is found GenericPortlet will dispatch to " +
+ JSR286_21(new TCK(21, "PLT.5.4.5.4"), "If no matching annotated method is found GenericPortlet will dispatch to " +
"the following methods: doHelp for handling HELP requests"),
- JSR286_22(new TCK(22), "PLT.5.4.5.4", "If the window state of the portlet (see PLT.9 Window States Chapter) is " +
+ JSR286_22(new TCK(22, "PLT.5.4.5.4"), "If the window state of the portlet (see PLT.9 Window States Chapter) is " +
"MINIMIZED, the render method of the GenericPortlet does not invoke any of the portlet mode rendering methods"),
- JSR286_23(new TCK(23), "PLT.5.4.7", "If a portlet throws an exception in the processAction or processEvent method, " +
+ JSR286_23(new TCK(23, "PLT.5.4.7"), "If a portlet throws an exception in the processAction or processEvent method, " +
"all operations on the ActionResponse must be ignored including set events."),
- JSR286_24(new TCK(24), Status.specUntestable(""), "PLT.5.4.7", "If a permanent unavailability is indicated by the " +
+ JSR286_24(new TCK(24, "PLT.5.4.7"), Status.specUntestable(""), "If a permanent unavailability is indicated by the " +
"UnavailableException, the portlet container must remove the portlet from service immediately, call the portlet’s " +
"destroy method, and release the portlet object"),
- JSR286_25(new TCK(25), "PLT.5.4.7", "A RuntimeException thrown during the request handling must be handled as a " +
+ JSR286_25(new TCK(25, "PLT.5.4.7"), "A RuntimeException thrown during the request handling must be handled as a " +
"PortletException."),
// PLT.6 Portlet Config
- JSR286_26(new TCK(26), "PLT.6.2", "If the root resource bundle does not contain the resources for these values and " +
+ JSR286_26(new TCK(26, "PLT.6.2"), "If the root resource bundle does not contain the resources for these values and " +
"the values are defined inline, the portlet container must add the inline values as resources of the root " +
"resource bundle."),
- JSR286_27(new TCK(27), "PLT.6.2", "If the portlet definition does not define a resource bundle and the information" +
+ JSR286_27(new TCK(27, "PLT.6.2"), "If the portlet definition does not define a resource bundle and the information" +
" is defined inline in the deployment descriptor, the portlet container must create a ResourceBundle and populate" +
" it, with the inline values, using the keys defined in the PLT.25.10 Resource Bundles Section."),
- JSR286_28(new TCK(28), "PLT.6.3", "The getDefaultNamespace method of the PortletConfig interface returns the " +
+ JSR286_28(new TCK(28, "PLT.6.3"), "The getDefaultNamespace method of the PortletConfig interface returns the " +
"default namespace for events and public render parameters set in the portlet deployment descriptor with " +
"the default-namespace element, or the XML default namespace XMLConstants.NULL_NS_URI if no default namespace" +
" is provided in the portlet deployment descriptor."),
- JSR286_29(new TCK(29), "PLT.6.4", "The getPublicRenderParameterNames method of the PortletConfig interface returns" +
+ JSR286_29(new TCK(29, "PLT.6.4"), "The getPublicRenderParameterNames method of the PortletConfig interface returns" +
" the public render parameter names found in the portlet definition in the deployment descriptor with the " +
"supported-public-render-parameter element or an empty enumeration if no public render parameters are defined" +
" for the current portlet definition."),
- JSR286_30(new TCK(30), "PLT.6.5", "The getPublishingEventQNames method of the PortletConfig interface returns the" +
+ JSR286_30(new TCK(30, "PLT.6.5"), "The getPublishingEventQNames method of the PortletConfig interface returns the" +
" publishing event QNames found in the portlet definition in the deployment descriptor with the " +
"supported-publishing-event element or an empty enumeration if no publishing events are defined for the " +
"current portlet definition."),
- JSR286_31(new TCK(31), "PLT.6.5", "If the event was defined using the name element instead of the qname element " +
+ JSR286_31(new TCK(31, "PLT.6.5"), "If the event was defined using the name element instead of the qname element " +
"the defined default namespace must be added as namespace for the returned QName."),
- JSR286_32(new TCK(32), "PLT.6.6", "The getProcessingEventQNames method of the PortletConfig interface returns " +
+ JSR286_32(new TCK(32, "PLT.6.6"), "The getProcessingEventQNames method of the PortletConfig interface returns " +
"the processing event QNames found in the portlet definition in the deployment descriptor with the " +
"supported-processing-event element or an empty enumeration if no processing events are defined for the current" +
" portlet definition."),
- JSR286_33(new TCK(33), "PLT.6.6", "If the event was defined using the name element instead of the qname element the" +
+ JSR286_33(new TCK(33, "PLT.6.6"), "If the event was defined using the name element instead of the qname element the" +
" defined default namespace must be added as namespace for the returned Qname."),
- JSR286_34(new TCK(34), "PLT.6.7", "The getSupportedLocales method of the PortletConfig interface returns the " +
+ JSR286_34(new TCK(34, "PLT.6.7"), "The getSupportedLocales method of the PortletConfig interface returns the " +
"supported locales found in the portlet definition in the deployment descriptor with the supported-locale " +
"element or an empty enumeration if no supported locales are defined for the current portlet definition."),
// PLT,7 Portlet URLs
- JSR286_35(new TCK(35), "PLT.7.1", "The portal/portlet-container must not invoke the processAction method of the " +
+ JSR286_35(new TCK(35, "PLT.7.1"), "The portal/portlet-container must not invoke the processAction method of the " +
"targeted portlet of a render URL."),
- JSR286_36(new TCK(36), "PLT.7.1", "The portal/portlet-container must ensure that all the parameters set when " +
+ JSR286_36(new TCK(36, "PLT.7.1"), "The portal/portlet-container must ensure that all the parameters set when " +
"constructing the render URL become render parameters of the subsequent render requests for the portlet."),
- JSR286_37(new TCK(37), "PLT.7.1.1", "A call to any of the setParameter methods must replace any parameter with " +
+ JSR286_37(new TCK(37, "PLT.7.1.1"), "A call to any of the setParameter methods must replace any parameter with " +
"the same name previously set."),
- JSR286_38(new TCK(38), "PLT.7.1.1", "All the parameters a portlet adds to a BaseURL object must be made available " +
+ JSR286_38(new TCK(38, "PLT.7.1.1"), "All the parameters a portlet adds to a BaseURL object must be made available " +
"to the portlet as request parameters."),
- JSR286_39(new TCK(39), "PLT.7.1.1", "The portlet-container must “x-www-form-urlencoded” encode parameter names and " +
+ JSR286_39(new TCK(39, "PLT.7.1.1"), "The portlet-container must “x-www-form-urlencoded” encode parameter names and " +
"values added to a BaseURL object."),
- JSR286_40(new TCK(40), "PLT.7.1.1", "If a portal/portlet-container encodes additional information as parameters, it " +
+ JSR286_40(new TCK(40, "PLT.7.1.1"), "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."),
- JSR286_41(new TCK(41), "PLT.7.1.2", "A portlet cannot create a portlet URL using a portlet mode that is not defined " +
+ JSR286_41(new TCK(41, "PLT.7.1.2"), "A portlet cannot create a portlet URL using a portlet mode that is not defined " +
"as supported by the portlet or that the user it is not allowed to use. The setPortletMode methods must throw a " +
"PortletModeException in that situation."),
- JSR286_42(new TCK(42), "PLT.7.1.2", "The change of portlet mode must be effective for the request triggered by the " +
+ JSR286_42(new TCK(42, "PLT.7.1.2"), "The change of portlet mode must be effective for the request triggered by the " +
"portlet URL."),
- JSR286_43(new TCK(43), "PLT.7.1.2", "If the portlet mode is not set for a URL, it must have the portlet mode of the " +
+ JSR286_43(new TCK(43, "PLT.7.1.2"), "If the portlet mode is not set for a URL, it must have the portlet mode of the " +
"current request as default."),
- JSR286_44(new TCK(45), "PLT.7.1.2", "A portlet cannot create a portlet URL using a window state that is not supported " +
+ JSR286_44(new TCK(45, "PLT.7.1.2"), "A portlet cannot create a portlet URL using a window state that is not supported " +
"by the portlet container. The setWindowState method must throw a WindowStateException if that is the case."),
- JSR286_45(new TCK(44), "PLT.7.1.2", "If the window state is not set for a URL, it must have the window state of the " +
+ JSR286_45(new TCK(44, "PLT.7.1.2"), "If the window state is not set for a URL, it must have the window state of the " +
"current request as default."),
- JSR286_46(new TCK(46), "PLT.7.1.3", "If setSecure is called with true, the transport for the request triggered with " +
+ JSR286_46(new TCK(46, "PLT.7.1.3"), "If setSecure is called with true, the transport for the request triggered with " +
"this URL must be secure (i.e. HTTPS)."),
- JSR286_47(new TCK(47), "PLT.7.2.1", "If the portlet application has specified one or more PortletURLGenerationListener " +
+ JSR286_47(new TCK(47, "PLT.7.2.1"), "If the portlet application has specified one or more PortletURLGenerationListener " +
"classes in the portlet deployment descriptor the portlet container must call: the method filterActionURL method for " +
"all action URLs before executing the write or toString method of these action URLs"),
- JSR286_48(new TCK(48), "PLT.7.2.1", "If the portlet application has specified one or more PortletURLGenerationListener " +
+ JSR286_48(new TCK(48, "PLT.7.2.1"), "If the portlet application has specified one or more PortletURLGenerationListener " +
"classes in the portlet deployment descriptor the portlet container must call: the method filterRenderURL method " +
"for all render URLs before executing the write or toString method of these render URLs"),
- JSR286_49(new TCK(49), "PLT.7.2.1", "If the portlet application has specified one or more PortletURLGenerationListener " +
+ JSR286_49(new TCK(49, "PLT.7.2.1"), "If the portlet application has specified one or more PortletURLGenerationListener " +
"classes in the portlet deployment descriptor the portlet container must call: the method filterResourceURL method " +
"for all resource URLs before executing the write or toString method of these resource URLs"),
- JSR286_50(new TCK(50), "PLT.7.2.1", "The portlet container must provide the PortletURL or ResourceURL to generate to " +
+ JSR286_50(new TCK(50, "PLT.7.2.1"), "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."),
- JSR286_51(new TCK(51), "PLT.7.2.2", "If more than one listener is registered the portlet container must chain the " +
+ JSR286_51(new TCK(51, "PLT.7.2.2"), "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."),
// PLT.8 Portlet Modes
- JSR286_52(new TCK(52), "PLT.8.5", "If no matching annotated method is found GenericPortlet will dispatch to the " +
+ JSR286_52(new TCK(52, "PLT.8.5"), "If no matching annotated method is found GenericPortlet will dispatch to the " +
"doView, doEdit or doHelp method depending on the portlet mode indicated in the request using the doDispatch " +
"method or throws a PortletException if the mode is not VIEW, EDIT, or HELP."),
- JSR286_53(new TCK(53), "PLT.8.6", "As all portlets must support the VIEW portlet mode, VIEW does not have to be " +
+ JSR286_53(new TCK(53, "PLT.8.6"), "As all portlets must support the VIEW portlet mode, VIEW does not have to be " +
"indicated."),
- JSR286_54(new TCK(54), "PLT.8.6", "The portlet must not be invoked in a portlet mode that has not been declared " +
+ JSR286_54(new TCK(54, "PLT.8.6"), "The portlet must not be invoked in a portlet mode that has not been declared " +
"as supported for a given markup type."),
- JSR286_55(new TCK(55), Status.specUntestable(""), "PLT.8.6", "The portlet container must ignore all references to " +
+ JSR286_55(new TCK(55, "PLT.8.6"), Status.specUntestable(""), "The portlet container must ignore all references to " +
"custom portlet modes that are not supported by the portal implementation, or that have no mapping to portlet " +
"modes supported by the portal."),
// PLT.9 Window States
- JSR286_56(new TCK(56), "PLT.9.4", "If a custom window state defined in the deployment descriptor is not mapped to " +
+ JSR286_56(new TCK(56, "PLT.9.4"), "If a custom window state defined in the deployment descriptor is not mapped to " +
"a custom window state provided by the portal, portlets must not be invoked in that window state."),
- JSR286_57(new TCK(57), "PLT.9.5", "As all portlets must at least support the pre-defined window states NORMAL, " +
+ JSR286_57(new TCK(57, "PLT.9.5"), "As all portlets must at least support the pre-defined window states NORMAL, " +
"MAXIMIZED, MINIMIZED, these window states do not have to be indicated."),
- JSR286_58(new TCK(58), Status.specUntestable(""), "PLT.9.5", "The portlet container must ignore all references " +
+ JSR286_58(new TCK(58, "PLT.9.5"), Status.specUntestable(""), "The portlet container must ignore all references " +
"to custom window states that are not supported by the portal implementation, or that have no mapping to window " +
"states supported by the portal"),
// PLT.10 Portlet Context
- JSR286_59(new TCK(59), Status.specUntestable(""), "PLT.10.1", "There is one instance of the PortletContext interface " +
+ JSR286_59(new TCK(59, "PLT.10.1"), Status.specUntestable(""), "There is one instance of the PortletContext interface " +
"associated with each portlet application deployed into a portlet container."),
- JSR286_60(new TCK(60), Status.specUntestable(""), "PLT.10.1", "In cases where the container is distributed over many " +
+ JSR286_60(new TCK(60, "PLT.10.1"), Status.specUntestable(""), "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."),
- JSR286_61(new TCK(61), "PLT.10.3", "The initialization parameters accessible through the PortletContext must be the " +
+ JSR286_61(new TCK(61, "PLT.10.3"), "The initialization parameters accessible through the PortletContext must be the " +
"same that are accessible through the ServletContext of the portlet application."),
- JSR286_62(new TCK(62), "PLT.10.3", "A direct consequence of this is that data stored in the ServletContext by " +
+ JSR286_62(new TCK(62, "PLT.10.3"), "A direct consequence of this is that data stored in the ServletContext by " +
"servlets or JSPs is accessible to portlets through the PortletContext and vice versa."),
- JSR286_63(new TCK(63), "PLT.10.3", "The PortletContext must offer access to the same set of resources the " +
+ JSR286_63(new TCK(63, "PLT.10.3"), "The PortletContext must offer access to the same set of resources the " +
"ServletContext exposes."),
- JSR286_64(new TCK(64), "PLT.10.3", "It must be accessible as a context attribute using the same constant " +
+ JSR286_64(new TCK(64, "PLT.10.3"), "It must be accessible as a context attribute using the same constant " +
"defined in the Servlet Specification SVR 3 Servlet Context Chapter, javax.servlet.context.tempdir."),
- JSR286_65(new TCK(64), "PLT.10.3", "The portlet context must follow the same behavior and functionality that " +
+ JSR286_65(new TCK(64, "PLT.10.3"), "The portlet context must follow the same behavior and functionality that " +
"the servlet context has for virtual hosting and reloading considerations. (see Servlet Specification SVR 3 " +
"Servlet Context Chapter)"),
- JSR286_66(new TCK(66), "PLT.10.4.4", "For such use cases the Java Portlet Specification provides the action-scoped " +
+ JSR286_66(new TCK(66, "PLT.10.4.4"), "For such use cases the Java Portlet Specification provides the action-scoped " +
"request attributes as container runtime option with the intent to provide portlets with these request attributes " +
"until a new action occurs. This container runtime option must be supported by portlet containers."),
// PLT.11 Portlet Requests
- JSR286_67(new TCK(67), JSR168_48, "PLT.11.1.1", "If a portlet receives a request from a client request targeted to the " +
+ JSR286_67(new TCK(67, "PLT.11.1.1"), JSR168_48, "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."),
- JSR286_68(new TCK(68), JSR168_49, "PLT.11.1.1", "The parameters the request object returns must be \"x-www-formurlencoded\" " +
+ JSR286_68(new TCK(68, "PLT.11.1.1"), JSR168_49, "The parameters the request object returns must be \"x-www-formurlencoded\" " +
"decoded."),
- JSR286_69(new TCK(69), JSR168_55, "PLT.11.1.1", "The value returned from the getParameter method must be the first value in " +
+ JSR286_69(new TCK(69, "PLT.11.1.1"), JSR168_55, "The value returned from the getParameter method must be the first value in " +
"the array of String objects returned by getParameterValues"),
- JSR286_70(new TCK(70), JSR168_56, "PLT.11.1.1", "If there is a single parameter value associated with a parameter name the " +
+ JSR286_70(new TCK(70, "PLT.11.1.1"), JSR168_56, "If there is a single parameter value associated with a parameter name the " +
"method must return is an array of size one containing the parameter value."),
- JSR286_71(new TCK(71), "PLT.11.1.1", "The getParameterMap method must return an unmodifiable Map object."),
- JSR286_72(new TCK(72), "PLT.11.1.1", "If the request does not have any parameters, the getParameterMap must return " +
+ JSR286_71(new TCK(71, "PLT.11.1.1"), "The getParameterMap method must return an unmodifiable Map object."),
+ JSR286_72(new TCK(72, "PLT.11.1.1"), "If the request does not have any parameters, the getParameterMap must return " +
"an empty Map object"),
- JSR286_73(new TCK(73), "PLT.11.1.1", "Parameters set on the portlet URL and the post body are aggregated into the " +
+ JSR286_73(new TCK(73, "PLT.11.1.1"), "Parameters set on the portlet URL and the post body are aggregated into the " +
"request parameter set. Portlet URL parameters are presented before post body data."),
- JSR286_74(new TCK(74), "PLT.11.1.1.2", "The portlet-container must not propagate parameters received in an action " +
+ JSR286_74(new TCK(74, "PLT.11.1.1.2"), "The portlet-container must not propagate parameters received in an action " +
"or event request to subsequent render requests of the portlet."),
- JSR286_75(new TCK(75), "PLT.11.1.1.2", "The portlet-container must not propagate parameters received in an action " +
+ JSR286_75(new TCK(75, "PLT.11.1.1.2"), "The portlet-container must not propagate parameters received in an action " +
"to subsequent event requests of the portlet."),
- JSR286_76(new TCK(76), "PLT.11.1.1.2", "The set render parameters must be provided to the processEvent and render " +
+ JSR286_76(new TCK(76, "PLT.11.1.1.2"), "The set render parameters must be provided to the processEvent and render " +
"calls of at least the current client request."),
- JSR286_77(new TCK(77), "PLT.11.1.1.3", "If a portlet receives a render request following an action or event " +
+ JSR286_77(new TCK(77, "PLT.11.1.1.3"), "If a portlet receives a render request following an action or event " +
"request as part of the same client request, the parameters received with render request must be the render " +
"parameters set during the action or event request."),
- JSR286_78(new TCK(78), "PLT.11.1.1.3", "If a portlet receives a render request that is the result of invoking " +
+ JSR286_78(new TCK(78, "PLT.11.1.1.3"), "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 if these were not changed by the portlet as a result of an container event " +
"received for this render URL."),
- JSR286_79(new TCK(79), "PLT.11.1.1.3", "Commonly, portals provide controls to change the portlet mode and the " +
+ JSR286_79(new TCK(79, "PLT.11.1.1.3"), "Commonly, portals provide controls to change the portlet mode and the " +
"window state of portlets. The URLs these controls use are generated by the portal. Client requests triggered " +
"by those URLs must be treated as render URLs and the existing render parameters must be preserved."),
- JSR286_80(new TCK(80), "PLT.11.1.1.3", "A portlet must not see any parameter targeted to other portlets."),
- JSR286_81(new TCK(81), Status.specUntestable(""), "PLT.11.1.2", "The supportedpublic-render-parameter element must " +
+ JSR286_80(new TCK(80, "PLT.11.1.1.3"), "A portlet must not see any parameter targeted to other portlets."),
+ JSR286_81(new TCK(81, "PLT.11.1.2"), Status.specUntestable(""), "The supportedpublic-render-parameter element must " +
"reference the identifier " +
"of a public render parameter defined in the portlet application section in a public-render-parameter element"),
- JSR286_82(new TCK(82), "PLT.11.1.2", "The portlet container must only send those public render parameters to a " +
+ JSR286_82(new TCK(82, "PLT.11.1.2"), "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."),
- JSR286_83(new TCK(83), "PLT.11.1.2", "The portlet container must only share those render parameters of a portlet " +
+ JSR286_83(new TCK(83, "PLT.11.1.2"), "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"),
- JSR286_84(new TCK(84), "PLT.11.1.2", "If the portlet was the target of a render URL and this render URL has set " +
+ JSR286_84(new TCK(84, "PLT.11.1.2"), "If the portlet was the target of a render URL and this render URL has set " +
"a specific public render parameter the portlet must receive at least this render parameter"),
- JSR286_85(new TCK(85), "PLT.11.1.2", "If a action or resource parameter has the same name as a public render " +
+ JSR286_85(new TCK(85, "PLT.11.1.2"), "If a action or resource parameter has the same name as a public render " +
"parameter the public render parameter values must be the last entries in the parameter value array."),
- JSR286_86(new TCK(86), "PLT.11.1.2", "Portlets can access a merged set of public and private parameters via the " +
+ JSR286_86(new TCK(86, "PLT.11.1.2"), "Portlets can access a merged set of public and private parameters via the " +
"getParameter methods on the PortletRequest or separated as maps of private parameters via the " +
"getPrivateParameterMap method and public parameters via the getPublicParameterMap method."),
- JSR286_87(new TCK(87), JSR168_57, Status.specUntestable(""), "PLT.11.1.3", "Extra parameters used by the portal/portlet-container must be invisible " +
+ JSR286_87(new TCK(87, "PLT.11.1.3"), JSR168_57, Status.specUntestable(""), "Extra parameters used by the portal/portlet-container must be invisible " +
"to the portlets receiving the request."),
- JSR286_88(new TCK(88), "PLT.11.1.4.1", "The portlet can access a map with user information attributes via the " +
+ JSR286_88(new TCK(88, "PLT.11.1.4.1"), "The portlet can access a map with user information attributes via the " +
"request attribute PortletRequest.USER_INFO."),
- JSR286_89(new TCK(89), "PLT.11.1.4.2", "The PortletRequest.CCPP_PROFILE request attribute must return a " +
+ JSR286_89(new TCK(89, "PLT.11.1.4.2"), "The PortletRequest.CCPP_PROFILE request attribute must return a " +
"javax.ccpp.Profile based on the current portlet request."),
- JSR286_90(new TCK(90), "PLT.11.1.4.4", "The LIFECYCLE_PHASE request attribute of the PortletRequest interface " +
+ JSR286_90(new TCK(90, "PLT.11.1.4.4"), "The LIFECYCLE_PHASE request attribute of the PortletRequest interface " +
"allows a portlet to determine the current lifecycle phase of this request. This attribute value must be " +
"ACTION_PHASE if the current request is of type ActionRequest, EVENT_PHASE if the current request is of type " +
"EventRequest, RENDER_PHASE if the current request is of type RenderRequest, and RESOURCE_SERVING_PHASE if the " +
"current request is of type ResourceRequest."),
- JSR286_91(new TCK(91), JSR168_58, "PLT.11.1.6", "If the portlet application is rooted at the base of the web server URL " +
+ JSR286_91(new TCK(91, "PLT.11.1.6"), JSR168_58, "If the portlet application is rooted at the base of the web server URL " +
"namespace (also known as \"default\" context), this path must be an empty string."),
- JSR286_92(new TCK(92), JSR168_59, "PLT.11.1.6", "Otherwise, it must be the path the portlet application is rooted to, the " +
+ JSR286_92(new TCK(92, "PLT.11.1.6"), JSR168_59, "Otherwise, it must be the path the portlet application is rooted to, the " +
"path must start with a '/' and it must not end with a '/' character."),
- JSR286_93(new TCK(93), JSR168_60, "PLT.11.1.7", "If the user is not authenticated the getAuthType method must return null. "),
- JSR286_94(new TCK(94), JSR168_61, "PLT.11.1.8", "The first element of the enumeration must be the same content type returned " +
+ JSR286_93(new TCK(93, "PLT.11.1.7"), JSR168_60, "If the user is not authenticated the getAuthType method must return null. "),
+ JSR286_94(new TCK(94, "PLT.11.1.8"), JSR168_61, "The first element of the enumeration must be the same content type returned " +
"by the getResponseContentType method."),
- JSR286_95(new TCK(95), "PLT.11.1.8", "If the getResponseContentType or getResponseContentTypes methods are exposed " +
+ JSR286_95(new TCK(95, "PLT.11.1.8"), "If the getResponseContentType or getResponseContentTypes methods are exposed " +
"via an ActionRequest, EventRequest, or RenderRequest the following additional restrictions apply: The content " +
"type must only includes the MIME type, not the character set."),
- JSR286_96(new TCK(96), "PLT.11.1.8", "If the getResponseContentType or getResponseContentTypes methods are " +
+ JSR286_96(new TCK(96, "PLT.11.1.8"), "If the getResponseContentType or getResponseContentTypes methods are " +
"exposed via an ActionRequest, EventRequest, or RenderRequest the following additional restrictions apply: " +
"The getResponseContentTypes method must return only the content types supported by the current portlet mode " +
"of the portlet."),
- JSR286_97(new TCK(97), "PLT.11.1.12", "The portlet window ID retrieved with the getWindowID method must be the " +
+ JSR286_97(new TCK(97, "PLT.11.1.12"), "The portlet window ID retrieved with the getWindowID method must be the " +
"same as the one that is used by the portlet container for scoping the portlet-scope session attributes."),
- JSR286_98(new TCK(98), JSR168_63, "PLT.11.2.1", "Only one of the two methods, getPortletInputStream or getReader, can be " +
+ JSR286_98(new TCK(98, "PLT.11.2.1"), JSR168_63, "Only one of the two methods, getPortletInputStream or getReader, can be " +
"used during an action request. If the input stream is obtained, a call to the getReader must throw an " +
"IllegalStateException. Similarly, if the reader is obtained, a call to the getPortletInputStream must throw " +
"an IllegalStateException."),
- JSR286_99(new TCK(99), "PLT.11.2.1", "If the user request HTTP POST data is of type " +
+ JSR286_99(new TCK(99, "PLT.11.2.1"), "If the user request HTTP POST data is of type " +
"application/x-www-form-urlencoded, this data has been already processed by the portal/portlet-container and " +
"is available as request parameters. The getPortletInputStream and getReader methods must throw an " +
"IllegalStateException if called."),
// PLT.12 Portlet Responses
- JSR286_100(new TCK(100), "PLT.12.1.3", "The getNamespace method must provide the portlet with a mechanism that " +
+ JSR286_100(new TCK(100, "PLT.12.1.3"), "The getNamespace method must provide the portlet with a mechanism that " +
"ensures the uniqueness of the returned string in the whole portal page"),
- JSR286_101(new TCK(101), "PLT.12.1.3", "The getNamespace method must return the same value for the lifetime of " +
+ JSR286_101(new TCK(101, "PLT.12.1.3"), "The getNamespace method must return the same value for the lifetime of " +
"the portlet window."),
- JSR286_102(new TCK(102), "PLT.12.1.3", "The getNamespace method must return a valid identifier as defined in the " +
+ JSR286_102(new TCK(102, "PLT.12.1.3"), "The getNamespace method must return a valid identifier as defined in the " +
"3.8 Identifier Section of the Java Language Specification Second Edition."),
- JSR286_103(new TCK(103), "PLT.12.2.1", "A call to any of the setRenderParameter methods must replace any " +
+ JSR286_103(new TCK(103, "PLT.12.2.1"), "A call to any of the setRenderParameter methods must replace any " +
"parameter with the same name previously set."),
- JSR286_104(new TCK(104), "PLT.12.2.2", "If a portlet attempts to set a portlet mode that it is not allowed to switch " +
+ JSR286_104(new TCK(104, "PLT.12.2.2"), "If a portlet attempts to set a portlet mode that it is not allowed to switch " +
"to, a PortletModeException must be thrown."),
- JSR286_105(new TCK(105), "PLT.12.2.2", "If a portlet attempts to set a window state that it is not allowed to switch " +
+ JSR286_105(new TCK(105, "PLT.12.2.2"), "If a portlet attempts to set a window state that it is not allowed to switch " +
"to, a WindowStateException must be thrown."),
- JSR286_106(new TCK(106), "PLT.12.3.1", "The sendRedirect(String location) method instructs the portal/portlet-container " +
+ JSR286_106(new TCK(106, "PLT.12.3.1"), "The sendRedirect(String location) method instructs the portal/portlet-container " +
"to set the appropriate headers and content body to redirect the user to a different URL. A fully qualified URL " +
"or a full path URL must be specified. If a relative path URL is given, an IllegalArgumentException must be thrown."),
- JSR286_107(new TCK(107), "PLT.12.3.1", "If the sendRedirect(String location) method is called after the setPortletMode, " +
+ JSR286_107(new TCK(107, "PLT.12.3.1"), "If the sendRedirect(String location) method is called after the setPortletMode, " +
"setWindowState, setRenderParameter or setRenderParameters methods of the ActionResponse interface, an " +
"IllegalStateException must be thrown and the redirection must not be executed."),
- JSR286_108(new TCK(108), "PLT.12.3.1", "If a relative path URL is given, an IllegalArgumentException must be thrown."),
- JSR286_109(new TCK(109), "PLT.12.3.1", "The portlet container must attach a render URL with the currently set " +
+ JSR286_108(new TCK(108, "PLT.12.3.1"), "If a relative path URL is given, an IllegalArgumentException must be thrown."),
+ JSR286_109(new TCK(109, "PLT.12.3.1"), "The portlet container must attach a render URL with the currently set " +
"portlet mode, window state and render parameters on the ActionResponse and the current public render parameters."),
- JSR286_110(new TCK(110), "PLT.12.3.1", "The attached URL must be available as query parameter value under the " +
+ JSR286_110(new TCK(110, "PLT.12.3.1"), "The attached URL must be available as query parameter value under the " +
"key provided with the renderUrlParamName parameter."),
- JSR286_111(new TCK(111), "PLT.12.3.1", "New values for portlet mode, window state, private or public render " +
+ JSR286_111(new TCK(111, "PLT.12.3.1"), "New values for portlet mode, window state, private or public render " +
"parameters must be encoded in the attached render URLcxi,"),
- JSR286_112(new TCK(112), "PLT.12.3.1", "For the render response the setContentType method must throw an " +
+ JSR286_112(new TCK(112, "PLT.12.3.1"), "For the render response the setContentType method must throw an " +
"IllegalArgumentException if the content type set does not match (including wildcard matching) any of the " +
"content types returned by the getResponseContentType method of the PortletRequest objectcxii."),
- JSR286_113(new TCK(113), "PLT.12.3.1", "If the portlet has set a content type, the getContentType method must " +
+ JSR286_113(new TCK(113, "PLT.12.3.1"), "If the portlet has set a content type, the getContentType method must " +
"return it. Otherwise, the getContentType method must return null."),
- JSR286_114(new TCK(114), "PLT.12.5.2", "A portlet may generate its content by writing to the OutputStream or to " +
+ JSR286_114(new TCK(114, "PLT.12.5.2"), "A portlet may generate its content by writing to the OutputStream or to " +
"the Writer of the MimeResponse object. A portlet must use only one of these objects. The portlet container must " +
"throw an IllegalStateException if a portlet attempts to use both."),
- JSR286_115(new TCK(115), "PLT.12.5.5", "The getBufferSize method returns the size of the underlying buffer being " +
+ JSR286_115(new TCK(115, "PLT.12.5.5"), "The getBufferSize method returns the size of the underlying buffer being " +
"used. If no buffering is being used, this method must return the int value of 0 (zero)."),
- JSR286_116(new TCK(116), "PLT.12.5.5", "The portlet can request a preferred buffer size by using the setBufferSize " +
+ JSR286_116(new TCK(116, "PLT.12.5.5"), "The portlet can request a preferred buffer size by using the setBufferSize " +
"method. The buffer assigned is not required to be the size requested by the portlet, but must be at least as " +
"large as the size requested."),
- JSR286_117(new TCK(117), "PLT.12.5.5", "The reset method clears data in the buffer when the response is not " +
+ JSR286_117(new TCK(117, "PLT.12.5.5"), "The reset method clears data in the buffer when the response is not " +
"committed. Properties set by the portlet prior to the reset call must be cleared as well."),
- JSR286_118(new TCK(118), "PLT.12.5.5", "If the response is committed and the reset or resetBuffer method is called, " +
+ JSR286_118(new TCK(118, "PLT.12.5.5"), "If the response is committed and the reset or resetBuffer method is called, " +
"an IllegalStateException must be thrown."),
- JSR286_119(new TCK(119), "PLT.12.5.5", "The response and its associated buffer must be unchanged."),
- JSR286_120(new TCK(120), "PLT.12.5.5", "When using a buffer, the container must immediately flush the contents of " +
+ JSR286_119(new TCK(119, "PLT.12.5.5"), "The response and its associated buffer must be unchanged."),
+ JSR286_120(new TCK(120, "PLT.12.5.5"), "When using a buffer, the container must immediately flush the contents of " +
"a filled buffer to the portal application."),
- JSR286_121(new TCK(121), Status.specUntestable(""), "PLT.12.6.1", "The setTitle method must be called before the " +
+ JSR286_121(new TCK(121, "PLT.12.6.1"), Status.specUntestable(""), "The setTitle method must be called before the " +
"output of the portlet has been committed, if called after it should be ignored."),
// PLT.13 Resource Serving
- JSR286_122(new TCK(122), "PLT.13.1.4", "The portlet must be able to get the HTTP method with which this request " +
+ JSR286_122(new TCK(122, "PLT.13.1.4"), "The portlet must be able to get the HTTP method with which this request " +
"was made, for example, GET, POST, or PUT, via the getMethod call on the ResourceRequest."),
- JSR286_123(new TCK(123), "PLT.13.1.5", "The portlet must be able to get the resource ID that was set on the resource " +
+ JSR286_123(new TCK(123, "PLT.13.1.5"), "The portlet must be able to get the resource ID that was set on the resource " +
"URL with the setResourceID method via the getResourceID method from the resource request."),
- JSR286_124(new TCK(124), "PLT.13.1.5", "If no resource ID was set on the resource URL the getResourceID method must " +
+ JSR286_124(new TCK(124, "PLT.13.1.5"), "If no resource ID was set on the resource URL the getResourceID method must " +
"return null."),
- JSR286_125(new TCK(125), "PLT.13.1.6", "When an end user invokes such a resource URL the portlet container must " +
+ JSR286_125(new TCK(125, "PLT.13.1.6"), "When an end user invokes such a resource URL the portlet container must " +
"call the serveResource method of the portlet or return a valid cached result for this resource URL"),
- JSR286_126(new TCK(126), "PLT.13.1.6", "The portlet container must not call the processAction or processEvent " +
+ JSR286_126(new TCK(126, "PLT.13.1.6"), "The portlet container must not call the processAction or processEvent " +
"method."),
- JSR286_127(new TCK(127), "PLT.13.1.6", "ResourceURLs cannot change the current portlet mode, window state or " +
+ JSR286_127(new TCK(127, "PLT.13.1.6"), "ResourceURLs cannot change the current portlet mode, window state or " +
"render parameters"),
- JSR286_128(new TCK(128), "PLT.13.1.6", "If a parameter is set that has the same name as a render parameter that " +
+ JSR286_128(new TCK(128, "PLT.13.1.6"), "If a parameter is set that has the same name as a render parameter that " +
"this resource URL contains, the render parameter values must be the last entries in the parameter value array."),
- JSR286_129(new TCK(129), "PLT.13.1.7", "If portlet URLs are included in the markup, portals / portlet containers " +
+ JSR286_129(new TCK(129, "PLT.13.1.7"), "If portlet URLs are included in the markup, portals / portlet containers " +
"must create correct portlet URLs for all text-based markup types."),
- JSR286_130(new TCK(130), "PLT.13.1.7", "Setting a cachability different from FULL must result in an " +
+ JSR286_130(new TCK(130, "PLT.13.1.7"), "Setting a cachability different from FULL must result in an " +
"IllegalStateException"),
- JSR286_131(new TCK(131), "PLT.13.1.7", "Attempts to create URLs that are not of type FULL or are not resource " +
+ JSR286_131(new TCK(131, "PLT.13.1.7"), "Attempts to create URLs that are not of type FULL or are not resource " +
"URLs in the current or a downstream response must result in\n" +
"an IllegalStateException"),
- JSR286_132(new TCK(132), "PLT.13.1.7", "Creating other URLs, e.g. resource URLs of type PAGE or action or render " +
+ JSR286_132(new TCK(132, "PLT.13.1.7"), "Creating other URLs, e.g. resource URLs of type PAGE or action or render " +
"URLs, must result in an IllegalStateException"),
@@ -780,448 +783,448 @@
// PLT.15 Coordination between portlets
- JSR286_133(new TCK(133), "PLT.15.2.2", "The event must always have a name and may optionally have a value."),
- JSR286_134(new TCK(134), "PLT.15.2.2", "If the event has a value it must be based on the type defined in the " +
+ JSR286_133(new TCK(133, "PLT.15.2.2"), "The event must always have a name and may optionally have a value."),
+ JSR286_134(new TCK(134, "PLT.15.2.2"), "If the event has a value it must be based on the type defined in the " +
"deployment descriptor." ),
- JSR286_135(new TCK(135), "PLT.15.2.3", "The portlet can publish events via the StateAwareResponse.setEvent " +
+ JSR286_135(new TCK(135, "PLT.15.2.3"), "The portlet can publish events via the StateAwareResponse.setEvent " +
"method."),
- JSR286_136(new TCK(136), "PLT.15.2.3", "It is also valid to call StateAwareResponse.setEvent multiple times " +
+ JSR286_136(new TCK(136, "PLT.15.2.3"), "It is also valid to call StateAwareResponse.setEvent multiple times " +
"in the current processAction or processEvent method." ),
- JSR286_137(new TCK(137), "PLT.15.2.3", "If only the local part is specified the namespace must be the default " +
+ JSR286_137(new TCK(137, "PLT.15.2.3"), "If only the local part is specified the namespace must be the default " +
"namespace defined in the portlet deployment descriptor with the default namespace element."),
- JSR286_138(new TCK(138), "PLT.15.2.3", "If no such element is provided in the portlet deployment descriptor the " +
+ JSR286_138(new TCK(138, "PLT.15.2.3"), "If no such element is provided in the portlet deployment descriptor the " +
"XML default namespace javax.xml.XMLConstants.NULL_NS_URI must be assumed."),
- JSR286_139(new TCK(139), "PLT.15.2.3", "Otherwise the setEvent method on the StateAwareResponse must throw a " +
+ JSR286_139(new TCK(139, "PLT.15.2.3"), "Otherwise the setEvent method on the StateAwareResponse must throw a " +
"java.lang.IllegalArgumentException."),
- JSR286_140(new TCK(140), "PLT.15.2.4.1", "The event definition must contain an event name."),
- JSR286_141(new TCK(141), "PLT.15.2.4.1", "The portlet container must use the event name entry in the portlet " +
+ JSR286_140(new TCK(140, "PLT.15.2.4.1"), "The event definition must contain an event name."),
+ JSR286_141(new TCK(141, "PLT.15.2.4.1"), "The portlet container must use the event name entry in the portlet " +
"deployment descriptor as event name when submitting an event to the portlet."),
- JSR286_142(new TCK(142), "PLT.15.2.4", "The portlet can send events which are not declared in the portlet " +
+ JSR286_142(new TCK(142, "PLT.15.2.4"), "The portlet can send events which are not declared in the portlet " +
"deployment descriptor at runtime using the setEvent method on either the ActionResponse or EventResponse."),
- JSR286_143(new TCK(143), "PLT.15.2.5", "Events are valid only in the current client request and the portlet " +
+ JSR286_143(new TCK(143, "PLT.15.2.5"), "Events are valid only in the current client request and the portlet " +
"container must therefore deliver all events within the current client request."),
- JSR286_144(new TCK(144), "PLT.15.2.5", "Event distribution must be serialized for a specific portlet window per " +
+ JSR286_144(new TCK(144, "PLT.15.2.5"), "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."),
- JSR286_145(new TCK(145), "PLT.15.2.5", "Portlet event processing may occur after the processing of the action, " +
+ JSR286_145(new TCK(145, "PLT.15.2.5"), "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."),
- JSR286_146(new TCK(146), "PLT.15.2.6", "If a portlet throws an exception in the processEvent method, all operations" +
+ JSR286_146(new TCK(146, "PLT.15.2.6"), "If a portlet throws an exception in the processEvent method, all operations" +
" on the EventResponse must be ignored."),
- JSR286_147(new TCK(147), "PLT.15.2.6", "If a permanent unavailability is indicated by the UnavailableException," +
+ JSR286_147(new TCK(147, "PLT.15.2.6"), "If a permanent unavailability is indicated by the UnavailableException," +
" the portlet container must remove the portlet from service immediately, call the portlet’s destroy method," +
" and release the portlet object."),
// PLT.17 Portlet Preferences
- JSR286_148(new TCK(148), "PLT.17.1", "Preferences attributes can be set to null"),
- JSR286_149(new TCK(149), "PLT.17.1", "Preferences values must not be modified if the values in the Map are altered"),
- JSR286_150(new TCK(150), "PLT.17.1", "The reset method must reset a preference attribute to its default value. " +
+ JSR286_148(new TCK(148, "PLT.17.1"), "Preferences attributes can be set to null"),
+ JSR286_149(new TCK(149, "PLT.17.1"), "Preferences values must not be modified if the values in the Map are altered"),
+ JSR286_150(new TCK(150, "PLT.17.1"), "The reset method must reset a preference attribute to its default value. " +
"If there is no default value, the preference attribute must be deleted."),
- JSR286_151(new TCK(151), "PLT.17.1", "If a preference attribute is read only, the setValue, setValues and reset " +
+ JSR286_151(new TCK(151, "PLT.17.1"), "If a preference attribute is read only, the setValue, setValues and reset " +
"methods must throw a ReadOnlyException when the portlet is in any of the standard modes."),
- JSR286_152(new TCK(152), "PLT.17.1", "The store method must persist all the changes made to the PortletPreferences " +
+ JSR286_152(new TCK(152, "PLT.17.1"), "The store method must persist all the changes made to the PortletPreferences " +
"object in the persistent store."),
- JSR286_153(new TCK(153), "PLT.17.1", "The store method must be conducted as an atomic transaction regardless of how " +
+ JSR286_153(new TCK(153, "PLT.17.1"), "The store method must be conducted as an atomic transaction regardless of how " +
"many preference attributes have been modified."),
- JSR286_154(new TCK(154), "PLT.17.1", "All changes made to PortletPreferences object not followed by a call to the " +
+ JSR286_154(new TCK(154, "PLT.17.1"), "All changes made to PortletPreferences object not followed by a call to the " +
"store method must be discarded when the portlet finishes the processAction, processEvent, or serveResource method."),
- JSR286_155(new TCK(155), "PLT.17.1", "If the store method is invoked within the scope of a render method invocation, " +
+ JSR286_155(new TCK(155, "PLT.17.1"), "If the store method is invoked within the scope of a render method invocation, " +
"it must throw an IllegalStateException."),
- JSR286_156(new TCK(156), "PLT.17.1", "The PortletPreferences object must reflect the current values of the " +
+ JSR286_156(new TCK(156, "PLT.17.1"), "The PortletPreferences object must reflect the current values of the " +
"persistent store when the portlet container invokes the processAction, processEvent, render and serveResource " +
"methods of the portlet."),
- JSR286_157(new TCK(157), "PLT.17.3", "If a preference attribute definition does not contain the read-only element " +
+ JSR286_157(new TCK(157, "PLT.17.3"), "If a preference attribute definition does not contain the read-only element " +
"set to true, the preference attribute is modifiable when the portlet is processing an action request in any " +
"of the standard portlet modes (VIEW, EDIT or HELP)."),
- JSR286_158(new TCK(158), "PLT.17.3", "Portlets are not restricted to use preference attributes defined in the " +
+ JSR286_158(new TCK(158, "PLT.17.3"), "Portlets are not restricted to use preference attributes defined in the " +
"deployment descriptor. They can programmatically add preference attributes using names not defined in the " +
"deployment descriptor. These preferences attributes must be treated as modifiable attributes."),
- JSR286_159(new TCK(159), "PLT.17.4", "When a validator is associated with the preferences of a portlet definition, " +
+ JSR286_159(new TCK(159, "PLT.17.4"), "When a validator is associated with the preferences of a portlet definition, " +
"the store method of the PortletPreferences implementation must invoke the validate method of the validator " +
"before writing the changes to the persistent store."),
- JSR286_160(new TCK(160), "PLT.17.4", "If a ValidatorException is thrown, the portlet container must cancel the " +
+ JSR286_160(new TCK(160, "PLT.17.4"), "If a ValidatorException is thrown, the portlet container must cancel the " +
"store operation and it must propagate the exception to the portlet."),
- JSR286_161(new TCK(161), "PLT.17.4", "If the validation is successful, the store operation must be completed"),
+ JSR286_161(new TCK(161, "PLT.17.4"), "If the validation is successful, the store operation must be completed"),
// PLT.18 Sessions
- JSR286_162(new TCK(162), "PLT.18.1", "For portlets within the same portlet application, a portlet container must " +
+ JSR286_162(new TCK(162, "PLT.18.1"), "For portlets within the same portlet application, a portlet container must " +
"ensure that every portlet request generated as result of a group of requests originated from the portal to " +
"complete a single client request receive or acquire the same session."),
- JSR286_163(new TCK(163), "PLT.18.1", "In addition, if within these portlet requests more than one portlet creates " +
+ JSR286_163(new TCK(163, "PLT.18.1"), "In addition, if within these portlet requests more than one portlet creates " +
"a session, the session object must be the same for all the portlets in the same portlet application"),
- JSR286_164(new TCK(164), "PLT.18.2", "PortletSession objects must be scoped at the portlet application context level."),
- JSR286_165(new TCK(165), "PLT.18.2", "The portlet container must not share the PortletSession object or the " +
+ JSR286_164(new TCK(164, "PLT.18.2"), "PortletSession objects must be scoped at the portlet application context level."),
+ JSR286_165(new TCK(165, "PLT.18.2"), "The portlet container must not share the PortletSession object or the " +
"attributes stored in it among different portlet applications or among different user sessions."),
- JSR286_166(new TCK(166), "PLT.18.3", "Any object stored in the session using the APPLICATION_SCOPE is available " +
+ JSR286_166(new TCK(166, "PLT.18.3"), "Any object stored in the session using the APPLICATION_SCOPE is available " +
"to any other portlet that belongs to the same portlet application and that handles a request identified as " +
"being a part of the same session."),
- JSR286_167(new TCK(167), "PLT.18.3", "Objects stored in the session using the PORTLET_SCOPE must be available to " +
+ JSR286_167(new TCK(167, "PLT.18.3"), "Objects stored in the session using the PORTLET_SCOPE must be available to " +
"the portlet during requests for the same portlet window that the objects where stored from."),
- JSR286_168(new TCK(168), "PLT.18.3", "The object must be stored in the APPLICATION_SCOPE with the following " +
+ JSR286_168(new TCK(168, "PLT.18.3"), "The object must be stored in the APPLICATION_SCOPE with the following " +
"fabricated attribute name ‘javax.portlet.p.<ID>?<ATTRIBUTE_NAME>’. <ID> is a unique identification for the " +
"portlet window (assigned by the portal/portlet-container) that must be equal to the ID returned by the PortletRequest.getWindowID() method and not contain a ‘?’ character."),
- JSR286_169(new TCK(169), "PLT.18.4", "The container must ensure that all attributes placed in the PortletSession " +
+ JSR286_169(new TCK(169, "PLT.18.4"), "The container must ensure that all attributes placed in the PortletSession " +
"are also available in the HttpSession of the portlet application. A direct consequence of this is that data " +
"stored in the HttpSession by servlets or JSPs of the Portlet Application is accessible to portlets through " +
"the PortletSession in the portlet application scope."),
- JSR286_170(new TCK(170), "PLT.18.4", "Conversely, data stored by portlets in the PortletSession in the portlet " +
+ JSR286_170(new TCK(170, "PLT.18.4"), "Conversely, data stored by portlets in the PortletSession in the portlet " +
"application scope is accessible to servlets and JSPs through the HttpSession."),
- JSR286_171(new TCK(171), "PLT.18.4", "If the HttpSession object is invalidated, the PortletSession object must " +
+ JSR286_171(new TCK(171, "PLT.18.4"), "If the HttpSession object is invalidated, the PortletSession object must " +
"also be invalidated by the portlet container."),
- JSR286_172(new TCK(172), "PLT.18.4", "If the PortletSession object is invalidated by a portlet, the portlet " +
+ JSR286_172(new TCK(172, "PLT.18.4"), "If the PortletSession object is invalidated by a portlet, the portlet " +
"container must invalidate the associated HttpSession object."),
- JSR286_173(new TCK(173), "PLT.18.4.1", "The getAttribute, setAttribute, removeAttribute and getAttributeNames " +
+ JSR286_173(new TCK(173, "PLT.18.4.1"), "The getAttribute, setAttribute, removeAttribute and getAttributeNames " +
"methods of the PortletSession interface must provide the same functionality as the methods of the HttpSession " +
"interface with identical names adhering to the following rules: The attribute names must be the same if " +
"APPLICATION_SCOPE scope is used."),
- JSR286_174(new TCK(174), "PLT.18.4.1", "The getAttribute, setAttribute, removeAttribute and getAttributeNames " +
+ JSR286_174(new TCK(174, "PLT.18.4.1"), "The getAttribute, setAttribute, removeAttribute and getAttributeNames " +
"methods of the PortletSession interface must provide the same functionality as the methods of the HttpSession " +
"interface with identical names adhering to the following rules: The attribute name has to conform with the " +
"specified prefixing if PORTLET_SCOPE is used."),
- JSR286_175(new TCK(175), "PLT.18.4.1", "The getAttribute, setAttribute, removeAttribute and getAttributeNames " +
+ JSR286_175(new TCK(175, "PLT.18.4.1"), "The getAttribute, setAttribute, removeAttribute and getAttributeNames " +
"methods of the PortletSession interface must provide the same functionality as the methods of the HttpSession " +
"interface with identical names adhering to the following rules: The variant of these methods that does not " +
"receive a scope must be treated as PORTLET_SCOPE."),
- JSR286_176(new TCK(176), "PLT.18.9(servlet spec)", "These considerations include Threading Issues, Distributed " +
+ JSR286_176(new TCK(176, "PLT.18.9(servlet spec)"), "These considerations include Threading Issues, Distributed " +
"Environments and Client Semantics."),
// PLT.19 Dispatching Requests to Servlets and JSPs
- JSR286_177(new TCK(177), "PLT.19.1", "The getRequestDispatcher method takes a String argument describing a path " +
+ JSR286_177(new TCK(177, "PLT.19.1"), "The getRequestDispatcher method takes a String argument describing a path " +
"within the scope of the PortletContext of a portlet application. This path must begin with a ‘/’ and it is " +
"relative to the PortletContext root."),
- JSR286_178(new TCK(178), "PLT.19.1", "If no resource can be resolved based on the given path or name the methods " +
+ JSR286_178(new TCK(178, "PLT.19.1"), "If no resource can be resolved based on the given path or name the methods " +
"must return null."),
- JSR286_179(new TCK(179), "PLT.19.1.1", "The parameters associated with a PortletRequestDispatcher are scoped to " +
+ JSR286_179(new TCK(179, "PLT.19.1.1"), "The parameters associated with a PortletRequestDispatcher are scoped to " +
"apply only for the duration of the include call."),
- JSR286_180(new TCK(180), "PLT.19.2", "The parameters to these methods must be the request and response arguments " +
+ JSR286_180(new TCK(180, "PLT.19.2"), "The parameters to these methods must be the request and response arguments " +
"that were passed in via the corresponding lifecycle method (e.g. processAction, processEvent, serveResource, " +
"render) , or the request and response arguments must be instances of the corresponding subclasses of the request " +
"and response wrapper classes that were introduced for version 2.0 of the specification."),
- JSR286_181(new TCK(181), "PLT.19.2", "The portlet container must ensure that the servlet or JSP called through a" +
+ JSR286_181(new TCK(181, "PLT.19.2"), "The portlet container must ensure that the servlet or JSP called through a" +
" PortletRequestDispatcher is called in the same thread as the PortletRequestDispatcher include invocation"),
- JSR286_182(new TCK(182), "PLT.19.3", "Servlets and JSPs included from portlets in the render method must be handled " +
+ JSR286_182(new TCK(182, "PLT.19.3"), "Servlets and JSPs included from portlets in the render method must be handled " +
"as HTTP GET requests."),
- JSR286_183(new TCK(183), "PLT.19.3.1", "Except for servlets obtained by using the getNamedDispatcher method, a " +
+ JSR286_183(new TCK(183, "PLT.19.3.1"), "Except for servlets obtained by using the getNamedDispatcher method, a " +
"servlet or JSP being used from within an include call has access to the path used to obtain the " +
"PortletRequestDispatcher. The following request attributes must be set: javax.servlet.include.request_uri, " +
"javax.servlet.include.context_path, javax.servlet.include.servlet_path, javax.servlet.include.path_info, " +
"javax.servlet.include.query_string"),
- JSR286_184(new TCK(184), "PLT.19.3.2", "These attributes must be the same Portlet API objects accessible to the " +
+ JSR286_184(new TCK(184, "PLT.19.3.2"), "These attributes must be the same Portlet API objects accessible to the " +
"portlet doing the include call."),
// PLT.19.3.3 Request and Response Objects for Included Servlets/JSPs from within the Action and Event processing Methods
- JSR286_185(new TCK(185), "PLT.19.3.3", "The following methods of the HttpServletRequest must return null: " +
+ JSR286_185(new TCK(185, "PLT.19.3.3"), "The following methods of the HttpServletRequest must return null: " +
"getRemoteAddr, getRemoteHost, getRealPath, getLocalAddress, getLocalName, and getRequestURL."),
- JSR286_186(new TCK(186), "PLT.19.3.3", "The following methods of the HttpServletRequest must return ‘0’: " +
+ JSR286_186(new TCK(186, "PLT.19.3.3"), "The following methods of the HttpServletRequest must return ‘0’: " +
"getRemotePort and getLocalPort."),
- JSR286_187(new TCK(187), "PLT.19.3.3", "The following methods of the HttpServletRequest must return the path " +
+ JSR286_187(new TCK(187, "PLT.19.3.3"), "The following methods of the HttpServletRequest must return the path " +
"and query string information used to obtain the PortletRequestDispatcher object: getPathInfo, " +
"getPathTranslated, getQueryString, getRequestURI and getServletPath."),
- JSR286_188(new TCK(188), "PLT.19.3.3", "The following methods of the HttpServletRequest must be equivalent " +
+ JSR286_188(new TCK(188, "PLT.19.3.3"), "The following methods of the HttpServletRequest must be equivalent " +
"to the methods of the PortletRequest of similar name: getScheme, getServerName, getServerPort, getAttribute, " +
"getAttributeNames, setAttribute, removeAttribute, getLocale, getLocales, isSecure, getAuthType,\n" +
"getContextPath, getRemoteUser, getUserPrincipal, getRequestedSessionId, isRequestedSessionIdValid, getCookies."),
- JSR286_189(new TCK(189), "PLT.19.3.3", "The following methods of the HttpServletRequest must be equivalent to " +
+ JSR286_189(new TCK(189, "PLT.19.3.3"), "The following methods of the HttpServletRequest must be equivalent to " +
"the methods of the PortletRequest of similar name with the provision defined in PLT.19.1.1 Query Strings " +
"in Request Dispatcher Paths Section: getParameter, getParameterNames, getParameterValues and getParameterMap."),
- JSR286_190(new TCK(190), "PLT.19.3.3", "In case of an include from processAction, the following methods of the " +
+ JSR286_190(new TCK(190, "PLT.19.3.3"), "In case of an include from processAction, the following methods of the " +
"HttpServletRequest must be based on the corresponding methods of the\n" +
"ActionRequest: getCharacterEncoding, setCharacterEncoding, getContentType, getInputStream, getContentLength, " +
"getMethod and getReader."),
- JSR286_191(new TCK(191), "PLT.19.3.3", "In case of an include from processEvent, the following methods of the " +
+ JSR286_191(new TCK(191, "PLT.19.3.3"), "In case of an include from processEvent, the following methods of the " +
"HttpServletRequest must do no operations and/or return null: getCharacterEncoding, setCharacterEncoding, " +
"getContentType, getInputStream and getReader"),
- JSR286_192(new TCK(192), "PLT.19.3.3", "The getContentLength method of the HttpServletRequest must return 0."),
- JSR286_193(new TCK(193), "PLT.19.3.3", "The getMethod method of the HTTPServletRequest must be based on the " +
+ JSR286_192(new TCK(192, "PLT.19.3.3"), "The getContentLength method of the HttpServletRequest must return 0."),
+ JSR286_193(new TCK(193, "PLT.19.3.3"), "The getMethod method of the HTTPServletRequest must be based on the " +
"corresponding method of the EventRequest, which must provide the name of the HTTP method with which the " +
"original action request was made."),
- JSR286_194(new TCK(194), "PLT.19.3.3", "The following methods of the HttpServletRequest must be based on the " +
+ JSR286_194(new TCK(194, "PLT.19.3.3"), "The following methods of the HttpServletRequest must be based on the " +
"properties provided by the getProperties method of the PortletRequest interface: getHeader, getHeaders, " +
"getHeaderNames, getDateHeader and getIntHeader."),
- JSR286_195(new TCK(195), "PLT.19.3.3", "The following methods of the HttpServletRequest must provide the " +
+ JSR286_195(new TCK(195, "PLT.19.3.3"), "The following methods of the HttpServletRequest must provide the " +
"functionality defined by the Servlet Specification: getRequestDispatcher, isUserInRole, getSession, " +
"isRequestedSessionIdFromCookie, isRequestedSessionIdFromURL and isRequestedSessionIdFromUrl."),
- JSR286_196(new TCK(196), "PLT.19.3.3", "The getProtocol method of the HttpServletRequest must always return " +
+ JSR286_196(new TCK(196, "PLT.19.3.3"), "The getProtocol method of the HttpServletRequest must always return " +
"‘HTTP/1.1’.The getProtocol method of the HttpServletRequest must always return ‘HTTP/1.1’."),
- JSR286_197(new TCK(197), "PLT.19.3.3", "The following methods of the HttpServletResponse must return null: " +
+ JSR286_197(new TCK(197, "PLT.19.3.3"), "The following methods of the HttpServletResponse must return null: " +
"encodeRedirectURL, encodeRedirectUrl, getCharacterEncoding, getContentType, getLocale, resetBuffer, reset."),
- JSR286_198(new TCK(198), "PLT.19.3.3", "The following method of the HttpServletResponse must return 0: getBufferSize."),
- JSR286_199(new TCK(199), "PLT.19.3.3", "The following methods of the HttpServletResponse must return an " +
+ JSR286_198(new TCK(198, "PLT.19.3.3"), "The following method of the HttpServletResponse must return 0: getBufferSize."),
+ JSR286_199(new TCK(199, "PLT.19.3.3"), "The following methods of the HttpServletResponse must return an " +
"outputstream / writer that ignores any output written to it: getOutputStream and getWriter."),
- JSR286_200(new TCK(200), "PLT.19.3.3", "The following methods of the HttpServletResponse must be equivalent " +
+ JSR286_200(new TCK(200, "PLT.19.3.3"), "The following methods of the HttpServletResponse must be equivalent " +
"to the methods of the ActionResponse/EventResponse of similar name: encodeURL and encodeUrl."),
- JSR286_201(new TCK(201), Status.specUntestable("impl"), "PLT.19.3.3", "The following methods of the HttpServletResponse must perform no " +
+ JSR286_201(new TCK(201, "PLT.19.3.3"), Status.specUntestable("impl"), "The following methods of the HttpServletResponse must perform no " +
"operations: setContentType, setCharacterEncoding, setContentLength, setLocale, addCookie, sendError, " +
"sendRedirect, setDateHeader, addDateHeader, setHeader, addHeader, setIntHeader, addIntHeader, setStatus,\n" +
"setBufferSize and flushBuffer."),
- JSR286_202(new TCK(202), "PLT.19.3.3", "The containsHeader method of the HttpServletResponse must return false."),
- JSR286_203(new TCK(203), "PLT.19.3.3", "The isCommitted method of the HttpServletResponse must return true."),
+ JSR286_202(new TCK(202, "PLT.19.3.3"), "The containsHeader method of the HttpServletResponse must return false."),
+ JSR286_203(new TCK(203, "PLT.19.3.3"), "The isCommitted method of the HttpServletResponse must return true."),
// PLT.19.3.4 Request and Response Objects for Included Servlets/JSPs from within the Render Method
- JSR286_204(new TCK(204), "PLT.19.3.4", "The following methods of the HttpServletRequest must return null: " +
+ JSR286_204(new TCK(204, "PLT.19.3.4"), "The following methods of the HttpServletRequest must return null: " +
"getRemoteAddr, getRemoteHost, getLocalAddress, getLocalName, getRealPath, and getRequestURL."),
- JSR286_205(new TCK(205), "PLT.19.3.4", "The following methods of the HttpServletRequest must return ‘0’: " +
+ JSR286_205(new TCK(205, "PLT.19.3.4"), "The following methods of the HttpServletRequest must return ‘0’: " +
"getRemotePort and getLocalPort."),
- JSR286_206(new TCK(206), "PLT.19.3.4", "The following methods of the HttpServletRequest must return the " +
+ JSR286_206(new TCK(206, "PLT.19.3.4"), "The following methods of the HttpServletRequest must return the " +
"path and query string information used to obtain the PortletRequestDispatcher object: getPathInfo, " +
"getPathTranslated, getQueryString, getRequestURI and getServletPath."),
- JSR286_207(new TCK(207), "PLT.19.3.4", "The following methods of the HttpServletRequest must be equivalent " +
+ JSR286_207(new TCK(207, "PLT.19.3.4"), "The following methods of the HttpServletRequest must be equivalent " +
"to the methods of the PortletRequest of similar name: getScheme, getServerName, getServerPort, getAttribute, " +
"getAttributeNames, setAttribute, removeAttribute, getLocale, getLocales, isSecure, getAuthType, getContextPath, " +
"getRemoteUser, getUserPrincipal, getRequestedSessionId, isRequestedSessionIdValid, getCookies."),
- JSR286_208(new TCK(208), "PLT.19.3.4", "The following methods of the HttpServletRequest must be equivalent to " +
+ JSR286_208(new TCK(208, "PLT.19.3.4"), "The following methods of the HttpServletRequest must be equivalent to " +
"the methods of the PortletRequest of similar name with the provision defined in PLT.18.1.1 Query Strings in " +
"Request Dispatcher Paths Section: getParameter, getParameterNames, getParameterValues and getParameterMap."),
- JSR286_209(new TCK(209), "PLT.19.3.4", "The following methods of the HttpServletRequest must do no operations " +
+ JSR286_209(new TCK(209, "PLT.19.3.4"), "The following methods of the HttpServletRequest must do no operations " +
"and return null: getCharacterEncoding, setCharacterEncoding, getContentType, getInputStream and getReader."),
- JSR286_210(new TCK(210), "PLT.19.3.4", "The getContentLength method of the HttpServletRequest must return 0"),
- JSR286_211(new TCK(211), "PLT.19.3.4", "The following methods of the HttpServletRequest must be based on the " +
+ JSR286_210(new TCK(210, "PLT.19.3.4"), "The getContentLength method of the HttpServletRequest must return 0"),
+ JSR286_211(new TCK(211, "PLT.19.3.4"), "The following methods of the HttpServletRequest must be based on the " +
"properties provided by the getProperties method of the PortletRequest interface: getHeader, getHeaders, " +
"getHeaderNames, getDateHeader and getIntHeader."),
- JSR286_212(new TCK(212), "PLT.19.3.4", "The following methods of the HttpServletRequest must provide the " +
+ JSR286_212(new TCK(212, "PLT.19.3.4"), "The following methods of the HttpServletRequest must provide the " +
"functionality defined by the Servlet Specification: getRequestDispatcher, isUserInRole, getSession, " +
"isRequestedSessionIdFromCookie, isRequestedSessionIdFromURL and isRequestedSessionIdFromUrl."),
- JSR286_213(new TCK(213), "PLT.19.3.4", "The getMethod method of the HttpServletRequest must always return ‘GET’."),
- JSR286_214(new TCK(214), "PLT.19.3.4", "The getProtocol method of the HttpServletRequest must always return ‘HTTP/1.1’."),
- JSR286_215(new TCK(215), "PLT.19.3.4", "The following methods of the HttpServletResponse must return null: " +
+ JSR286_213(new TCK(213, "PLT.19.3.4"), "The getMethod method of the HttpServletRequest must always return ‘GET’."),
+ JSR286_214(new TCK(214, "PLT.19.3.4"), "The getProtocol method of the HttpServletRequest must always return ‘HTTP/1.1’."),
+ JSR286_215(new TCK(215, "PLT.19.3.4"), "The following methods of the HttpServletResponse must return null: " +
"encodeRedirectURL and encodeRedirectUrl."),
- JSR286_216(new TCK(216), "PLT.19.3.4", "The following methods of the HttpServletResponse must be equivalent " +
+ JSR286_216(new TCK(216, "PLT.19.3.4"), "The following methods of the HttpServletResponse must be equivalent " +
"to the methods of the RenderResponse of similar name: getCharacterEncoding, setBufferSize, flushBuffer, " +
"resetBuffer, reset, getBufferSize, isCommitted, getOutputStream, getWriter, encodeURL and encodeUrl."),
- JSR286_217(new TCK(217), Status.specUntestable("impl"), "PLT.19.3.4", "The following methods of the HttpServletResponse must perform no " +
+ JSR286_217(new TCK(217, "PLT.19.3.4"), Status.specUntestable("impl"), "The following methods of the HttpServletResponse must perform no " +
"operations: setContentType, setContentLength, setLocale, addCookie, sendError, sendRedirect, setDateHeader, " +
"addDateHeader, setHeader, addHeader, setIntHeader, addIntHeader and setStatus."),
- JSR286_218(new TCK(218), "PLT.19.3.4", "The containsHeader method of the HttpServletResponse must return false."),
- JSR286_219(new TCK(219), "PLT.19.3.4", "The getLocale method of the HttpServletResponse must be based on the " +
+ JSR286_218(new TCK(218, "PLT.19.3.4"), "The containsHeader method of the HttpServletResponse must return false."),
+ JSR286_219(new TCK(219, "PLT.19.3.4"), "The getLocale method of the HttpServletResponse must be based on the " +
"getLocale method of the RenderResponse."),
// PLT.19.3.5 Request and Response Objects for Included Servlets/JSPs from within the ServeResource Method
- JSR286_220(new TCK(220), "PLT.19.3.5", "The following methods of the HttpServletRequest must return null: " +
+ JSR286_220(new TCK(220, "PLT.19.3.5"), "The following methods of the HttpServletRequest must return null: " +
"getRemoteAddr, getRemoteHost, getLocalAddress, getLocalName, getRealPath, and getRequestURL."),
- JSR286_221(new TCK(221), "PLT.19.3.5", "The following methods of the HttpServletRequest must return ‘0’:" +
+ JSR286_221(new TCK(221, "PLT.19.3.5"), "The following methods of the HttpServletRequest must return ‘0’:" +
" getRemotePort and getLocalPort."),
- JSR286_222(new TCK(222), "PLT.19.3.5", "The following methods of the HttpServletRequest must return the " +
+ JSR286_222(new TCK(222, "PLT.19.3.5"), "The following methods of the HttpServletRequest must return the " +
"path and query string information used to obtain the PortletRequestDispatcher object: getPathInfo, " +
"getPathTranslated, getQueryString, getRequestURI and getServletPath."),
- JSR286_223(new TCK(223), "PLT.19.3.5", "The following methods of the HttpServletRequest must be equivalent " +
+ JSR286_223(new TCK(223, "PLT.19.3.5"), "The following methods of the HttpServletRequest must be equivalent " +
"to the methods of the PortletRequest of similar name: getScheme, getServerName, getServerPort, getAttribute, " +
"getAttributeNames, setAttribute, removeAttribute, getLocale, getLocales, isSecure, getAuthType,\n" +
"getContextPath, getRemoteUser, getUserPrincipal, getRequestedSessionId, isRequestedSessionIdValid, getCookies."),
- JSR286_224(new TCK(224), "PLT.19.3.5", "The following methods of the HttpServletRequest must be equivalent to " +
+ JSR286_224(new TCK(224, "PLT.19.3.5"), "The following methods of the HttpServletRequest must be equivalent to " +
"the methods of the ResourceRequest of similar name: getCharacterEncoding, setCharacterEncoding, getContentType, " +
"getMethod, getContentLength and getReader."),
- JSR286_225(new TCK(225), "PLT.19.3.5", "The following methods of the HttpServletRequest must be equivalent to " +
+ JSR286_225(new TCK(225, "PLT.19.3.5"), "The following methods of the HttpServletRequest must be equivalent to " +
"the methods of the PortletRequest of similar name with the provision defined in PLT.18.1.1 Query Strings in " +
"Request Dispatcher Paths Section: getParameter, getParameterNames, getParameterValues and getParameterMap."),
- JSR286_226(new TCK(226), "PLT.19.3.5", "The following methods of the HttpServletRequest must be based on the " +
+ JSR286_226(new TCK(226, "PLT.19.3.5"), "The following methods of the HttpServletRequest must be based on the " +
"properties provided by the getProperties method of the PortletRequest interface: getHeader, getHeaders, " +
"getHeaderNames, getDateHeader and getIntHeader."),
- JSR286_227(new TCK(227), "PLT.19.3.5", "The following methods of the HttpServletRequest must provide the " +
+ JSR286_227(new TCK(227, "PLT.19.3.5"), "The following methods of the HttpServletRequest must provide the " +
"functionality defined by the Servlet Specification: getRequestDispatcher, isUserInRole, getSession, " +
"isRequestedSessionIdFromCookie, isRequestedSessionIdFromURL and isRequestedSessionIdFromUrl."),
- JSR286_228(new TCK(228), "PLT.19.3.5", "The getProtocol method of the HttpServletRequest must always return ‘HTTP/1.1’."),
- JSR286_229(new TCK(229), "PLT.19.3.5", "The following methods of the HttpServletResponse must return null: " +
+ JSR286_228(new TCK(228, "PLT.19.3.5"), "The getProtocol method of the HttpServletRequest must always return ‘HTTP/1.1’."),
+ JSR286_229(new TCK(229, "PLT.19.3.5"), "The following methods of the HttpServletResponse must return null: " +
"encodeRedirectURL and encodeRedirectUrl."),
- JSR286_230(new TCK(230), "PLT.19.3.5", "The following methods of the HttpServletResponse must be equivalent " +
+ JSR286_230(new TCK(230, "PLT.19.3.5"), "The following methods of the HttpServletResponse must be equivalent " +
"to the methods of the ResourceResponse of similar name: getCharacterEncoding, setBufferSize, flushBuffer, " +
"resetBuffer, reset, getBufferSize, isCommitted, getOutputStream, getWriter, getLocale, encodeURL and encodeUrl."),
- JSR286_231(new TCK(231), Status.specUntestable("impl"), "PLT.19.3.5", "The following methods of the HttpServletResponse must perform no " +
+ JSR286_231(new TCK(231, "PLT.19.3.5"), Status.specUntestable("impl"), "The following methods of the HttpServletResponse must perform no " +
"operations: sendError, sendRedirect, addCookie, setDateHeader, addDateHeader, setHeader, addHeader, " +
"setIntHeader, addIntHeader, setContentLength, setCharacterEncoding, setContentType, setLocale and setStatus."),
- JSR286_232(new TCK(232), "PLT.19.3.5", "The containsHeader method of the HttpServletResponse must return false."),
+ JSR286_232(new TCK(232, "PLT.19.3.5"), "The containsHeader method of the HttpServletResponse must return false."),
//
- JSR286_233(new TCK(233), "PLT.19.3.7", "If the servlet or JSP that is the target of a request dispatcher throws a " +
+ JSR286_233(new TCK(233, "PLT.19.3.7"), "If the servlet or JSP that is the target of a request dispatcher throws a " +
"runtime exception or a checked exception of type IOException, it must be propagated to the calling portlet."),
- JSR286_234(new TCK(234), "PLT.19.3.7", "All other exceptions, including a ServletException, must be wrapped with a" +
+ JSR286_234(new TCK(234, "PLT.19.3.7"), "All other exceptions, including a ServletException, must be wrapped with a" +
" PortletException. The root cause of the exception must be set to the original exception before being propagated."),
- JSR286_235(new TCK(235), "PLT.19.3.8", "Thus the portlet acts as starting point of the include chain and the " +
+ JSR286_235(new TCK(235, "PLT.19.3.8"), "Thus the portlet acts as starting point of the include chain and the " +
"included / forwarded servlet must get the path and query string information used to obtain the " +
"PortletRequestDispatcher object."),
- JSR286_236(new TCK(236), "PLT.19.4", "If output data exists in the response buffer that has not been committed, " +
+ JSR286_236(new TCK(236, "PLT.19.4"), "If output data exists in the response buffer that has not been committed, " +
"the content must be cleared before the target servlet’s service method is called."),
- JSR286_237(new TCK(237), "PLT.19.4", "If the response has been committed, an IllegalStateException must be thrown."),
- JSR286_238(new TCK(238), "PLT.19.4", "Before the forward method of the RequestDispatcher interface returns, the " +
+ JSR286_237(new TCK(237, "PLT.19.4"), "If the response has been committed, an IllegalStateException must be thrown."),
+ JSR286_238(new TCK(238, "PLT.19.4"), "Before the forward method of the RequestDispatcher interface returns, the " +
"response content must be sent and committed, and closed by the portlet container."),
- JSR286_239(new TCK(239), "PLT.19.4.2", "The following request attributes must be set: " +
+ JSR286_239(new TCK(239, "PLT.19.4.2"), "The following request attributes must be set: " +
"javax.servlet.forward.request_uri, javax.servlet.forward.context_path, javax.servlet.forward.servlet_path, " +
"javax.servlet.forward.path_info, javax.servlet.forward.query_string"),
- JSR286_240(new TCK(240), "PLT.19.4.2", "The values of these attributes must be equal to the return values of the " +
+ JSR286_240(new TCK(240, "PLT.19.4.2"), "The values of these attributes must be equal to the return values of the " +
"HttpServletRequest methods getRequestURI, getContextPath, getServletPath, getPathInfo, getQueryString " +
"respectively, invoked on the request object passed to the first servlet object in the forward call chain."),
- JSR286_241(new TCK(241), "PLT.19.4.2", "These attributes are accessible from the forwarded servlet via the " +
+ JSR286_241(new TCK(241, "PLT.19.4.2"), "These attributes are accessible from the forwarded servlet via the " +
"getAttribute method on the request object. Note that these attributes must always reflect the information " +
"in the target of the first forward servlet in the situation that multiple forwards and subsequent includes " +
"are called."),
- JSR286_242(new TCK(242), "PLT.19.4.2", "If the forwarded servlet was obtained by using the getNamedDispatcher" +
+ JSR286_242(new TCK(242, "PLT.19.4.2"), "If the forwarded servlet was obtained by using the getNamedDispatcher" +
" method, these attributes must not be set."),
// PLT.19.4.3 Request and Response Objects for Forwarded Servlets/JSPs from within the Action and Event processing Methods
- JSR286_243(new TCK(243), "PLT.19.4.3", "The following methods of the HttpServletRequest must return null: " +
+ JSR286_243(new TCK(243, "PLT.19.4.3"), "The following methods of the HttpServletRequest must return null: " +
"getRemoteAddr, getRemoteHost, getLocalAddress, getLocalName, getRealPath, and getRequestURL."),
- JSR286_244(new TCK(244), "PLT.19.4.3", "The following methods of the HttpServletRequest must return ‘0’: " +
+ JSR286_244(new TCK(244, "PLT.19.4.3"), "The following methods of the HttpServletRequest must return ‘0’: " +
"getRemotePort and getLocalPort."),
- JSR286_245(new TCK(245), "PLT.19.4.3", "The following methods of the HttpServletRequest must return the path " +
+ JSR286_245(new TCK(245, "PLT.19.4.3"), "The following methods of the HttpServletRequest must return the path " +
"and query string information used to obtain the PortletRequestDispatcher object: getPathInfo, getPathTranslated, " +
"getQueryString, getRequestURI and getServletPath."),
- JSR286_246(new TCK(246), "PLT.19.4.3", "The following methods of the HttpServletRequest must be equivalent to " +
+ JSR286_246(new TCK(246, "PLT.19.4.3"), "The following methods of the HttpServletRequest must be equivalent to " +
"the methods of the PortletRequest of similar name: getScheme, getServerName, getServerPort, getAttribute, " +
"getAttributeNames, setAttribute, removeAttribute, getLocale, getLocales, isSecure, getAuthType, getContextPath, " +
"getRemoteUser, getUserPrincipal, getRequestedSessionId, isRequestedSessionIdValid, getCookies."),
- JSR286_247(new TCK(247), "PLT.19.4.3", "The following methods of the HttpServletRequest must be equivalent to the " +
+ JSR286_247(new TCK(247, "PLT.19.4.3"), "The following methods of the HttpServletRequest must be equivalent to the " +
"methods of the PortletRequest of similar name with the provision defined in PLT.18.1.1 Query Strings in Request " +
"Dispatcher Paths Section: getParameter, getParameterNames, getParameterValues and getParameterMap."),
- JSR286_248(new TCK(248), "PLT.19.4.3", "In case of a forward from processAction, the following methods of the " +
+ JSR286_248(new TCK(248, "PLT.19.4.3"), "In case of a forward from processAction, the following methods of the " +
"HttpServletRequest must be based on the corresponding methods of the\n" +
"ActionRequest: getCharacterEncoding, setCharacterEncoding, getContentType, getInputStream, getContentLength, " +
"getMethod and getReader."),
- JSR286_249(new TCK(249), "PLT.19.4.3", "In case of a forward from processEvent, the following methods of the " +
+ JSR286_249(new TCK(249, "PLT.19.4.3"), "In case of a forward from processEvent, the following methods of the " +
"HttpServletRequest must do no operations and/or return null: getCharacterEncoding, setCharacterEncoding, " +
"getContentType, getInputStream and getReader."),
- JSR286_250(new TCK(250), "PLT.19.4.3", "The getContentLength method of the HttpServletRequest must return 0."),
- JSR286_251(new TCK(251), "PLT.19.4.3", "The getMethod method of the HttpServletRequest must be based on the " +
+ JSR286_250(new TCK(250, "PLT.19.4.3"), "The getContentLength method of the HttpServletRequest must return 0."),
+ JSR286_251(new TCK(251, "PLT.19.4.3"), "The getMethod method of the HttpServletRequest must be based on the " +
"corresponding method of the ActionRequest triggering this event."),
- JSR286_252(new TCK(252), "PLT.19.4.3", "The following methods of the HttpServletRequest must be based on the " +
+ JSR286_252(new TCK(252, "PLT.19.4.3"), "The following methods of the HttpServletRequest must be based on the " +
"properties provided by the getProperties method of the PortletRequest interface: getHeader, getHeaders, " +
"getHeaderNames, getDateHeader and getIntHeader."),
- JSR286_253(new TCK(253), "PLT.19.4.3", "The following methods of the HttpServletRequest must provide the " +
+ JSR286_253(new TCK(253, "PLT.19.4.3"), "The following methods of the HttpServletRequest must provide the " +
"functionality defined by the Servlet Specification: getRequestDispatcher, isUserInRole, getSession, " +
"isRequestedSessionIdFromCookie, isRequestedSessionIdFromURL and isRequestedSessionIdFromUrl."),
- JSR286_254(new TCK(254), "PLT.19.4.3", "The getProtocol method of the HttpServletRequest must always return " +
+ JSR286_254(new TCK(254, "PLT.19.4.3"), "The getProtocol method of the HttpServletRequest must always return " +
"‘HTTP/1.1’."),
- JSR286_255(new TCK(255), "PLT.19.4.3", "The following methods of the HttpServletResponse must return null: " +
+ JSR286_255(new TCK(255, "PLT.19.4.3"), "The following methods of the HttpServletResponse must return null: " +
"encodeRedirectURL, encodeRedirectUrl, getCharacterEncoding, getContentType, getLocale, and getBufferSize."),
- JSR286_256(new TCK(256), "PLT.19.4.3", "The following methods of the HttpServletResponse must return an " +
+ JSR286_256(new TCK(256, "PLT.19.4.3"), "The following methods of the HttpServletResponse must return an " +
"outputstream / writer that ignores any output written to it: getOutputStream and getWriter."),
- JSR286_257(new TCK(257), "PLT.19.4.3", "The following methods of the HttpServletResponse must be equivalent " +
+ JSR286_257(new TCK(257, "PLT.19.4.3"), "The following methods of the HttpServletResponse must be equivalent " +
"to the methods of the ActionResponse/EventResponse of similar name: encodeURL and encodeUrl."),
- JSR286_258(new TCK(258), Status.specUntestable("imp"), "PLT.19.4.3", "The following methods of the HttpServletResponse must perform no " +
+ JSR286_258(new TCK(258, "PLT.19.4.3"), Status.specUntestable("imp"), "The following methods of the HttpServletResponse must perform no " +
"operations: resetBuffer, reset, setContentType, setContentLength,\n" +
"setCharacterEncoding, setLocale, sendError, setDateHeader, addDateHeader, setHeader, addHeader, setIntHeader, " +
"addIntHeader, setStatus, setBufferSize and flushBuffer."),
- JSR286_259(new TCK(259), Status.specUntestable("impl"), "PLT.19.4.3", "The addCookie method of the HttpServletResponse must be based on " +
+ JSR286_259(new TCK(259, "PLT.19.4.3"), Status.specUntestable("impl"), "The addCookie method of the HttpServletResponse must be based on " +
"addProperty method of the ActionResponse/EventResponse interface."),
- JSR286_260(new TCK(260), "PLT.19.4.3", "The containsHeader method of the HttpServletResponse must return false."),
- JSR286_261(new TCK(261), "PLT.19.4.3", "The isCommitted method of the HttpServletResponse must return false."),
+ JSR286_260(new TCK(260, "PLT.19.4.3"), "The containsHeader method of the HttpServletResponse must return false."),
+ JSR286_261(new TCK(261, "PLT.19.4.3"), "The isCommitted method of the HttpServletResponse must return false."),
// PLT.19.4.4 Request and Response Objects for Forwarded Servlets/JSPs from within the Render Method
- JSR286_262(new TCK(262), "PLT.19.4.4", "The following methods of the HttpServletRequest must return null: " +
+ JSR286_262(new TCK(262, "PLT.19.4.4"), "The following methods of the HttpServletRequest must return null: " +
"getRemoteAddr, getRemoteHost, getLocalAddress, getLocalName, getRealPath, and getRequestURL."),
- JSR286_263(new TCK(263), "PLT.19.4.4", "The following methods of the HttpServletRequest must return ‘0’: " +
+ JSR286_263(new TCK(263, "PLT.19.4.4"), "The following methods of the HttpServletRequest must return ‘0’: " +
"getRemotePort and getLocalPort."),
- JSR286_264(new TCK(264), "PLT.19.4.4", "The following methods of the HttpServletRequest must return the " +
+ JSR286_264(new TCK(264, "PLT.19.4.4"), "The following methods of the HttpServletRequest must return the " +
"path and query string information used to obtain the PortletRequestDispatcher object: getPathInfo, " +
"getPathTranslated, getQueryString, getRequestURI and getServletPath."),
- JSR286_265(new TCK(265), "PLT.19.4.4", "The following methods of the HttpServletRequest must be equivalent " +
+ JSR286_265(new TCK(265, "PLT.19.4.4"), "The following methods of the HttpServletRequest must be equivalent " +
"to the methods of the PortletRequest of similar name: getScheme, getServerName, getServerPort, getAttribute, " +
"getAttributeNames, setAttribute, removeAttribute, getLocale, getLocales, isSecure, getAuthType, " +
"getContextPath, getRemoteUser, getUserPrincipal, getRequestedSessionId, isRequestedSessionIdValid, getCookies."),
- JSR286_266(new TCK(266), "PLT.19.4.4", "The following methods of the HttpServletRequest must be equivalent " +
+ JSR286_266(new TCK(266, "PLT.19.4.4"), "The following methods of the HttpServletRequest must be equivalent " +
"to the methods of the PortletRequest of similar name with the provision defined in PLT.18.1.1 Query Strings " +
"in Request Dispatcher Paths Section: getParameter, getParameterNames, getParameterValues and getParameterMap."),
- JSR286_267(new TCK(267), "PLT.19.4.4", "The following methods of the HttpServletRequest must do no operations " +
+ JSR286_267(new TCK(267, "PLT.19.4.4"), "The following methods of the HttpServletRequest must do no operations " +
"and return null: getCharacterEncoding, setCharacterEncoding, getContentType, getInputStream and getReader."),
- JSR286_268(new TCK(268), "PLT.19.4.4", "The getContentLength method of the HttpServletRequest must return 0."),
- JSR286_269(new TCK(269), "PLT.19.4.4", "The following methods of the HttpServletRequest must be based on the " +
+ JSR286_268(new TCK(268, "PLT.19.4.4"), "The getContentLength method of the HttpServletRequest must return 0."),
+ JSR286_269(new TCK(269, "PLT.19.4.4"), "The following methods of the HttpServletRequest must be based on the " +
"properties provided by the getProperties method of the PortletRequest interface: getHeader, getHeaders, " +
"getHeaderNames, getDateHeader and getIntHeader."),
- JSR286_270(new TCK(270), "PLT.19.4.4", "The following methods of the HttpServletRequest must provide the " +
+ JSR286_270(new TCK(270, "PLT.19.4.4"), "The following methods of the HttpServletRequest must provide the " +
"functionality defined by the Servlet Specification: getRequestDispatcher, isUserInRole, getSession, " +
"isRequestedSessionIdFromCookie, isRequestedSessionIdFromURL and isRequestedSessionIdFromUrl."),
- JSR286_271(new TCK(271), "PLT.19.4.4", "The getMethod method of the HttpServletRequest must always return ‘GET’."),
- JSR286_272(new TCK(272), "PLT.19.4.4", "The getProtocol method of the HttpServletRequest must always return ‘HTTP/1.1’."),
- JSR286_273(new TCK(273), "PLT.19.4.4", "The following methods of the HttpServletResponse must return null: " +
+ JSR286_271(new TCK(271, "PLT.19.4.4"), "The getMethod method of the HttpServletRequest must always return ‘GET’."),
+ JSR286_272(new TCK(272, "PLT.19.4.4"), "The getProtocol method of the HttpServletRequest must always return ‘HTTP/1.1’."),
+ JSR286_273(new TCK(273, "PLT.19.4.4"), "The following methods of the HttpServletResponse must return null: " +
"encodeRedirectURL and encodeRedirectUrl."),
- JSR286_274(new TCK(274), "PLT.19.4.4", "The following methods of the HttpServletResponse must be equivalent " +
+ JSR286_274(new TCK(274, "PLT.19.4.4"), "The following methods of the HttpServletResponse must be equivalent " +
"to the methods of the RenderResponse of similar name: getCharacterEncoding, setBufferSize, flushBuffer, " +
"resetBuffer, reset, getBufferSize, getLocale, isCommitted, getOutputStream, getWriter, setContentType, " +
"encodeURL and encodeUrl."),
- JSR286_275(new TCK(275), Status.specUntestable("impl"), "PLT.19.4.4", "The following methods of the HttpServletResponse must perform no " +
+ JSR286_275(new TCK(275, "PLT.19.4.4"), Status.specUntestable("impl"), "The following methods of the HttpServletResponse must perform no " +
"operations: setContentLength, setLocale, sendError, sendRedirect, and setStatus."),
- JSR286_276(new TCK(276), Status.specUntestable("impl"), "PLT.19.4.4", "The containsHeader method of the HttpServletResponse must return false."),
- JSR286_277(new TCK(277), "PLT.19.4.4", "The following methods of the HttpServletResponse must be based on " +
+ JSR286_276(new TCK(276, "PLT.19.4.4"), Status.specUntestable("impl"), "The containsHeader method of the HttpServletResponse must return false."),
+ JSR286_277(new TCK(277, "PLT.19.4.4"), "The following methods of the HttpServletResponse must be based on " +
"the properties provided by the setProperties/addProperties method of the RenderResponse interface: addCookie, " +
"setDateHeader, addDateHeader, setHeader, addHeader, setIntHeader, addIntHeader."),
// PLT.19.4.5 Request and Response Objects for Forwarded Servlets/JSPs from within the ServeResource Method
- JSR286_278(new TCK(278), "PLT.19.4.5", "The following methods of the HttpServletRequest must return null: " +
+ JSR286_278(new TCK(278, "PLT.19.4.5"), "The following methods of the HttpServletRequest must return null: " +
"getRemoteAddr, getRemoteHost, getLocalAddress, getLocalName, getRealPath, and getRequestURL."),
- JSR286_279(new TCK(279), "PLT.19.4.5", "The following methods of the HttpServletRequest must return ‘0’: " +
+ JSR286_279(new TCK(279, "PLT.19.4.5"), "The following methods of the HttpServletRequest must return ‘0’: " +
"getRemotePort and getLocalPort."),
- JSR286_280(new TCK(280), "PLT.19.4.5", "The following methods of the HttpServletRequest must return the " +
+ JSR286_280(new TCK(280, "PLT.19.4.5"), "The following methods of the HttpServletRequest must return the " +
"path and query string information used to obtain the PortletRequestDispatcher object: getPathInfo, " +
"getPathTranslated, getQueryString, getRequestURI and getServletPath."),
- JSR286_281(new TCK(281), "PLT.19.4.5", "The following methods of the HttpServletRequest must be equivalent " +
+ JSR286_281(new TCK(281, "PLT.19.4.5"), "The following methods of the HttpServletRequest must be equivalent " +
"to the methods of the PortletRequest of similar name: getScheme, getServerName, getServerPort, getAttribute, " +
"getAttributeNames, setAttribute, removeAttribute, getLocale, getLocales, isSecure, getAuthType, \n" +
"getContextPath, getRemoteUser, getUserPrincipal, getRequestedSessionId, isRequestedSessionIdValid, getCookies."),
- JSR286_282(new TCK(282), "PLT.19.4.5", "The following methods of the HttpServletRequest must be equivalent to " +
+ JSR286_282(new TCK(282, "PLT.19.4.5"), "The following methods of the HttpServletRequest must be equivalent to " +
"the methods of the ResourceRequest of similar name: getCharacterEncoding, setCharacterEncoding, getContentType, getMethod and getReader."),
- JSR286_283(new TCK(283), "PLT.19.4.5", "The following methods of the HttpServletRequest must be equivalent to " +
+ JSR286_283(new TCK(283, "PLT.19.4.5"), "The following methods of the HttpServletRequest must be equivalent to " +
"the methods of the PortletRequest of similar name with the provision defined in PLT.18.1.1 Query Strings " +
"in Request Dispatcher Paths Section: getParameter, getParameterNames, getParameterValues and getParameterMap."),
- JSR286_284(new TCK(284), "PLT.19.4.5", "The following methods of the HttpServletRequest must be based on the " +
+ JSR286_284(new TCK(284, "PLT.19.4.5"), "The following methods of the HttpServletRequest must be based on the " +
"properties provided by the getProperties method of the PortletRequest interface: getHeader, getHeaders, " +
"getHeaderNames, getDateHeader and getIntHeader."),
- JSR286_285(new TCK(285), "PLT.19.4.5", "The following methods of the HttpServletRequest must provide the " +
+ JSR286_285(new TCK(285, "PLT.19.4.5"), "The following methods of the HttpServletRequest must provide the " +
"functionality defined by the Servlet Specification: getRequestDispatcher, isUserInRole, getSession, " +
"isRequestedSessionIdFromCookie, isRequestedSessionIdFromURL and isRequestedSessionIdFromUrl."),
- JSR286_286(new TCK(286), "PLT.19.4.5", "The getProtocol method of the HttpServletRequest must always return ‘HTTP/1.1’."),
- JSR286_287(new TCK(287), "PLT.19.4.5", "The following methods of the HttpServletResponse must return null: " +
+ JSR286_286(new TCK(286, "PLT.19.4.5"), "The getProtocol method of the HttpServletRequest must always return ‘HTTP/1.1’."),
+ JSR286_287(new TCK(287, "PLT.19.4.5"), "The following methods of the HttpServletResponse must return null: " +
"encodeRedirectURL and encodeRedirectUrl."),
- JSR286_288(new TCK(288), "PLT.19.4.5", "The following methods of the HttpServletResponse must be equivalent " +
+ JSR286_288(new TCK(288, "PLT.19.4.5"), "The following methods of the HttpServletResponse must be equivalent " +
"to the methods of the ResourceResponse of similar name: getCharacterEncoding, setContentType, setBufferSize, " +
"flushBuffer, resetBuffer, reset, getBufferSize, isCommitted, getOutputStream, getWriter, getLocale, encodeURL " +
"and encodeUrl."),
- JSR286_289(new TCK(289), Status.specUntestable("impl"), "PLT.19.4.5", "The following methods of the HttpServletResponse must perform no operations: " +
+ JSR286_289(new TCK(289, "PLT.19.4.5"), Status.specUntestable("impl"), "The following methods of the HttpServletResponse must perform no operations: " +
"sendError, sendRedirect."),
- JSR286_290(new TCK(290), Status.specUntestable("impl"), "PLT.19.4.5", "The containsHeader method of the HttpServletResponse must return false."),
+ JSR286_290(new TCK(290, "PLT.19.4.5"), Status.specUntestable("impl"), "The containsHeader method of the HttpServletResponse must return false."),
//
- JSR286_291(new TCK(291), "PLT.19.5", "Since the Java Servlet Specification V2.4 you can specify servlet filters " +
+ JSR286_291(new TCK(291, "PLT.19.5"), "Since the Java Servlet Specification V2.4 you can specify servlet filters " +
"for request dispatcher include calls. Portlet containers must support this capability for included servlets " +
"via the PortletRequestDispatcher."),
// PLT.20 Portlet Filter
- JSR286_292(new TCK(292), "PLT.20.2.1", "After deployment of the portlet application, and before a request causes " +
+ JSR286_292(new TCK(292, "PLT.20.2.1"), "After deployment of the portlet application, and before a request causes " +
"the portlet container to access a portlet, the portlet container must locate the list of portlet filters that " +
"must be applied to the portlet as described below."),
- JSR286_293(new TCK(293), "PLT.20.2.1", "The portlet container must ensure that it has instantiated a filter of the " +
+ JSR286_293(new TCK(293, "PLT.20.2.1"), "The portlet container must ensure that it has instantiated a filter of the " +
"appropriate class for each filter in the list, and called its init(FilterConfig config) method"),
- JSR286_294(new TCK(294), "PLT.20.2.1", "Depending on the target method of doFilter call the PortletRequest and " +
+ JSR286_294(new TCK(294, "PLT.20.2.1"), "Depending on the target method of doFilter call the PortletRequest and " +
"PortletResponse must be instances of the following interfaces: ActionRequest and ActionResponse for " +
"processAction calls, EventRequest and EventResponse for processEvent calls, RenderRequest and RenderResponse " +
"for render calls, ResourceRequest and ResourceResponse for serveResource calls"),
- JSR286_295(new TCK(295), "PLT.20.2.1", "Before a filter instance can be removed from service by the portlet " +
+ JSR286_295(new TCK(295, "PLT.20.2.1"), "Before a filter instance can be removed from service by the portlet " +
"container, the portlet container must first call the destroy method on the filter to enable the filter to " +
"release any resources and perform other cleanup operations."),
- JSR286_296(new TCK(296), "PLT.20.2.2", "When a filter invokes the doFilter method on the portlet container’s " +
+ JSR286_296(new TCK(296, "PLT.20.2.2"), "When a filter invokes the doFilter method on the portlet container’s " +
"filter chain implementation, the container must ensure that the request and\n" +
"response object that it passes to the next component in the filter chain, or to the target portlet if the " +
"filter was the last in the chain, is the same object that was passed into the doFilter method by the calling " +
"filter or one of the above mentioned wrappers."),
- JSR286_297(new TCK(297), "PLT.20.2.4", "The portlet container must instantiate exactly one instance of the Java " +
+ JSR286_297(new TCK(297, "PLT.20.2.4"), "The portlet container must instantiate exactly one instance of the Java " +
"class defining the filter per filter declaration in the deployment descriptor."),
- JSR286_298(new TCK(298), "PLT.20.2.4", "Filters can be associated with groups of portlets using the ‘*’ character as " +
+ JSR286_298(new TCK(298, "PLT.20.2.4"), "Filters can be associated with groups of portlets using the ‘*’ character as " +
"a wildcard at the end of a string to indicate that the filter must be applied to any portlet whose name starts " +
"with the characters before the “*” character."),
- JSR286_299(new TCK(299), "PLT.20.2.4", "The portlet container is free to add additional filters at any place in this " +
+ JSR286_299(new TCK(299, "PLT.20.2.4"), "The portlet container is free to add additional filters at any place in this " +
"filter chain, but must not remove filters matching a specific portlet."),
- JSR286_300(new TCK(300), "PLT.20.2.5", "A portlet filter can be applied to different lifecycle method calls: " +
+ JSR286_300(new TCK(300, "PLT.20.2.5"), "A portlet filter can be applied to different lifecycle method calls: " +
"processAction, processEvent, render, serveResource"),
- JSR286_301(new TCK(301), "PLT.20.2.5", "Thus the filter must define the lifecycle method for which the filter " +
+ JSR286_301(new TCK(301, "PLT.20.2.5"), "Thus the filter must define the lifecycle method for which the filter " +
"is written in the <lifecycle> element of the <filter> element."),
// PLT.21 User Information
- JSR286_302(new TCK(302), Status.specUntestable("impl"), "PLT.21.2", "If the request is done in the context of " +
+ JSR286_302(new TCK(302, "PLT.21.2"), Status.specUntestable("impl"), "If the request is done in the context of " +
"an un-authenticated user, calls to the getAttribute method of the request using the USER_INFO constant must " +
"return null."),
@@ -1232,30 +1235,30 @@
// PLT.23 Portlet Applications
- JSR286_303(new TCK(303), Status.specUntestable(""), "PLT.23.2", "The portlet container must enforce a one to one " +
+ JSR286_303(new TCK(303, "PLT.23.2"), Status.specUntestable(""), "The portlet container must enforce a one to one " +
"correspondence between a portlet application and a PortletContext."),
- JSR286_304(new TCK(304), Status.specUntestable(""), "PLT.23.2", "If the application is a distributed application, " +
+ JSR286_304(new TCK(304, "PLT.23.2"), Status.specUntestable(""), "If the application is a distributed application, " +
"the portlet container must create an instance per VM."),
- JSR286_305(new TCK(305), Status.specUntestable(""), "PLT.23.5", "The portlet container must use the same classloader " +
+ JSR286_305(new TCK(305, "PLT.23.5"), Status.specUntestable(""), "The portlet container must use the same classloader " +
"the servlet container uses for the web application resources for loading the portlets and related resources " +
"within the portlet application."),
- JSR286_306(new TCK(306), "PLT.23.5(servlet spec)", "The portlet container must ensure that requirements defined " +
+ JSR286_306(new TCK(306, "PLT.23.5(servlet spec)"), "The portlet container must ensure that requirements defined " +
"in the Servlet Specification SRV.9.7.1 and SRV.9.7.2 Sections are fulfilled."),
// PLT.24 Security
- JSR286_307(new TCK(307), "PLT.24.2", "The values that the Portlet API getRemoteUser and getUserPrincipal methods " +
+ JSR286_307(new TCK(307, "PLT.24.2"), "The values that the Portlet API getRemoteUser and getUserPrincipal methods " +
"return the same values returned by the equivalent methods of the servlet response object."),
- JSR286_308(new TCK(308), "PLT.24.3", "The container uses the mapping of security-role-ref to security-role when " +
+ JSR286_308(new TCK(308, "PLT.24.3"), "The container uses the mapping of security-role-ref to security-role when " +
"determining the return value of the call."),
- JSR286_309(new TCK(309), "PLT.24.3", "If the security-role-ref element does not define a role-link element, the " +
+ JSR286_309(new TCK(309, "PLT.24.3"), "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 securityrole elements " +
"defined in the web.xml deployment descriptor of the portlet application."),
- JSR286_310(new TCK(310), "PLT.24.4", "When it is specified, the container must propagate the security identity of " +
+ JSR286_310(new TCK(310, "PLT.24.4"), "When it is specified, the 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."),
- JSR286_311(new TCK(311), "PLT.24.4", "The security role name must be one of the security role names defined for the " +
+ JSR286_311(new TCK(311, "PLT.24.4"), "The security role name must be one of the security role names defined for the " +
"web.xml deployment descriptor."),
@@ -1265,94 +1268,99 @@
// PLT.26 Portlet Tag Library
- JSR286_312(new TCK(312), "PLT.26.1", "The portlet-container must provide an implementation of the portlet tag library"),
- JSR286_313(new TCK(313), "PLT.26.1", "The defineObjects tag must define the following variables in the JSP page: " +
+ JSR286_312(new TCK(312, "PLT.26.1"), "The portlet-container must provide an implementation of the portlet tag library"),
+ JSR286_313(new TCK(313, "PLT.26.1"), "The defineObjects tag must define the following variables in the JSP page: " +
"[REF TO THE SPEC]"),
- JSR286_314(new TCK(314), Status.specUntestable(""), "PLT.26.2", "The defineObjects tag must not define any " +
+ JSR286_314(new TCK(314, "PLT.26.2"), Status.specUntestable(""), "The defineObjects tag must not define any " +
"attribute and it must not contain any body content"),
- JSR286_315(new TCK(315), "PLT.26.2", "The portlet actionURL tag creates a URL that must point to the current " +
+ JSR286_315(new TCK(315, "PLT.26.2"), "The portlet actionURL tag creates a URL that must point to the current " +
"portlet and must trigger an action request with the supplied parameters"),
- JSR286_316(new TCK(316), "PLT.26.2", "If the specified window state is illegal for the current request, a" +
+ JSR286_316(new TCK(316, "PLT.26.2"), "If the specified window state is illegal for the current request, a" +
" JspException must be thrown."),
- JSR286_317(new TCK(317), "PLT.26.2", "If a window state is notset for a URL, it should stay the same as the " +
+ JSR286_317(new TCK(317, "PLT.26.2"), "If a window state is notset for a URL, it should stay the same as the " +
"window state of the current request."),
- JSR286_318(new TCK(318), "PLT.26.2", "portletMode (Type: String, non-required) – indicates the portlet mode " +
+ JSR286_318(new TCK(318, "PLT.26.2"), "portletMode (Type: String, non-required) – indicates the portlet mode " +
"that the portlet must have when this link is executed, if no error condition ocurred"),
- JSR286_319(new TCK(319), "PLT.26.2", "If the specified portlet mode is illegal for the current request, a " +
+ JSR286_319(new TCK(319, "PLT.26.2"), "If the specified portlet mode is illegal for the current request, a " +
"JspException must be thrown."),
- JSR286_320(new TCK(320), "PLT.26.2", "If a portlet mode is not set for a URL, it must stay the same as the mode of " +
+ JSR286_320(new TCK(320, "PLT.26.2"), "If a portlet mode is not set for a URL, it must stay the same as the mode of " +
"the current request."),
- JSR286_321(new TCK(321), "PLT.26.2", "If the result is exported as a JSP scoped variable, defined via the var " +
+ JSR286_321(new TCK(321, "PLT.26.2"), "If the result is exported as a JSP scoped variable, defined via the var " +
"attributes, nothing is written to the current JspWriter."),
- JSR286_322(new TCK(322), "PLT.26.2", "If the given variable name already exists in the scope of the page or it " +
+ JSR286_322(new TCK(322, "PLT.26.2"), "If the given variable name already exists in the scope of the page or it " +
"is used within an iteration loop, the new value overwrites the old one."),
- JSR286_323(new TCK(323), Status.specUntestable(""), "PLT.26.2", "If the specified security setting is not supported " +
+ JSR286_323(new TCK(323, "PLT.26.2"), Status.specUntestable(""), "If the specified security setting is not supported " +
"by the run-time environment, a JspException must be thrown"),
- JSR286_324(new TCK(324), Status.specUntestable(""), "PLT.26.2", "copyCurrentRenderParameters (Type: boolean, " +
+ JSR286_324(new TCK(324, "PLT.26.2"), Status.specUntestable(""), "copyCurrentRenderParameters (Type: boolean, " +
"non-required) – if set to true requests that the private render parameters of the portlet of the current " +
"request must be attached to this URL."),
- JSR286_325(new TCK(325), Status.specUntestable(""), "PLT.26.2", "If additional <portlet:param> tags are specified " +
+ JSR286_325(new TCK(325, "PLT.26.2"), Status.specUntestable(""), "If additional <portlet:param> tags are specified " +
"parameters with the same name as an existing render parameter will get merged and the value defined in " +
"additional <portlet:param> tags must be pre-pended."),
- JSR286_326(new TCK(326), Status.specUntestable(""), "PLT.26.2", "escapeXml (Type: boolean, non-required) – " +
+ JSR286_326(new TCK(326, "PLT.26.2"), Status.specUntestable(""), "escapeXml (Type: boolean, non-required) – " +
"determines whether characters <,>,&,’,” in the resulting output should be converted to their corresponding " +
"character entity codes (‘<’ gets converted to ‘<’, ‘>’ gets converted to ‘>’ ‘&’ gets converted to " +
"‘&’, ‘‘’ gets converted to ‘'’, ‘”’ gets converted to ‘"’)."),
- JSR286_327(new TCK(327), "PLT.26.3", "The portlet renderURL tag creates a URL that must point to the current " +
+ JSR286_327(new TCK(327, "PLT.26.3"), "The portlet renderURL tag creates a URL that must point to the current " +
"portlet and must trigger a render request with the supplied parameters."),
- JSR286_328(new TCK(328), "PLT.26.3", "If the specified window state is illegal for the current request, a " +
+ JSR286_328(new TCK(328, "PLT.26.3"), "If the specified window state is illegal for the current request, a " +
"JspException must be thrown."),
- JSR286_329(new TCK(329), "PLT.26.3", "If a window state is not set for a URL, it should stay the same as the " +
+ JSR286_329(new TCK(329, "PLT.26.3"), "If a window state is not set for a URL, it should stay the same as the " +
"window state of the current request."),
- JSR286_330(new TCK(330), "PLT.26.3", "portletMode (Type: String, non-required) – indicates the portlet mode that " +
+ JSR286_330(new TCK(330, "PLT.26.3"), "portletMode (Type: String, non-required) – indicates the portlet mode that " +
"the portlet must have when this link is executed, if not error condition ocurred."),
- JSR286_331(new TCK(331), "PLT.26.3", "If the specified portlet mode is illegal for the current request, a " +
+ JSR286_331(new TCK(331, "PLT.26.3"), "If the specified portlet mode is illegal for the current request, a " +
"JspException must be thrown."),
- JSR286_332(new TCK(332), "PLT.26.3", "If a portlet mode is not set for a URL, it must stay the same as the " +
+ JSR286_332(new TCK(332, "PLT.26.3"), "If a portlet mode is not set for a URL, it must stay the same as the " +
"mode of the current request."),
- JSR286_333(new TCK(333), "PLT.26.3", "If the result is exported as a JSP scoped variable, defined via the var " +
+ JSR286_333(new TCK(333, "PLT.26.3"), "If the result is exported as a JSP scoped variable, defined via the var " +
"attributes, nothing is written to the current JspWriter."),
- JSR286_334(new TCK(334), "PLT.26.3", "If the given variable name already exists in the scope of the page or it " +
+ JSR286_334(new TCK(334, "PLT.26.3"), "If the given variable name already exists in the scope of the page or it " +
"is used within an iteration loop, the new value overwrites the old one"),
- JSR286_335(new TCK(335), Status.specUntestable(""), "PLT.26.3", "If the security is not set for a URL, it must " +
+ JSR286_335(new TCK(335, "PLT.26.3"), Status.specUntestable(""), "If the security is not set for a URL, it must " +
"stay the same as the security setting of the current request."),
- JSR286_336(new TCK(336), Status.specUntestable(""), "PLT.26.3", "copyCurrentRenderParameters (Type: boolean, " +
+ JSR286_336(new TCK(336, "PLT.26.3"), Status.specUntestable(""), "copyCurrentRenderParameters (Type: boolean, " +
"non-required) – if set to true requests that the private render parameters of the portlet of the current " +
"request must attached to this URL."),
- JSR286_337(new TCK(337), Status.specUntestable(""), "PLT.26.3", "If additional <portlet:param> tags are specified " +
+ JSR286_337(new TCK(337, "PLT.26.3"), Status.specUntestable(""), "If additional <portlet:param> tags are specified " +
"parameters with the same name as an existing render parameter will get merged and the value defined in " +
"additional <portlet:param> tags must be pre-pended."),
- JSR286_338(new TCK(338), Status.specUntestable(""), "PLT.26.3", "escapeXml (Type: boolean, non-required) – " +
+ JSR286_338(new TCK(338, "PLT.26.3"), Status.specUntestable(""), "escapeXml (Type: boolean, non-required) – " +
"deterrmines whether characters <,>,&,’,” in the resulting output should be converted to their corresponding " +
"character entity codes (‘<’ gets converted to ‘<’, ‘>’ gets converted to ‘>’ ‘&’ gets converted to " +
"‘&’, ‘‘’ gets converted to ‘'’, ‘”’ gets converted to ‘"’)."),
- JSR286_339(new TCK(339), "PLT.26.4", "The portlet resourceURL tag creates a URL that must point to the current " +
+ JSR286_339(new TCK(339, "PLT.26.4"), "The portlet resourceURL tag creates a URL that must point to the current " +
"portlet and must trigger a serveResource request with the supplied parameters"),
- JSR286_340(new TCK(340), "PLT.26.4", "The resourceURL must preserve the current portlet mode, window state and " +
+ JSR286_340(new TCK(340, "PLT.26.4"), "The resourceURL must preserve the current portlet mode, window state and " +
"render parameters."),
- JSR286_341(new TCK(341), "PLT.26.4", "If such a parameter has the same name as a render parameter in this URL, " +
+ JSR286_341(new TCK(341, "PLT.26.4"), "If such a parameter has the same name as a render parameter in this URL, " +
"the render parameter value must be the last value in the attribute value array."),
- JSR286_342(new TCK(342), "PLT.26.4", "If the result is exported as a JSP scoped variable, defined via the var " +
+ JSR286_342(new TCK(342, "PLT.26.4"), "If the result is exported as a JSP scoped variable, defined via the var " +
"attributes, nothing is written to the current JspWriter"),
- JSR286_343(new TCK(343), "PLT.26.4", "If the given variable name already exists in the scope of the page or it " +
+ JSR286_343(new TCK(343, "PLT.26.4"), "If the given variable name already exists in the scope of the page or it " +
"is used within an iteration loop, the new value overwrites the old one."),
- JSR286_344(new TCK(344), Status.specUntestable(""), "PLT.26.4", "If the security is not set for a URL, it must " +
+ JSR286_344(new TCK(344, "PLT.26.4"), Status.specUntestable(""), "If the security is not set for a URL, it must " +
"stay the same as the security setting of the current request."),
- JSR286_345(new TCK(345), Status.specUntestable(""), "PLT.26.4", "escapeXml (Type: boolean, non-required) – " +
+ JSR286_345(new TCK(345, "PLT.26.4"), Status.specUntestable(""), "escapeXml (Type: boolean, non-required) – " +
"determines whether characters <,>,&,’,” in the resulting output should be converted to their corresponding " +
"character entity codes (‘<’ gets converted to ‘<’, ‘>’ gets converted to ‘>’ ‘&’ gets converted to " +
"‘&’, ‘‘’ gets converted to ‘'’, ‘”’ gets converted to ‘"’)."),
- JSR286_346(new TCK(346), "PLT.26.5", "This tag produces a unique value for the current portlet and must match " +
+ JSR286_346(new TCK(346, "PLT.26.5"), "This tag produces a unique value for the current portlet and must match " +
"the value of PortletResponse.getNamespace method."),
- JSR286_347(new TCK(347), "PLT.26.6", "This tag defines a parameter that may be added to an actionURL, renderURL " +
+ JSR286_347(new TCK(347, "PLT.26.6"), "This tag defines a parameter that may be added to an actionURL, renderURL " +
"or resourceURL."),
- JSR286_348(new TCK(348), Status.specUntestable(""), "PLT.26.6", "The param tag must not contain any body content."),
- JSR286_349(new TCK(349), "PLT.26.6", "If the param tag has an empty value the specified parameter name must be " +
+ JSR286_348(new TCK(348, "PLT.26.6"), Status.specUntestable(""), "The param tag must not contain any body content."),
+ JSR286_349(new TCK(349, "PLT.26.6"), "If the param tag has an empty value the specified parameter name must be " +
"removed from the URL."),
- JSR286_350(new TCK(350), "PLT.26.6", "If the same name of a parameter occurs more than once within an actionURL, " +
+ JSR286_350(new TCK(350, "PLT.26.6"), "If the same name of a parameter occurs more than once within an actionURL, " +
"renderURL or resourceURL the values must be delivered as parameter value array with the values in the order " +
- "of the declaration within the URL tag.")
-
+ "of the declaration within the URL tag."),
+
+ // ******************************************************************************************************************
+
+ API_BASE_URL_1(new API(BaseURL.class), "parameter escapeXML"),
+ API_BASE_URL_2(new API(BaseURL.class), "write methods throws an IOException is propagated to caller")
+
;
/**
@@ -1364,17 +1372,27 @@
}
/**
- * A reference to a JSR 168 TCK test.
+ * A reference to a JSR TCK test.
*/
public static class TCK extends Ref
{
/** . */
- private int index;
+ private final int index;
+ /** . */
+ private final String section;
+
+ public TCK(int index, String section)
+ {
+ this.index = index;
+ this.section = section;
+ }
+
public TCK(int index)
{
this.index = index;
+ this.section = null;
}
public int getIndex()
@@ -1382,12 +1400,39 @@
return index;
}
+ public String getSection()
+ {
+ return section;
+ }
+
public String toString()
{
- return "TCK[" + index + "]";
+ return "TCK[index=" + index + ",section=" + section + "]";
}
}
+ public static class API extends Ref
+ {
+
+ /** . */
+ private Class clazz;
+
+ public API(Class clazz)
+ {
+ this.clazz = clazz;
+ }
+
+ public Class getClazz()
+ {
+ return clazz;
+ }
+
+ public String toString()
+ {
+ return "API[" + clazz.getSimpleName() + "]";
+ }
+ }
+
/**
* The status of an assertion.
*/
@@ -1522,9 +1567,6 @@
private final String description;
/** . */
- private final String section;
-
- /** . */
private Status status;
/** . */
@@ -1535,38 +1577,23 @@
this(ref, new Active(), description);
}
- Assertion(Ref ref, String section, String description)
+ Assertion(Ref ref, Assertion assertion, String description)
{
- this(ref, new Active(), description, section);
+ this(ref, assertion, new Active(), description);
}
- Assertion(Ref ref, Assertion assertion, String section, String description)
- {
- this(ref, assertion, new Active(), description, section);
- }
-
Assertion(Ref ref, Status status, String description)
{
this.ref = ref;
this.description = description;
- this.section = null;
this.status = status;
}
- Assertion(Ref ref, Status status, String section, String description)
+ Assertion(Ref ref, Assertion assertion, Status status, String description)
{
this.ref = ref;
this.description = description;
- this.section = section;
this.status = status;
- }
-
- Assertion(Ref ref, Assertion assertion, Status status, String section, String description)
- {
- this.ref = ref;
- this.description = description;
- this.section = section;
- this.status = status;
this.assertion = assertion;
}
@@ -1587,11 +1614,6 @@
return status;
}
- public String getSection()
- {
- return section;
- }
-
public Assertion getAssertion()
{
return assertion;
Modified: modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/PortletURLRenderer.java
===================================================================
--- modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/PortletURLRenderer.java 2008-02-25 10:16:10 UTC (rev 10105)
+++ modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/PortletURLRenderer.java 2008-02-25 12:32:25 UTC (rev 10106)
@@ -29,6 +29,7 @@
import org.jboss.portal.common.text.FastURLEncoder;
import org.jboss.portal.common.util.Base64;
import org.jboss.portal.portlet.ContainerURL;
+import org.jboss.portal.portlet.URLFormat;
import org.jboss.portal.portlet.controller.state.PageNavigationalState;
import org.jboss.portal.portlet.controller.state.PageNavigationalStateSerialization;
import org.jboss.portal.portlet.controller.state.StateControllerContext;
@@ -76,7 +77,7 @@
this.serialization = new PageNavigationalStateSerialization(stateContext);
}
- private String renderURL(Map<String, String> parameters, Boolean wantSecure, Boolean wantAuthenticated, boolean relative)
+ private String renderURL(Map<String, String> parameters, URLFormat format)
{
CharBuffer buffer = new CharBuffer();
buffer.append(clientReq.getScheme());
@@ -94,12 +95,15 @@
}
//
+ String parameterSeparator = format.getWantEscapeXML() == Boolean.TRUE ? "&" : "&";
+
+ //
boolean first = true;
for (Map.Entry<String, String> entry : parameters.entrySet())
{
String name = entry.getKey();
String value = entry.getValue();
- buffer.append(first ? '?' : '&');
+ buffer.append(first ? "?" : parameterSeparator);
buffer.append(name, FastURLEncoder.getUTF8Instance());
buffer.append('=');
buffer.append(value, FastURLEncoder.getUTF8Instance());
@@ -111,7 +115,7 @@
return clientResp.encodeURL(url);
}
- public String renderURL(Boolean wantSecure, Boolean wantAuthenticated, boolean relative)
+ public String renderURL(URLFormat format)
{
String pageState = null;
if (pageNS != null)
@@ -132,10 +136,10 @@
}
//
- return renderURL(parameters, wantSecure, wantAuthenticated, relative);
+ return renderURL(parameters, format);
}
- public String renderURL(String windowId, ContainerURL containerURL, Boolean wantSecure, Boolean wantAuthenticated, boolean relative)
+ public String renderURL(String windowId, ContainerURL containerURL, URLFormat format)
{
ControllerRequestParameterMapFactory factory = new ControllerRequestParameterMapFactory(stateContext);
@@ -146,6 +150,6 @@
parameters.put(TYPE, PORTLET_TYPE);
//
- return renderURL(parameters, wantSecure, wantAuthenticated, relative);
+ return renderURL(parameters, format);
}
}
Modified: modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/TestPortletInvocationContext.java
===================================================================
--- modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/TestPortletInvocationContext.java 2008-02-25 10:16:10 UTC (rev 10105)
+++ modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/TestPortletInvocationContext.java 2008-02-25 12:32:25 UTC (rev 10106)
@@ -27,7 +27,7 @@
import org.jboss.portal.common.invocation.resolver.PrincipalAttributeResolver;
import org.jboss.portal.common.util.MarkupInfo;
import org.jboss.portal.portlet.ContainerURL;
-import org.jboss.portal.portlet.controller.impl.state.StateControllerContextImpl;
+import org.jboss.portal.portlet.URLFormat;
import org.jboss.portal.portlet.controller.state.PageNavigationalState;
import org.jboss.portal.portlet.controller.state.StateControllerContext;
import org.jboss.portal.portlet.impl.spi.AbstractPortletInvocationContext;
@@ -102,8 +102,8 @@
return clientResponse;
}
- public String renderURL(ContainerURL containerURL, Boolean wantSecure, Boolean wantAuthenticated, boolean relative)
+ public String renderURL(ContainerURL containerURL, URLFormat format)
{
- return urlRenderer.renderURL(windowId, containerURL, wantSecure, wantAuthenticated, relative);
+ return urlRenderer.renderURL(windowId, containerURL, format);
}
}
Modified: modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/ControllerFilter.java
===================================================================
--- modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/ControllerFilter.java 2008-02-25 10:16:10 UTC (rev 10105)
+++ modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/ControllerFilter.java 2008-02-25 12:32:25 UTC (rev 10106)
@@ -26,6 +26,7 @@
import org.jboss.portal.portlet.test.URLParameterConstants;
import org.jboss.portal.portlet.PortletInvoker;
import org.jboss.portal.portlet.PortletInvokerException;
+import org.jboss.portal.portlet.URLFormat;
import org.jboss.portal.portlet.invocation.response.PortletInvocationResponse;
import org.jboss.portal.portlet.invocation.response.FragmentResponse;
import org.jboss.portal.portlet.invocation.response.ErrorResponse;
@@ -142,7 +143,7 @@
context.getClientResponse());
//
- String url = renderer.renderURL(null, null, true);
+ String url = renderer.renderURL(new URLFormat(null, null, true, null));
//
resp.sendRedirect(url);
Modified: modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/taglib/PortletURLTag.java
===================================================================
--- modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/taglib/PortletURLTag.java 2008-02-25 10:16:10 UTC (rev 10105)
+++ modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/taglib/PortletURLTag.java 2008-02-25 12:32:25 UTC (rev 10106)
@@ -30,6 +30,7 @@
import org.jboss.portal.portlet.controller.impl.state.StateControllerContextImpl;
import org.jboss.portal.portlet.RenderURL;
import org.jboss.portal.portlet.StateString;
+import org.jboss.portal.portlet.URLFormat;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
@@ -130,7 +131,7 @@
try
{
JspWriter out = pageContext.getOut();
- String renderedURL = renderer.renderURL(portletTag.result.getWindowDef().getWindowId(), url, null, null, true);
+ String renderedURL = renderer.renderURL(portletTag.result.getWindowDef().getWindowId(), url, new URLFormat(null, null, true, null));
out.write(renderedURL);
}
catch (IOException e)
Modified: modules/portlet/trunk/test/src/test/build.xml
===================================================================
--- modules/portlet/trunk/test/src/test/build.xml 2008-02-25 10:16:10 UTC (rev 10105)
+++ modules/portlet/trunk/test/src/test/build.xml 2008-02-25 12:32:25 UTC (rev 10106)
@@ -371,6 +371,7 @@
<package-jsr286-tck-test test="portletfilter"/>
<package-jsr286-tck-test test="taglib"/>
<package-jsr286-api-test test="event"/>
+ <package-jsr286-api-test test="portleturl"/>
<package-jsr286-ext-test test="portletrequests"/>
<package-jsr286-ext-test test="portletfilter"/>
<package-jsr286-ext-test test="portletresponses"/>
Added: modules/portlet/trunk/test/src/test/resources/jsr286/api/portleturl-war/WEB-INF/portlet.xml
===================================================================
--- modules/portlet/trunk/test/src/test/resources/jsr286/api/portleturl-war/WEB-INF/portlet.xml (rev 0)
+++ modules/portlet/trunk/test/src/test/resources/jsr286/api/portleturl-war/WEB-INF/portlet.xml 2008-02-25 12:32:25 UTC (rev 10106)
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ JBoss, a division of Red Hat ~
+ ~ Copyright 2006, Red Hat Middleware, LLC, and individual ~
+ ~ contributors as indicated by the @authors tag. See the ~
+ ~ copyright.txt in the distribution for a full listing of ~
+ ~ individual contributors. ~
+ ~ ~
+ ~ This is free software; you can redistribute it and/or modify it ~
+ ~ under the terms of the GNU Lesser General Public License as ~
+ ~ published by the Free Software Foundation; either version 2.1 of ~
+ ~ the License, or (at your option) any later version. ~
+ ~ ~
+ ~ This software is distributed in the hope that it will be useful, ~
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of ~
+ ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ~
+ ~ Lesser General Public License for more details. ~
+ ~ ~
+ ~ You should have received a copy of the GNU Lesser General Public ~
+ ~ License along with this software; if not, write to the Free ~
+ ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA ~
+ ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org. ~
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+
+<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
+ version="2.0">
+
+ <portlet>
+ <portlet-name>UniversalTestPortletA</portlet-name>
+ <portlet-class>org.jboss.portal.test.portlet.framework.UTP1</portlet-class>
+ <supports>
+ <mime-type>text/html</mime-type>
+ </supports>
+ </portlet>
+
+</portlet-app>
Added: modules/portlet/trunk/test/src/test/resources/jsr286/api/portleturl-war/WEB-INF/web.xml
===================================================================
--- modules/portlet/trunk/test/src/test/resources/jsr286/api/portleturl-war/WEB-INF/web.xml (rev 0)
+++ modules/portlet/trunk/test/src/test/resources/jsr286/api/portleturl-war/WEB-INF/web.xml 2008-02-25 12:32:25 UTC (rev 10106)
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ JBoss, a division of Red Hat ~
+ ~ Copyright 2006, Red Hat Middleware, LLC, and individual ~
+ ~ contributors as indicated by the @authors tag. See the ~
+ ~ copyright.txt in the distribution for a full listing of ~
+ ~ individual contributors. ~
+ ~ ~
+ ~ This is free software; you can redistribute it and/or modify it ~
+ ~ under the terms of the GNU Lesser General Public License as ~
+ ~ published by the Free Software Foundation; either version 2.1 of ~
+ ~ the License, or (at your option) any later version. ~
+ ~ ~
+ ~ This software is distributed in the hope that it will be useful, ~
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of ~
+ ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ~
+ ~ Lesser General Public License for more details. ~
+ ~ ~
+ ~ You should have received a copy of the GNU Lesser General Public ~
+ ~ License along with this software; if not, write to the Free ~
+ ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA ~
+ ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org. ~
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+
+<!DOCTYPE web-app PUBLIC
+ "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+ "http://java.sun.com/dtd/web-app_2_3.dtd">
+<web-app>
+ <listener>
+ <listener-class>org.jboss.portal.unit.PortletTestSuite</listener-class>
+ </listener>
+</web-app>
Modified: modules/portlet/trunk/test/src/test/resources/test/remote-jboss-unit.xml
===================================================================
--- modules/portlet/trunk/test/src/test/resources/test/remote-jboss-unit.xml 2008-02-25 10:16:10 UTC (rev 10105)
+++ modules/portlet/trunk/test/src/test/resources/test/remote-jboss-unit.xml 2008-02-25 12:32:25 UTC (rev 10106)
@@ -197,6 +197,10 @@
<class name="org.jboss.unit.remote.driver.RemoteTestDriverClient"/>
<property name="archiveId" value="test-jsr286-api-event.war"/>
</generic>
+ <generic>
+ <class name="org.jboss.unit.remote.driver.RemoteTestDriverClient"/>
+ <property name="archiveId" value="test-jsr286-api-portleturl.war"/>
+ </generic>
<!--Ext Assertions tests-->
<generic>
16 years, 2 months
JBoss Portal SVN: r10105 - modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/metadata/factory.
by portal-commits@lists.jboss.org
Author: emuckenhuber
Date: 2008-02-25 05:16:10 -0500 (Mon, 25 Feb 2008)
New Revision: 10105
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/metadata/factory/PortletApplicationModelFactory.java
Log:
fix IOBE
Modified: modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/metadata/factory/PortletApplicationModelFactory.java
===================================================================
--- modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/metadata/factory/PortletApplicationModelFactory.java 2008-02-25 09:35:22 UTC (rev 10104)
+++ modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/metadata/factory/PortletApplicationModelFactory.java 2008-02-25 10:16:10 UTC (rev 10105)
@@ -752,7 +752,8 @@
}
else if ("lifecycle".equals(localName))
{
- String lifeCycle = value.substring(0, value.length() - "_PHASE".length());
+ int end = value.length() - "_PHASE".length();
+ String lifeCycle = value.substring(0, end > 0 ? end : 0);
try
{
md.addLifecycle(LifeCyclePhase.valueOf(lifeCycle));
16 years, 2 months
JBoss Portal SVN: r10104 - in modules/portlet/trunk: portlet and 2 other directories.
by portal-commits@lists.jboss.org
Author: bdaw
Date: 2008-02-25 04:35:22 -0500 (Mon, 25 Feb 2008)
New Revision: 10104
Added:
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/reports/
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/reports/ResultProducingListener.java
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/reports/TestCaseAPF.java
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/reports/TestCaseAnnotationProcessor.java
Modified:
modules/portlet/trunk/controller/pom.xml
modules/portlet/trunk/portlet/pom.xml
Log:
- dummy test coverage reporting
Modified: modules/portlet/trunk/controller/pom.xml
===================================================================
--- modules/portlet/trunk/controller/pom.xml 2008-02-25 05:13:33 UTC (rev 10103)
+++ modules/portlet/trunk/controller/pom.xml 2008-02-25 09:35:22 UTC (rev 10104)
@@ -33,7 +33,7 @@
<artifactId>portlet-portlet</artifactId>
<version>${project.version}</version>
<type>test-jar</type>
- <scope>test</scope>
+ <!--<scope>test</scope>-->
</dependency>
<!--TEST SCOPE-->
Modified: modules/portlet/trunk/portlet/pom.xml
===================================================================
--- modules/portlet/trunk/portlet/pom.xml 2008-02-25 05:13:33 UTC (rev 10103)
+++ modules/portlet/trunk/portlet/pom.xml 2008-02-25 09:35:22 UTC (rev 10104)
@@ -40,14 +40,6 @@
<artifactId>jaxb-api</artifactId>
</dependency>
- <!--<dependency>-->
- <!--<groupId>sun.jdk</groupId>-->
- <!--<artifactId>tools</artifactId>-->
- <!--<version>1.5.0</version>-->
- <!--<scope>system</scope>-->
- <!--<systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>-->
- <!--</dependency>-->
-
<!--TEST SCOPE-->
<dependency>
<groupId>org.jboss.unit</groupId>
@@ -56,8 +48,123 @@
</dependency>
</dependencies>
+
+
+ <profiles>
+ <!--By default Annotation Processing Tool related classes need to be disabled-->
+ <profile>
+ <id>default</id>
+ <activation>
+ <activeByDefault>true</activeByDefault>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>testCompile</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <testExcludes>
+ <exclude>org/jboss/portal/unit/reports/*</exclude>
+ </testExcludes>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+
+ <profile>
+ <id>apt</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.myfaces.tobago</groupId>
+ <artifactId>maven-apt-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <configuration>
+ <factory>org.jboss.portal.unit.reports.TestCaseAPF</factory>
+ <force>true</force>
+ <target>1.5</target>
+ <nocompile>true</nocompile>
+ <showWarnings>true</showWarnings>
+ </configuration>
+ <goals>
+ <goal>testExecute</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>sun.jdk</groupId>
+ <artifactId>tools</artifactId>
+ <version>1.5.0</version>
+ <scope>system</scope>
+ <systemPath>${java.home}/../lib/tools.jar</systemPath>
+ </dependency>
+ </dependencies>
+ </profile>
+
+ <!--On MacOSX the tools.jar should be already in the classpath-->
+ <profile>
+ <id>apt-mac</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.myfaces.tobago</groupId>
+ <artifactId>maven-apt-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <configuration>
+ <factory>org.jboss.portal.unit.reports.TestCaseAPF</factory>
+ <force>true</force>
+ <target>1.5</target>
+ <nocompile>true</nocompile>
+ <showWarnings>true</showWarnings>
+ </configuration>
+ <goals>
+ <goal>testExecute</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+
+ </profiles>
+
+
+
<build>
<plugins>
+ <!--<plugin>-->
+ <!--<groupId>org.apache.maven.plugins</groupId>-->
+ <!--<artifactId>maven-compiler-plugin</artifactId>-->
+ <!--<executions>-->
+ <!--<execution>-->
+ <!--<goals>-->
+ <!--<goal>testCompile</goal>-->
+ <!--</goals>-->
+ <!--</execution>-->
+ <!--</executions>-->
+ <!--<configuration>-->
+ <!--<testExcludes>-->
+ <!--<exclude>org/jboss/portal/unit/reports/*</exclude>-->
+ <!--</testExcludes>-->
+ <!--</configuration>-->
+ <!--</plugin>-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
Added: modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/reports/ResultProducingListener.java
===================================================================
--- modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/reports/ResultProducingListener.java (rev 0)
+++ modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/reports/ResultProducingListener.java 2008-02-25 09:35:22 UTC (rev 10104)
@@ -0,0 +1,107 @@
+/*
+* JBoss, a division of Red Hat
+* Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+
+package org.jboss.portal.unit.reports;
+
+import com.sun.mirror.apt.RoundCompleteListener;
+import com.sun.mirror.apt.RoundCompleteEvent;
+
+import java.io.File;
+import java.io.Writer;
+import java.io.FileWriter;
+import java.util.Set;
+import java.util.Map;
+import java.util.Collections;
+import java.util.SortedSet;
+import java.util.List;
+import java.util.LinkedList;
+
+/**
+ * @author <a href="mailto:boleslaw dot dawidowicz at redhat anotherdot com">Boleslaw Dawidowicz</a>
+ * @version : 0.1 $
+ */
+public class ResultProducingListener implements RoundCompleteListener
+{
+ public static String jsr168File = "./target/apt-jsr168-testcases.csv";
+
+ public static int jsr168Max = 179;
+
+ public static String jsr286File = "./target/apt-jsr286-testcases.csv";
+
+ public static int jsr286Max = 350;
+
+ public void roundComplete(RoundCompleteEvent event)
+ {
+ if (event.getRoundState().finalRound())
+ {
+ System.out.println("#END");
+
+
+ try
+ {
+ if (!TestCaseAnnotationProcessor.jsr168Assertions.keySet().isEmpty())
+ {
+ print(TestCaseAnnotationProcessor.jsr168Assertions, jsr168File, "JSR168_", jsr168Max);
+ }
+
+ if (!TestCaseAnnotationProcessor.jsr286Assertions.keySet().isEmpty())
+ {
+ print(TestCaseAnnotationProcessor.jsr286Assertions, jsr286File, "JSR286_", jsr286Max);
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ }
+
+
+ }
+ }
+
+ private void print(Map<String, Set<String>> map, String fileName, String pre, int max) throws Exception
+ {
+
+ File f = new File(fileName);
+
+ Writer writer = new FileWriter(f, false);
+
+ for (int i = 1; i <= max; i++)
+ {
+ String assertion = pre + i;
+
+ writer.write(assertion + ",\n");
+
+ Set<String> testCases = map.get(assertion);
+
+ if (testCases != null)
+ {
+ for (String testCase : testCases)
+ {
+ writer.write(" ," + testCase + "\n");
+ }
+ }
+ }
+
+ writer.close();
+
+ }
+}
Added: modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/reports/TestCaseAPF.java
===================================================================
--- modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/reports/TestCaseAPF.java (rev 0)
+++ modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/reports/TestCaseAPF.java 2008-02-25 09:35:22 UTC (rev 10104)
@@ -0,0 +1,68 @@
+/*
+* JBoss, a division of Red Hat
+* Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+
+package org.jboss.portal.unit.reports;
+
+import com.sun.mirror.apt.AnnotationProcessorFactory;
+import com.sun.mirror.apt.AnnotationProcessor;
+import com.sun.mirror.apt.AnnotationProcessorEnvironment;
+import com.sun.mirror.apt.AnnotationProcessors;
+import com.sun.mirror.declaration.AnnotationTypeDeclaration;
+
+import java.util.Collection;
+import java.util.Set;
+import java.util.Collections;
+import java.io.File;
+
+/**
+ * @author <a href="mailto:boleslaw dot dawidowicz at redhat anotherdot com">Boleslaw Dawidowicz</a>
+ * @version : 0.1 $
+ */
+public class TestCaseAPF implements AnnotationProcessorFactory
+{
+ public Collection<String> supportedOptions()
+ {
+ return Collections.emptyList();
+ }
+
+ public Collection<String> supportedAnnotationTypes()
+ {
+ return Collections.singletonList("org.jboss.portal.unit.annotations.TestCase");
+ }
+
+ public AnnotationProcessor getProcessorFor(Set<AnnotationTypeDeclaration> annotationTypeDeclarations, AnnotationProcessorEnvironment annotationProcessorEnvironment)
+ {
+ AnnotationProcessor result;
+ if(annotationTypeDeclarations.isEmpty()) {
+ result = AnnotationProcessors.NO_OP;
+ }
+ else {
+ // Next Step - implement this class:
+ result = new TestCaseAnnotationProcessor(annotationProcessorEnvironment);
+ annotationProcessorEnvironment.addListener(new ResultProducingListener());
+ }
+ return result;
+
+ }
+
+
+}
Added: modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/reports/TestCaseAnnotationProcessor.java
===================================================================
--- modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/reports/TestCaseAnnotationProcessor.java (rev 0)
+++ modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/reports/TestCaseAnnotationProcessor.java 2008-02-25 09:35:22 UTC (rev 10104)
@@ -0,0 +1,173 @@
+/*
+* JBoss, a division of Red Hat
+* Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+
+package org.jboss.portal.unit.reports;
+
+import com.sun.mirror.apt.AnnotationProcessor;
+import com.sun.mirror.apt.AnnotationProcessorEnvironment;
+import com.sun.mirror.declaration.AnnotationTypeDeclaration;
+import com.sun.mirror.declaration.Declaration;
+import com.sun.mirror.declaration.AnnotationMirror;
+import com.sun.mirror.declaration.AnnotationTypeElementDeclaration;
+import com.sun.mirror.declaration.AnnotationValue;
+import com.sun.mirror.declaration.EnumConstantDeclaration;
+import com.sun.mirror.util.SourcePosition;
+import com.sun.tools.apt.mirror.declaration.AnnotationValueImpl;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.List;
+import java.util.Iterator;
+import java.util.HashMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.io.File;
+import java.io.OutputStream;
+import java.io.FileOutputStream;
+import java.io.PrintStream;
+import java.io.FileNotFoundException;
+import java.io.FileWriter;
+import java.io.IOException;
+
+import org.jboss.portal.unit.Assertion;
+
+/**
+ * @author <a href="mailto:boleslaw dot dawidowicz at redhat anotherdot com">Boleslaw Dawidowicz</a>
+ * @version : 0.1 $
+ */
+public class TestCaseAnnotationProcessor implements AnnotationProcessor
+{
+
+ private AnnotationProcessorEnvironment environment;
+
+ private AnnotationTypeDeclaration testCaseDeclaration;
+
+
+
+ public static String jsr168Pre = "org.jboss.portal.test.portlet.jsr168";
+
+ public static String jsr286Pre = "org.jboss.portal.test.portlet.jsr286";
+
+ public static String jsr168AssertionPre = "JSR168";
+
+ public static String jsr286AssertionPre = "JSR286";
+
+
+ public static Map<String, Set<String>> jsr168Assertions = new HashMap<String, Set<String>>();
+
+ public static Map<String, Set<String>> jsr286Assertions = new HashMap<String, Set<String>>();
+
+ //private int counter;
+
+ public TestCaseAnnotationProcessor(AnnotationProcessorEnvironment env) {
+
+ environment = env;
+ testCaseDeclaration = (AnnotationTypeDeclaration) environment
+ .getTypeDeclaration("org.jboss.portal.unit.annotations.TestCase");
+ }
+
+ public void process()
+ {
+ Collection<Declaration> declarations = environment
+ .getDeclarationsAnnotatedWith(testCaseDeclaration);
+ for (Declaration declaration : declarations) {
+ processAnnotations(declaration);
+ }
+ }
+
+ private void processAnnotations(Declaration declaration) {
+ // Get all of the annotation usage for this declaration.
+ // the annotation mirror is a reflection of what is in the source.
+
+ Collection<AnnotationMirror> annotations = declaration
+ .getAnnotationMirrors();
+ // iterate over the mirrors.
+ for (AnnotationMirror mirror : annotations) {
+ // if the mirror in this iteration is for our note declaration...
+
+ System.out.println("#Annotation processing... " + mirror.getAnnotationType().getDeclaration().toString());
+
+ if(mirror.getAnnotationType().getDeclaration().equals(
+ testCaseDeclaration)) {
+
+
+ // print out the goodies.
+ Map<AnnotationTypeElementDeclaration, AnnotationValue> values = mirror
+ .getElementValues();
+
+ for (Map.Entry<AnnotationTypeElementDeclaration, AnnotationValue> entry : values
+ .entrySet()) {
+
+ Collection<AnnotationValue> annotationValues = (Collection<AnnotationValue>)entry.getValue().getValue();
+
+ for (AnnotationValue value : annotationValues)
+ {
+
+ String tck = value.toString();
+
+ String[] parts = tck.split("\\.");
+
+ tck = parts[parts.length - 1];
+
+ Map<String, Set<String>> am = null;
+
+ if (tck.startsWith(jsr168AssertionPre))
+ {
+ am = jsr168Assertions;
+ }
+ else if (tck.startsWith(jsr286AssertionPre))
+ {
+ am = jsr286Assertions;
+ }
+ else
+ {
+ continue;
+ }
+
+
+ addAssertion(am, tck, declaration.toString());
+
+ System.out.println("#TCK: " + tck );
+
+ }
+ }
+ }
+ }
+
+
+ }
+
+ private void addAssertion(Map<String, Set<String>> map, String assertion, String testCase)
+ {
+ if (map.get(assertion) != null)
+ {
+ Set<String> set = map.get(assertion);
+ set.add(testCase);
+ }
+ else
+ {
+ Set<String> set = new HashSet<String>();
+ set.add(testCase);
+ map.put(assertion, set);
+ }
+ }
+}
16 years, 2 months