You are viewing a plain text version of this content. The canonical link for it is here.
Posted to pluto-scm@portals.apache.org by ms...@apache.org on 2014/08/25 11:55:21 UTC

[17/22] began work on generating the additional spec tests and the portlet tab library tests again in order to improve structure and correct problems in test case names.

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/23a1c547/portlet-tck_3.0/V2AddlFilterTests/pom.xml
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2AddlFilterTests/pom.xml b/portlet-tck_3.0/V2AddlFilterTests/pom.xml
index 87654b6..ce905c7 100644
--- a/portlet-tck_3.0/V2AddlFilterTests/pom.xml
+++ b/portlet-tck_3.0/V2AddlFilterTests/pom.xml
@@ -1,123 +1,127 @@
-<!--
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, either express or implied.  See the License for the
-    specific language governing permissions and limitations
-    under the License.     
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-   <modelVersion>4.0.0</modelVersion>
-
-   <parent>
-      <groupId>javax.portlet</groupId>
-      <artifactId>tck</artifactId>
-      <version>3.0-SNAPSHOT</version>
-   </parent>
-
-   <artifactId>tck-V2AddlFilterTests</artifactId>
-   <packaging>war</packaging>
-
-   <dependencies>
-      <dependency>
-         <groupId>javax.portlet</groupId>
-         <artifactId>portlet-api</artifactId>
-      </dependency>
-      <dependency>
-         <groupId>javax.portlet</groupId>
-         <artifactId>tck-common</artifactId>
-         <version>${project.version}</version>
-         <scope>compile</scope>
-      </dependency>
-   </dependencies>
-
-   <properties>
-
-      <!-- This project contains additional test cases to run with the portlets -->
-      <additional.testcase.uri>file:///${basedir}/src/main/resources/xml-resources/additionalTCs.xml</additional.testcase.uri>
-
-      <!-- Set to true for modules that define all test cases in a file (TCs are not generated from the portlet.xml) -->
-      <additional.testcases.only>true</additional.testcases.only>
-
-      <!-- put all portlets from this module on the same page -->
-      <page.file.xsl>plutoMultiPortletPage.xsl</page.file.xsl>
-
-   </properties>
-
-   <build>
-      <finalName>${project.artifactId}</finalName>
-      <plugins>
-         <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-compiler-plugin</artifactId>
-         </plugin>
-         <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-war-plugin</artifactId>
-         </plugin>
-         <!-- Transform the portlet XML into test properties XML file -->
-         <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-dependency-plugin</artifactId>
-         </plugin>
-         <plugin>
-            <groupId>org.codehaus.mojo</groupId>
-            <artifactId>xml-maven-plugin</artifactId>
-         </plugin>
-      </plugins>
-   </build>
-
-
-   <profiles>
-      <profile>
-         <id>pluto</id>
-
-         <dependencies>
-            <dependency>
-               <groupId>javax.servlet</groupId>
-               <artifactId>jstl</artifactId>
-            </dependency>
-            <dependency>
-               <groupId>taglibs</groupId>
-               <artifactId>standard</artifactId>
-            </dependency>
-         </dependencies>
-
-         <build>
-            <plugins>
-               <plugin>
-                  <artifactId>maven-war-plugin</artifactId>
-                  <configuration>
-                     <webXml>${project.build.directory}/pluto-resources/web.xml</webXml>
-                  </configuration>
-               </plugin>
-               <!-- bind 'pluto:assemble' goal to 'generate-resources' lifecycle -->
-               <plugin>
-                  <groupId>org.apache.portals.pluto</groupId>
-                  <artifactId>maven-pluto-plugin</artifactId>
-                  <executions>
-                     <execution>
-                        <phase>generate-resources</phase>
-                        <goals>
-                           <goal>assemble</goal>
-                        </goals>
-                     </execution>
-                  </executions>
-               </plugin>
-            </plugins>
-         </build>
-      </profile>
-   </profiles>
-
-</project>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.     
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+   <modelVersion>4.0.0</modelVersion>
+
+   <parent>
+      <groupId>javax.portlet</groupId>
+      <artifactId>tck</artifactId>
+      <version>3.0-SNAPSHOT</version>
+   </parent>
+
+   <artifactId>tck-V2AddlFilterTests</artifactId>
+   <packaging>war</packaging>
+
+   <dependencies>
+      <dependency>
+         <groupId>javax.portlet</groupId>
+         <artifactId>portlet-api</artifactId>
+      </dependency>
+      <dependency>
+         <groupId>javax.servlet</groupId>
+         <artifactId>servlet-api</artifactId>
+      </dependency>
+      <dependency>
+         <groupId>javax.portlet</groupId>
+         <artifactId>tck-common</artifactId>
+         <version>${project.version}</version>
+         <scope>compile</scope>
+      </dependency>
+   </dependencies>
+
+   <properties>
+
+      <!-- This project contains additional test cases to run with the portlets -->
+      <additional.testcase.uri>file:///${basedir}/src/main/resources/xml-resources/additionalTCs.xml</additional.testcase.uri>
+
+      <!-- Set to true for modules that define all test cases in a file (TCs are not generated from the portlet.xml) -->
+      <additional.testcases.only>true</additional.testcases.only>
+
+      <!-- put all portlets from this module on the same page -->
+      <page.file.xsl>plutoMultiPortletPage.xsl</page.file.xsl>
+
+   </properties>
+
+   <build>
+      <finalName>${project.artifactId}</finalName>
+      <plugins>
+         <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-compiler-plugin</artifactId>
+         </plugin>
+         <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-war-plugin</artifactId>
+         </plugin>
+         <!-- Transform the portlet XML into test properties XML file -->
+         <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-dependency-plugin</artifactId>
+         </plugin>
+         <plugin>
+            <groupId>org.codehaus.mojo</groupId>
+            <artifactId>xml-maven-plugin</artifactId>
+         </plugin>
+      </plugins>
+   </build>
+
+
+   <profiles>
+      <profile>
+         <id>pluto</id>
+
+         <dependencies>
+            <dependency>
+               <groupId>javax.servlet</groupId>
+               <artifactId>jstl</artifactId>
+            </dependency>
+            <dependency>
+               <groupId>taglibs</groupId>
+               <artifactId>standard</artifactId>
+            </dependency>
+         </dependencies>
+
+         <build>
+            <plugins>
+               <plugin>
+                  <artifactId>maven-war-plugin</artifactId>
+                  <configuration>
+                     <webXml>${project.build.directory}/pluto-resources/web.xml</webXml>
+                  </configuration>
+               </plugin>
+               <!-- bind 'pluto:assemble' goal to 'generate-resources' lifecycle -->
+               <plugin>
+                  <groupId>org.apache.portals.pluto</groupId>
+                  <artifactId>maven-pluto-plugin</artifactId>
+                  <executions>
+                     <execution>
+                        <phase>generate-resources</phase>
+                        <goals>
+                           <goal>assemble</goal>
+                        </goals>
+                     </execution>
+                  </executions>
+               </plugin>
+            </plugins>
+         </build>
+      </profile>
+   </profiles>
+
+</project>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/23a1c547/portlet-tck_3.0/V2AddlFilterTests/src/main/java/javax/portlet/tck/portlets/AddlFilterTests_SPEC2_20_Action.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2AddlFilterTests/src/main/java/javax/portlet/tck/portlets/AddlFilterTests_SPEC2_20_Action.java b/portlet-tck_3.0/V2AddlFilterTests/src/main/java/javax/portlet/tck/portlets/AddlFilterTests_SPEC2_20_Action.java
new file mode 100644
index 0000000..9f443d8
--- /dev/null
+++ b/portlet-tck_3.0/V2AddlFilterTests/src/main/java/javax/portlet/tck/portlets/AddlFilterTests_SPEC2_20_Action.java
@@ -0,0 +1,385 @@
+/*  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package javax.portlet.tck.portlets;
+
+import java.io.*;
+import java.util.*;
+import java.util.logging.*;
+import static java.util.logging.Logger.*;
+import javax.xml.namespace.QName;
+import javax.portlet.*;
+import javax.portlet.filter.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.portlet.tck.beans.*;
+import javax.portlet.tck.constants.*;
+import static javax.portlet.tck.beans.JSR286SpecTestCaseDetails.*;
+import static javax.portlet.tck.constants.Constants.*;
+import static javax.portlet.PortletSession.*;
+import static javax.portlet.ResourceURL.*;
+
+/**
+ * This portlet implements several test cases for the JSR 362 TCK. The test case names
+ * are defined in the /src/main/resources/xml-resources/additionalTCs.xml
+ * file. The build process will integrate the test case names defined in the 
+ * additionalTCs.xml file into the complete list of test case names for execution by the driver.
+ *
+ * This is the main portlet for the test cases. If the test cases call for events, this portlet
+ * will initiate the events, but not process them. The processing is done in the companion 
+ * portlet AddlFilterTests_SPEC2_20_Action_event
+ *
+ */
+public class AddlFilterTests_SPEC2_20_Action implements Portlet, ResourceServingPortlet {
+   private static final String LOG_CLASS = 
+         AddlFilterTests_SPEC2_20_Action.class.getName();
+   private final Logger LOGGER = Logger.getLogger(LOG_CLASS);
+   
+   private PortletConfig portletConfig = null;
+
+   @Override
+   public void init(PortletConfig config) throws PortletException {
+      this.portletConfig = config;
+   }
+
+   @Override
+   public void destroy() {
+   }
+
+   @Override
+   public void processAction(ActionRequest portletReq, ActionResponse portletResp)
+         throws PortletException, IOException {
+      LOGGER.entering(LOG_CLASS, "main portlet processAction entry");
+
+      portletResp.setRenderParameters(portletReq.getParameterMap());
+      long tid = Thread.currentThread().getId();
+      portletReq.setAttribute(THREADID_ATTR, tid);
+
+      StringWriter writer = new StringWriter();
+
+      JSR286SpecTestCaseDetails tcd = new JSR286SpecTestCaseDetails();
+
+      // Create result objects for the tests
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Action_filter1                  */
+      /* Details: "A filter declaration can be configured in the deployment   */
+      /* descriptor"                                                          */
+      TestResult tr0 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_ACTION_FILTER1);
+      /* TODO: implement test */
+      tr0.appendTcDetail("Not implemented.");
+      tr0.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Action_filter6                  */
+      /* Details: "A filter declaration can contain multiple <lifecycle>      */
+      /* tags for a single filter class"                                      */
+      TestResult tr1 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_ACTION_FILTER6);
+      /* TODO: implement test */
+      tr1.appendTcDetail("Not implemented.");
+      tr1.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Action_filter7                  */
+      /* Details: "The filter declaration can contain initialization          */
+      /* parameters which can be read by the filter through the               */
+      /* FilterConfig object"                                                 */
+      TestResult tr2 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_ACTION_FILTER7);
+      /* TODO: implement test */
+      tr2.appendTcDetail("Not implemented.");
+      tr2.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Action_filter8                  */
+      /* Details: "For each filter declaration, the filter instance must      */
+      /* receive all initialization parameters defined in the filter          */
+      /* declaration"                                                         */
+      TestResult tr3 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_ACTION_FILTER8);
+      /* TODO: implement test */
+      tr3.appendTcDetail("Not implemented.");
+      tr3.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Action_filter9                  */
+      /* Details: "For each filter declaration, the filter instance must      */
+      /* receive only initialization parameters defined in the filter         */
+      /* declaration"                                                         */
+      TestResult tr4 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_ACTION_FILTER9);
+      /* TODO: implement test */
+      tr4.appendTcDetail("Not implemented.");
+      tr4.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Action_filter10                 */
+      /* Details: "For multiple filter declarations for a single filter       */
+      /* class, the filter instance must receive all initialization           */
+      /* parameters defined in the filter declaration"                        */
+      TestResult tr5 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_ACTION_FILTER10);
+      /* TODO: implement test */
+      tr5.appendTcDetail("Not implemented.");
+      tr5.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Action_filter11                 */
+      /* Details: "For multiple filter declarations for a single filter       */
+      /* class, the filter instance must receive only initialization          */
+      /* parameters defined in the filter declaration"                        */
+      TestResult tr6 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_ACTION_FILTER11);
+      /* TODO: implement test */
+      tr6.appendTcDetail("Not implemented.");
+      tr6.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Action_filter12                 */
+      /* Details: "A filter class can appear in multiple filter               */
+      /* declarations"                                                        */
+      TestResult tr7 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_ACTION_FILTER12);
+      /* TODO: implement test */
+      tr7.appendTcDetail("Not implemented.");
+      tr7.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Action_filter13                 */
+      /* Details: "A filter declaration can be mapped to a portlet through    */
+      /* the deployment descriptor <filter-mapping> element"                  */
+      TestResult tr8 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_ACTION_FILTER13);
+      /* TODO: implement test */
+      tr8.appendTcDetail("Not implemented.");
+      tr8.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Action_filter14                 */
+      /* Details: "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"                      */
+      TestResult tr9 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_ACTION_FILTER14);
+      /* TODO: implement test */
+      tr9.appendTcDetail("Not implemented.");
+      tr9.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Action_filter15                 */
+      /* Details: "The order the container uses in building the chain of      */
+      /* filters to be applied for a particular request is the order in       */
+      /* which the <portlet-name> matching filter mappings appear in the      */
+      /* deployment descriptor"                                               */
+      TestResult tr10 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_ACTION_FILTER15);
+      /* TODO: implement test */
+      tr10.appendTcDetail("Not implemented.");
+      tr10.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Action_filterWrapper1           */
+      /* Details: "An ACTION_PHASE filter can wrap the ActionRequest object   */
+      /* with a custom wrapper"                                               */
+      TestResult tr11 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_ACTION_FILTERWRAPPER1);
+      /* TODO: implement test */
+      tr11.appendTcDetail("Not implemented.");
+      tr11.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Action_filterWrapper2           */
+      /* Details: "An ACTION_PHASE filter can wrap the ActionResponse         */
+      /* object with a custom wrapper"                                        */
+      TestResult tr12 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_ACTION_FILTERWRAPPER2);
+      /* TODO: implement test */
+      tr12.appendTcDetail("Not implemented.");
+      tr12.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Action_filter2                  */
+      /* Details: "If the filter declaration specifies the <lifecycle> tag    */
+      /* value ACTION_PHASE, the ActionFilter.doFilter method is called"      */
+      TestResult tr13 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_ACTION_FILTER2);
+      /* TODO: implement test */
+      tr13.appendTcDetail("Not implemented.");
+      tr13.writeTo(writer);
+
+      portletReq.getPortletSession().setAttribute(
+                   Constants.RESULT_ATTR_PREFIX + "AddlFilterTests_SPEC2_20_Action",
+                   writer.toString(), APPLICATION_SCOPE);
+   }
+
+   @Override
+   public void serveResource(ResourceRequest portletReq, ResourceResponse portletResp)
+         throws PortletException, IOException {
+      LOGGER.entering(LOG_CLASS, "main portlet serveResource entry");
+
+      long tid = Thread.currentThread().getId();
+      portletReq.setAttribute(THREADID_ATTR, tid);
+
+      PrintWriter writer = portletResp.getWriter();
+
+   }
+
+   @Override
+   public void render(RenderRequest portletReq, RenderResponse portletResp)
+         throws PortletException, IOException {
+      LOGGER.entering(LOG_CLASS, "main portlet render entry");
+
+      long tid = Thread.currentThread().getId();
+      portletReq.setAttribute(THREADID_ATTR, tid);
+
+      PrintWriter writer = portletResp.getWriter();
+
+      PortletSession ps = portletReq.getPortletSession();
+      String msg = (String) ps.getAttribute(RESULT_ATTR_PREFIX + "AddlFilterTests_SPEC2_20_Action", APPLICATION_SCOPE);
+      if (msg != null) {
+         writer.write("<p>" + msg + "</p><br/>\n");
+         ps.removeAttribute(RESULT_ATTR_PREFIX + "AddlFilterTests_SPEC2_20_Action", APPLICATION_SCOPE);
+      }
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Action_filter1                  */
+      /* Details: "A filter declaration can be configured in the deployment   */
+      /* descriptor"                                                          */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2AddlFilterTests_SPEC2_20_Action_filter1", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Action_filter6                  */
+      /* Details: "A filter declaration can contain multiple <lifecycle>      */
+      /* tags for a single filter class"                                      */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2AddlFilterTests_SPEC2_20_Action_filter6", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Action_filter7                  */
+      /* Details: "The filter declaration can contain initialization          */
+      /* parameters which can be read by the filter through the               */
+      /* FilterConfig object"                                                 */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2AddlFilterTests_SPEC2_20_Action_filter7", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Action_filter8                  */
+      /* Details: "For each filter declaration, the filter instance must      */
+      /* receive all initialization parameters defined in the filter          */
+      /* declaration"                                                         */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2AddlFilterTests_SPEC2_20_Action_filter8", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Action_filter9                  */
+      /* Details: "For each filter declaration, the filter instance must      */
+      /* receive only initialization parameters defined in the filter         */
+      /* declaration"                                                         */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2AddlFilterTests_SPEC2_20_Action_filter9", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Action_filter10                 */
+      /* Details: "For multiple filter declarations for a single filter       */
+      /* class, the filter instance must receive all initialization           */
+      /* parameters defined in the filter declaration"                        */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2AddlFilterTests_SPEC2_20_Action_filter10", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Action_filter11                 */
+      /* Details: "For multiple filter declarations for a single filter       */
+      /* class, the filter instance must receive only initialization          */
+      /* parameters defined in the filter declaration"                        */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2AddlFilterTests_SPEC2_20_Action_filter11", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Action_filter12                 */
+      /* Details: "A filter class can appear in multiple filter               */
+      /* declarations"                                                        */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2AddlFilterTests_SPEC2_20_Action_filter12", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Action_filter13                 */
+      /* Details: "A filter declaration can be mapped to a portlet through    */
+      /* the deployment descriptor <filter-mapping> element"                  */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2AddlFilterTests_SPEC2_20_Action_filter13", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Action_filter14                 */
+      /* Details: "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"                      */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2AddlFilterTests_SPEC2_20_Action_filter14", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Action_filter15                 */
+      /* Details: "The order the container uses in building the chain of      */
+      /* filters to be applied for a particular request is the order in       */
+      /* which the <portlet-name> matching filter mappings appear in the      */
+      /* deployment descriptor"                                               */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2AddlFilterTests_SPEC2_20_Action_filter15", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Action_filterWrapper1           */
+      /* Details: "An ACTION_PHASE filter can wrap the ActionRequest object   */
+      /* with a custom wrapper"                                               */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2AddlFilterTests_SPEC2_20_Action_filterWrapper1", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Action_filterWrapper2           */
+      /* Details: "An ACTION_PHASE filter can wrap the ActionResponse         */
+      /* object with a custom wrapper"                                        */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2AddlFilterTests_SPEC2_20_Action_filterWrapper2", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Action_filter2                  */
+      /* Details: "If the filter declaration specifies the <lifecycle> tag    */
+      /* value ACTION_PHASE, the ActionFilter.doFilter method is called"      */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2AddlFilterTests_SPEC2_20_Action_filter2", aurl);
+         tb.writeTo(writer);
+      }
+
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/23a1c547/portlet-tck_3.0/V2AddlFilterTests/src/main/java/javax/portlet/tck/portlets/AddlFilterTests_SPEC2_20_Event.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2AddlFilterTests/src/main/java/javax/portlet/tck/portlets/AddlFilterTests_SPEC2_20_Event.java b/portlet-tck_3.0/V2AddlFilterTests/src/main/java/javax/portlet/tck/portlets/AddlFilterTests_SPEC2_20_Event.java
new file mode 100644
index 0000000..5568c38
--- /dev/null
+++ b/portlet-tck_3.0/V2AddlFilterTests/src/main/java/javax/portlet/tck/portlets/AddlFilterTests_SPEC2_20_Event.java
@@ -0,0 +1,253 @@
+/*  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package javax.portlet.tck.portlets;
+
+import java.io.*;
+import java.util.*;
+import java.util.logging.*;
+import static java.util.logging.Logger.*;
+import javax.xml.namespace.QName;
+import javax.portlet.*;
+import javax.portlet.filter.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.portlet.tck.beans.*;
+import javax.portlet.tck.constants.*;
+import static javax.portlet.tck.beans.JSR286SpecTestCaseDetails.*;
+import static javax.portlet.tck.constants.Constants.*;
+import static javax.portlet.PortletSession.*;
+import static javax.portlet.ResourceURL.*;
+
+/**
+ * This portlet implements several test cases for the JSR 362 TCK. The test case names
+ * are defined in the /src/main/resources/xml-resources/additionalTCs.xml
+ * file. The build process will integrate the test case names defined in the 
+ * additionalTCs.xml file into the complete list of test case names for execution by the driver.
+ *
+ * This is the main portlet for the test cases. If the test cases call for events, this portlet
+ * will initiate the events, but not process them. The processing is done in the companion 
+ * portlet AddlFilterTests_SPEC2_20_Event_event
+ *
+ */
+public class AddlFilterTests_SPEC2_20_Event implements Portlet, ResourceServingPortlet {
+   private static final String LOG_CLASS = 
+         AddlFilterTests_SPEC2_20_Event.class.getName();
+   private final Logger LOGGER = Logger.getLogger(LOG_CLASS);
+   
+   private PortletConfig portletConfig = null;
+
+   @Override
+   public void init(PortletConfig config) throws PortletException {
+      this.portletConfig = config;
+   }
+
+   @Override
+   public void destroy() {
+   }
+
+   @Override
+   public void processAction(ActionRequest portletReq, ActionResponse portletResp)
+         throws PortletException, IOException {
+      LOGGER.entering(LOG_CLASS, "main portlet processAction entry");
+
+      portletResp.setRenderParameters(portletReq.getParameterMap());
+      long tid = Thread.currentThread().getId();
+      portletReq.setAttribute(THREADID_ATTR, tid);
+
+      StringWriter writer = new StringWriter();
+
+      QName eventQName = new QName(TCKNAMESPACE,
+             "AddlFilterTests_SPEC2_20_Event");
+      portletResp.setEvent(eventQName, "Hi!");
+   }
+
+   @Override
+   public void serveResource(ResourceRequest portletReq, ResourceResponse portletResp)
+         throws PortletException, IOException {
+      LOGGER.entering(LOG_CLASS, "main portlet serveResource entry");
+
+      long tid = Thread.currentThread().getId();
+      portletReq.setAttribute(THREADID_ATTR, tid);
+
+      PrintWriter writer = portletResp.getWriter();
+
+   }
+
+   @Override
+   public void render(RenderRequest portletReq, RenderResponse portletResp)
+         throws PortletException, IOException {
+      LOGGER.entering(LOG_CLASS, "main portlet render entry");
+
+      long tid = Thread.currentThread().getId();
+      portletReq.setAttribute(THREADID_ATTR, tid);
+
+      PrintWriter writer = portletResp.getWriter();
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Event_filter1                   */
+      /* Details: "A filter declaration can be configured in the deployment   */
+      /* descriptor"                                                          */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2AddlFilterTests_SPEC2_20_Event_filter1", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Event_filter6                   */
+      /* Details: "A filter declaration can contain multiple <lifecycle>      */
+      /* tags for a single filter class"                                      */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2AddlFilterTests_SPEC2_20_Event_filter6", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Event_filter7                   */
+      /* Details: "The filter declaration can contain initialization          */
+      /* parameters which can be read by the filter through the               */
+      /* FilterConfig object"                                                 */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2AddlFilterTests_SPEC2_20_Event_filter7", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Event_filter8                   */
+      /* Details: "For each filter declaration, the filter instance must      */
+      /* receive all initialization parameters defined in the filter          */
+      /* declaration"                                                         */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2AddlFilterTests_SPEC2_20_Event_filter8", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Event_filter9                   */
+      /* Details: "For each filter declaration, the filter instance must      */
+      /* receive only initialization parameters defined in the filter         */
+      /* declaration"                                                         */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2AddlFilterTests_SPEC2_20_Event_filter9", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Event_filter10                  */
+      /* Details: "For multiple filter declarations for a single filter       */
+      /* class, the filter instance must receive all initialization           */
+      /* parameters defined in the filter declaration"                        */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2AddlFilterTests_SPEC2_20_Event_filter10", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Event_filter11                  */
+      /* Details: "For multiple filter declarations for a single filter       */
+      /* class, the filter instance must receive only initialization          */
+      /* parameters defined in the filter declaration"                        */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2AddlFilterTests_SPEC2_20_Event_filter11", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Event_filter12                  */
+      /* Details: "A filter class can appear in multiple filter               */
+      /* declarations"                                                        */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2AddlFilterTests_SPEC2_20_Event_filter12", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Event_filter13                  */
+      /* Details: "A filter declaration can be mapped to a portlet through    */
+      /* the deployment descriptor <filter-mapping> element"                  */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2AddlFilterTests_SPEC2_20_Event_filter13", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Event_filter14                  */
+      /* Details: "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"                      */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2AddlFilterTests_SPEC2_20_Event_filter14", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Event_filter15                  */
+      /* Details: "The order the container uses in building the chain of      */
+      /* filters to be applied for a particular request is the order in       */
+      /* which the <portlet-name> matching filter mappings appear in the      */
+      /* deployment descriptor"                                               */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2AddlFilterTests_SPEC2_20_Event_filter15", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Event_filterWrapper3            */
+      /* Details: "An EVENT_PHASE filter can wrap the EventRequest object     */
+      /* with a custom wrapper"                                               */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2AddlFilterTests_SPEC2_20_Event_filterWrapper3", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Event_filterWrapper4            */
+      /* Details: "An EVENT_PHASE filter can wrap the EventResponse object    */
+      /* with a custom wrapper"                                               */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2AddlFilterTests_SPEC2_20_Event_filterWrapper4", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Event_filter4                   */
+      /* Details: "If the filter declaration specifies the <lifecycle> tag    */
+      /* value EVENT_PHASE, the EventFilter.doFilter method is called"        */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2AddlFilterTests_SPEC2_20_Event_filter4", aurl);
+         tb.writeTo(writer);
+      }
+
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/23a1c547/portlet-tck_3.0/V2AddlFilterTests/src/main/java/javax/portlet/tck/portlets/AddlFilterTests_SPEC2_20_Event_event.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2AddlFilterTests/src/main/java/javax/portlet/tck/portlets/AddlFilterTests_SPEC2_20_Event_event.java b/portlet-tck_3.0/V2AddlFilterTests/src/main/java/javax/portlet/tck/portlets/AddlFilterTests_SPEC2_20_Event_event.java
new file mode 100644
index 0000000..7f5b4e3
--- /dev/null
+++ b/portlet-tck_3.0/V2AddlFilterTests/src/main/java/javax/portlet/tck/portlets/AddlFilterTests_SPEC2_20_Event_event.java
@@ -0,0 +1,230 @@
+/*  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package javax.portlet.tck.portlets;
+
+import java.io.*;
+import java.util.*;
+import java.util.logging.*;
+import static java.util.logging.Logger.*;
+import javax.xml.namespace.QName;
+import javax.portlet.*;
+import javax.portlet.filter.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.portlet.tck.beans.*;
+import javax.portlet.tck.constants.*;
+import static javax.portlet.tck.constants.Constants.*;
+import static javax.portlet.tck.beans.JSR286SpecTestCaseDetails.*;
+import static javax.portlet.PortletSession.*;
+
+/**
+ * This is the event processing portlet for the test cases. This portlet processes events, 
+ * but does not publish them. Events are published in the main portlet for the test cases. 
+ */
+public class AddlFilterTests_SPEC2_20_Event_event implements Portlet, EventPortlet, ResourceServingPortlet {
+   private static final String LOG_CLASS = 
+         AddlFilterTests_SPEC2_20_Event_event.class.getName();
+   private final Logger LOGGER = Logger.getLogger(LOG_CLASS);
+   
+   private PortletConfig portletConfig = null;
+
+   @Override
+   public void init(PortletConfig config) throws PortletException {
+      this.portletConfig = config;
+   }
+
+   @Override
+   public void destroy() {
+   }
+
+   @Override
+   public void processAction(ActionRequest portletReq, ActionResponse portletResp)
+         throws PortletException, IOException {
+      LOGGER.entering(LOG_CLASS, "event companion processAction - ERROR!!");
+   }
+
+   @Override
+   public void serveResource(ResourceRequest portletReq, ResourceResponse portletResp)
+         throws PortletException, IOException {
+      LOGGER.entering(LOG_CLASS, "event companion serveResource - ERROR!!");
+   }
+
+   @Override
+   public void processEvent(EventRequest portletReq, EventResponse portletResp)
+         throws PortletException, IOException {
+      LOGGER.entering(LOG_CLASS, "event companion processEvent");
+
+
+      portletResp.setRenderParameters(portletReq);
+
+      long tid = Thread.currentThread().getId();
+      portletReq.setAttribute(THREADID_ATTR, tid);
+
+      StringWriter writer = new StringWriter();
+
+      JSR286SpecTestCaseDetails tcd = new JSR286SpecTestCaseDetails();
+
+      // Create result objects for the tests
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Event_filter1                   */
+      /* Details: "A filter declaration can be configured in the deployment   */
+      /* descriptor"                                                          */
+      TestResult tr0 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_EVENT_FILTER1);
+      /* TODO: implement test */
+      tr0.appendTcDetail("Not implemented.");
+      tr0.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Event_filter6                   */
+      /* Details: "A filter declaration can contain multiple <lifecycle>      */
+      /* tags for a single filter class"                                      */
+      TestResult tr1 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_EVENT_FILTER6);
+      /* TODO: implement test */
+      tr1.appendTcDetail("Not implemented.");
+      tr1.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Event_filter7                   */
+      /* Details: "The filter declaration can contain initialization          */
+      /* parameters which can be read by the filter through the               */
+      /* FilterConfig object"                                                 */
+      TestResult tr2 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_EVENT_FILTER7);
+      /* TODO: implement test */
+      tr2.appendTcDetail("Not implemented.");
+      tr2.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Event_filter8                   */
+      /* Details: "For each filter declaration, the filter instance must      */
+      /* receive all initialization parameters defined in the filter          */
+      /* declaration"                                                         */
+      TestResult tr3 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_EVENT_FILTER8);
+      /* TODO: implement test */
+      tr3.appendTcDetail("Not implemented.");
+      tr3.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Event_filter9                   */
+      /* Details: "For each filter declaration, the filter instance must      */
+      /* receive only initialization parameters defined in the filter         */
+      /* declaration"                                                         */
+      TestResult tr4 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_EVENT_FILTER9);
+      /* TODO: implement test */
+      tr4.appendTcDetail("Not implemented.");
+      tr4.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Event_filter10                  */
+      /* Details: "For multiple filter declarations for a single filter       */
+      /* class, the filter instance must receive all initialization           */
+      /* parameters defined in the filter declaration"                        */
+      TestResult tr5 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_EVENT_FILTER10);
+      /* TODO: implement test */
+      tr5.appendTcDetail("Not implemented.");
+      tr5.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Event_filter11                  */
+      /* Details: "For multiple filter declarations for a single filter       */
+      /* class, the filter instance must receive only initialization          */
+      /* parameters defined in the filter declaration"                        */
+      TestResult tr6 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_EVENT_FILTER11);
+      /* TODO: implement test */
+      tr6.appendTcDetail("Not implemented.");
+      tr6.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Event_filter12                  */
+      /* Details: "A filter class can appear in multiple filter               */
+      /* declarations"                                                        */
+      TestResult tr7 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_EVENT_FILTER12);
+      /* TODO: implement test */
+      tr7.appendTcDetail("Not implemented.");
+      tr7.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Event_filter13                  */
+      /* Details: "A filter declaration can be mapped to a portlet through    */
+      /* the deployment descriptor <filter-mapping> element"                  */
+      TestResult tr8 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_EVENT_FILTER13);
+      /* TODO: implement test */
+      tr8.appendTcDetail("Not implemented.");
+      tr8.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Event_filter14                  */
+      /* Details: "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"                      */
+      TestResult tr9 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_EVENT_FILTER14);
+      /* TODO: implement test */
+      tr9.appendTcDetail("Not implemented.");
+      tr9.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Event_filter15                  */
+      /* Details: "The order the container uses in building the chain of      */
+      /* filters to be applied for a particular request is the order in       */
+      /* which the <portlet-name> matching filter mappings appear in the      */
+      /* deployment descriptor"                                               */
+      TestResult tr10 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_EVENT_FILTER15);
+      /* TODO: implement test */
+      tr10.appendTcDetail("Not implemented.");
+      tr10.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Event_filterWrapper3            */
+      /* Details: "An EVENT_PHASE filter can wrap the EventRequest object     */
+      /* with a custom wrapper"                                               */
+      TestResult tr11 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_EVENT_FILTERWRAPPER3);
+      /* TODO: implement test */
+      tr11.appendTcDetail("Not implemented.");
+      tr11.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Event_filterWrapper4            */
+      /* Details: "An EVENT_PHASE filter can wrap the EventResponse object    */
+      /* with a custom wrapper"                                               */
+      TestResult tr12 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_EVENT_FILTERWRAPPER4);
+      /* TODO: implement test */
+      tr12.appendTcDetail("Not implemented.");
+      tr12.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Event_filter4                   */
+      /* Details: "If the filter declaration specifies the <lifecycle> tag    */
+      /* value EVENT_PHASE, the EventFilter.doFilter method is called"        */
+      TestResult tr13 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_EVENT_FILTER4);
+      /* TODO: implement test */
+      tr13.appendTcDetail("Not implemented.");
+      tr13.writeTo(writer);
+
+      portletReq.getPortletSession().setAttribute(
+                   Constants.RESULT_ATTR_PREFIX + "AddlFilterTests_SPEC2_20_Event",
+                   writer.toString(), APPLICATION_SCOPE);
+
+   }
+
+   @Override
+   public void render(RenderRequest portletReq, RenderResponse portletResp)
+         throws PortletException, IOException {
+      
+      LOGGER.entering(LOG_CLASS, "event companion render");
+
+      portletResp.setContentType("text/html");
+      PrintWriter writer = portletResp.getWriter();
+      writer.write("<h3>Event Companion Portlet </h3>\n");
+      writer.write("<p>AddlFilterTests_SPEC2_20_Event_event</p>\n");
+
+      String msg = (String) portletReq.getPortletSession()
+            .getAttribute(RESULT_ATTR_PREFIX + "AddlFilterTests_SPEC2_20_Event", APPLICATION_SCOPE);
+      msg = (msg==null) ? "Not ready. click test case link." : msg;
+      writer.write("<p>" + msg + "</p>\n");
+
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/23a1c547/portlet-tck_3.0/V2AddlFilterTests/src/main/java/javax/portlet/tck/portlets/AddlFilterTests_SPEC2_20_PortletFilter.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2AddlFilterTests/src/main/java/javax/portlet/tck/portlets/AddlFilterTests_SPEC2_20_PortletFilter.java b/portlet-tck_3.0/V2AddlFilterTests/src/main/java/javax/portlet/tck/portlets/AddlFilterTests_SPEC2_20_PortletFilter.java
deleted file mode 100644
index b631ac4..0000000
--- a/portlet-tck_3.0/V2AddlFilterTests/src/main/java/javax/portlet/tck/portlets/AddlFilterTests_SPEC2_20_PortletFilter.java
+++ /dev/null
@@ -1,258 +0,0 @@
-/*  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package javax.portlet.tck.portlets;
-
-import java.io.IOException;
-import java.io.PrintWriter;
-
-import java.util.Enumeration;
-import java.util.Locale;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.portlet.*;
-import javax.portlet.filter.*;
-import javax.portlet.tck.beans.ClassChecker;
-import javax.portlet.tck.beans.TestCaseDetails;
-import javax.portlet.tck.beans.JSR286SpecTestCaseDetails;
-import static javax.portlet.tck.beans.JSR286SpecTestCaseDetails.*;
-import javax.portlet.tck.beans.TestResult;
-
-/**
- * This portlet implements several test cases for the JSR 362 TCK. The test case names
- * are defined in the /src/main/resources/xml-resources/additionalTCs.xml
- * file. The build process will integrate the test case names defined in the 
- * additionalTCs.xml file into the complete list of test case names for execution by the driver.
- */
-public class AddlFilterTests_SPEC2_20_PortletFilter implements Portlet {
-   private static final String LOG_CLASS = 
-         AddlFilterTests_SPEC2_20_PortletFilter.class.getName();
-   private final Logger LOGGER = Logger.getLogger(LOG_CLASS);
-   
-   private PortletConfig portletConfig = null;
-
-   @Override
-   public void init(PortletConfig config) throws PortletException {
-      this.portletConfig = config;
-   }
-
-   @Override
-   public void destroy() {
-   }
-
-   @Override
-   public void processAction(ActionRequest actionRequest, ActionResponse actionResponse)
-         throws PortletException, IOException {
-   }
-
-   @Override
-   public void render(RenderRequest renderRequest, RenderResponse renderResponse)
-         throws PortletException, IOException {
-      
-      if (LOGGER.isLoggable(Level.FINE)) {
-         LOGGER.logp(Level.FINE, LOG_CLASS, "render", "Entry");
-      }
-
-      PrintWriter writer = renderResponse.getWriter();
-      JSR286SpecTestCaseDetails tcd = new JSR286SpecTestCaseDetails();
-
-      // Create result objects for the tests
-
-      /* TestCase: SPEC2_20_PortletFilter_filter1                             */
-      /* Details: "A filter declaration can be configured in the deployment   */
-      /* descriptor"                                                          */
-      TestResult tr0 = tcd.getTestResultFailed(SPEC2_20_PORTLETFILTER_FILTER1);
-      /* TODO: implement test */
-
-      /* TestCase: SPEC2_20_PortletFilter_filter2                             */
-      /* Details: "If the filter declaration specifies the <lifecycle> tag    */
-      /* value ACTION_PHASE, the ActionFilter.doFilter method is called"      */
-      TestResult tr1 = tcd.getTestResultFailed(SPEC2_20_PORTLETFILTER_FILTER2);
-      /* TODO: implement test */
-
-      /* TestCase: SPEC2_20_PortletFilter_filter3                             */
-      /* Details: "If the filter declaration specifies the <lifecycle> tag    */
-      /* value RENDER_PHASE, the RenderFilter.doFilter method is called"      */
-      TestResult tr2 = tcd.getTestResultFailed(SPEC2_20_PORTLETFILTER_FILTER3);
-      /* TODO: implement test */
-
-      /* TestCase: SPEC2_20_PortletFilter_filter4                             */
-      /* Details: "If the filter declaration specifies the <lifecycle> tag    */
-      /* value EVENT_PHASE, the EventFilter.doFilter method is called"        */
-      TestResult tr3 = tcd.getTestResultFailed(SPEC2_20_PORTLETFILTER_FILTER4);
-      /* TODO: implement test */
-
-      /* TestCase: SPEC2_20_PortletFilter_filter5                             */
-      /* Details: "If the filter declaration specifies the <lifecycle> tag    */
-      /* value RESOURCE_PHASE, the ResourceFilter.doFilter method is          */
-      /* called"                                                              */
-      TestResult tr4 = tcd.getTestResultFailed(SPEC2_20_PORTLETFILTER_FILTER5);
-      /* TODO: implement test */
-
-      /* TestCase: SPEC2_20_PortletFilter_filter6                             */
-      /* Details: "A filter declaration can contain multiple <lifecycle>      */
-      /* tags for a single filter class"                                      */
-      TestResult tr5 = tcd.getTestResultFailed(SPEC2_20_PORTLETFILTER_FILTER6);
-      /* TODO: implement test */
-
-      /* TestCase: SPEC2_20_PortletFilter_filter7                             */
-      /* Details: "The filter declaration can contain initialization          */
-      /* parameters which can be read by the filter through the               */
-      /* FilterConfig object"                                                 */
-      TestResult tr6 = tcd.getTestResultFailed(SPEC2_20_PORTLETFILTER_FILTER7);
-      /* TODO: implement test */
-
-      /* TestCase: SPEC2_20_PortletFilter_filter8                             */
-      /* Details: "For each filter declaration, the filter instance must      */
-      /* receive all initialization parameters defined in the filter          */
-      /* declaration"                                                         */
-      TestResult tr7 = tcd.getTestResultFailed(SPEC2_20_PORTLETFILTER_FILTER8);
-      /* TODO: implement test */
-
-      /* TestCase: SPEC2_20_PortletFilter_filter9                             */
-      /* Details: "For each filter declaration, the filter instance must      */
-      /* receive only initialization parameters defined in the filter         */
-      /* declaration"                                                         */
-      TestResult tr8 = tcd.getTestResultFailed(SPEC2_20_PORTLETFILTER_FILTER9);
-      /* TODO: implement test */
-
-      /* TestCase: SPEC2_20_PortletFilter_filter10                            */
-      /* Details: "For multiple filter declarations for a single filter       */
-      /* class, the filter instance must receive all initialization           */
-      /* parameters defined in the filter declaration"                        */
-      TestResult tr9 = tcd.getTestResultFailed(SPEC2_20_PORTLETFILTER_FILTER10);
-      /* TODO: implement test */
-
-      /* TestCase: SPEC2_20_PortletFilter_filter11                            */
-      /* Details: "For multiple filter declarations for a single filter       */
-      /* class, the filter instance must receive only initialization          */
-      /* parameters defined in the filter declaration"                        */
-      TestResult tr10 = tcd.getTestResultFailed(SPEC2_20_PORTLETFILTER_FILTER11);
-      /* TODO: implement test */
-
-      /* TestCase: SPEC2_20_PortletFilter_filter12                            */
-      /* Details: "A filter class can appear in multiple filter               */
-      /* declarations, and is instantiated once for each filter declaration   */
-      /* in which it appears"                                                 */
-      TestResult tr11 = tcd.getTestResultFailed(SPEC2_20_PORTLETFILTER_FILTER12);
-      /* TODO: implement test */
-
-      /* TestCase: SPEC2_20_PortletFilter_filter13                            */
-      /* Details: "A filter declaration can be mapped to a portlet through    */
-      /* the deployment descriptor <filter-mapping> element"                  */
-      TestResult tr12 = tcd.getTestResultFailed(SPEC2_20_PORTLETFILTER_FILTER13);
-      /* TODO: implement test */
-
-      /* TestCase: SPEC2_20_PortletFilter_filter14                            */
-      /* Details: "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"                      */
-      TestResult tr13 = tcd.getTestResultFailed(SPEC2_20_PORTLETFILTER_FILTER14);
-      /* TODO: implement test */
-
-      /* TestCase: SPEC2_20_PortletFilter_filter15                            */
-      /* Details: "The order the container uses in building the chain of      */
-      /* filters to be applied for a particular request is the order in       */
-      /* which the <portlet-name> matching filter mappings appear in the      */
-      /* deployment descriptor"                                               */
-      TestResult tr14 = tcd.getTestResultFailed(SPEC2_20_PORTLETFILTER_FILTER15);
-      /* TODO: implement test */
-
-      /* TestCase: SPEC2_20_PortletFilter_filterWrapper1                      */
-      /* Details: "An ACTION_PHASE filter can wrap the ActionRequest object   */
-      /* with a custom wrapper"                                               */
-      TestResult tr15 = tcd.getTestResultFailed(SPEC2_20_PORTLETFILTER_FILTERWRAPPER1);
-      /* TODO: implement test */
-
-      /* TestCase: SPEC2_20_PortletFilter_filterWrapper2                      */
-      /* Details: "An ACTION_PHASE filter can wrap the ActionResponse         */
-      /* object with a custom wrapper"                                        */
-      TestResult tr16 = tcd.getTestResultFailed(SPEC2_20_PORTLETFILTER_FILTERWRAPPER2);
-      /* TODO: implement test */
-
-      /* TestCase: SPEC2_20_PortletFilter_filterWrapper3                      */
-      /* Details: "An EVENT_PHASE filter can wrap the EventRequest object     */
-      /* with a custom wrapper"                                               */
-      TestResult tr17 = tcd.getTestResultFailed(SPEC2_20_PORTLETFILTER_FILTERWRAPPER3);
-      /* TODO: implement test */
-
-      /* TestCase: SPEC2_20_PortletFilter_filterWrapper4                      */
-      /* Details: "An EVENT_PHASE filter can wrap the EventResponse object    */
-      /* with a custom wrapper"                                               */
-      TestResult tr18 = tcd.getTestResultFailed(SPEC2_20_PORTLETFILTER_FILTERWRAPPER4);
-      /* TODO: implement test */
-
-      /* TestCase: SPEC2_20_PortletFilter_filterWrapper5                      */
-      /* Details: "An RENDER_PHASE filter can wrap the RenderRequest object   */
-      /* with a custom wrapper"                                               */
-      TestResult tr19 = tcd.getTestResultFailed(SPEC2_20_PORTLETFILTER_FILTERWRAPPER5);
-      /* TODO: implement test */
-
-      /* TestCase: SPEC2_20_PortletFilter_filterWrapper6                      */
-      /* Details: "An RENDER_PHASE filter can wrap the RenderResponse         */
-      /* object with a custom wrapper"                                        */
-      TestResult tr20 = tcd.getTestResultFailed(SPEC2_20_PORTLETFILTER_FILTERWRAPPER6);
-      /* TODO: implement test */
-
-      /* TestCase: SPEC2_20_PortletFilter_filterWrapper7                      */
-      /* Details: "An RESOURCE_PHASE filter can wrap the ResourceRequest      */
-      /* object with a custom wrapper"                                        */
-      TestResult tr21 = tcd.getTestResultFailed(SPEC2_20_PORTLETFILTER_FILTERWRAPPER7);
-      /* TODO: implement test */
-
-      /* TestCase: SPEC2_20_PortletFilter_filterWrapper8                      */
-      /* Details: "An RESOURCE_PHASE filter can wrap the ResourceResponse     */
-      /* object with a custom wrapper"                                        */
-      TestResult tr22 = tcd.getTestResultFailed(SPEC2_20_PORTLETFILTER_FILTERWRAPPER8);
-      /* TODO: implement test */
-
-
-
-      // Write the results to the output stream
-
-      tr0.writeTo(writer);
-      tr1.writeTo(writer);
-      tr2.writeTo(writer);
-      tr3.writeTo(writer);
-      tr4.writeTo(writer);
-      tr5.writeTo(writer);
-      tr6.writeTo(writer);
-      tr7.writeTo(writer);
-      tr8.writeTo(writer);
-      tr9.writeTo(writer);
-      tr10.writeTo(writer);
-      tr11.writeTo(writer);
-      tr12.writeTo(writer);
-      tr13.writeTo(writer);
-      tr14.writeTo(writer);
-      tr15.writeTo(writer);
-      tr16.writeTo(writer);
-      tr17.writeTo(writer);
-      tr18.writeTo(writer);
-      tr19.writeTo(writer);
-      tr20.writeTo(writer);
-      tr21.writeTo(writer);
-      tr22.writeTo(writer);
-
-
-   }
-
-}
-

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/23a1c547/portlet-tck_3.0/V2AddlFilterTests/src/main/java/javax/portlet/tck/portlets/AddlFilterTests_SPEC2_20_Render.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2AddlFilterTests/src/main/java/javax/portlet/tck/portlets/AddlFilterTests_SPEC2_20_Render.java b/portlet-tck_3.0/V2AddlFilterTests/src/main/java/javax/portlet/tck/portlets/AddlFilterTests_SPEC2_20_Render.java
new file mode 100644
index 0000000..4c1996a
--- /dev/null
+++ b/portlet-tck_3.0/V2AddlFilterTests/src/main/java/javax/portlet/tck/portlets/AddlFilterTests_SPEC2_20_Render.java
@@ -0,0 +1,226 @@
+/*  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package javax.portlet.tck.portlets;
+
+import java.io.*;
+import java.util.*;
+import java.util.logging.*;
+import static java.util.logging.Logger.*;
+import javax.xml.namespace.QName;
+import javax.portlet.*;
+import javax.portlet.filter.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.portlet.tck.beans.*;
+import javax.portlet.tck.constants.*;
+import static javax.portlet.tck.beans.JSR286SpecTestCaseDetails.*;
+import static javax.portlet.tck.constants.Constants.*;
+import static javax.portlet.PortletSession.*;
+import static javax.portlet.ResourceURL.*;
+
+/**
+ * This portlet implements several test cases for the JSR 362 TCK. The test case names
+ * are defined in the /src/main/resources/xml-resources/additionalTCs.xml
+ * file. The build process will integrate the test case names defined in the 
+ * additionalTCs.xml file into the complete list of test case names for execution by the driver.
+ *
+ * This is the main portlet for the test cases. If the test cases call for events, this portlet
+ * will initiate the events, but not process them. The processing is done in the companion 
+ * portlet AddlFilterTests_SPEC2_20_Render_event
+ *
+ */
+public class AddlFilterTests_SPEC2_20_Render implements Portlet, ResourceServingPortlet {
+   private static final String LOG_CLASS = 
+         AddlFilterTests_SPEC2_20_Render.class.getName();
+   private final Logger LOGGER = Logger.getLogger(LOG_CLASS);
+   
+   private PortletConfig portletConfig = null;
+
+   @Override
+   public void init(PortletConfig config) throws PortletException {
+      this.portletConfig = config;
+   }
+
+   @Override
+   public void destroy() {
+   }
+
+   @Override
+   public void processAction(ActionRequest portletReq, ActionResponse portletResp)
+         throws PortletException, IOException {
+      LOGGER.entering(LOG_CLASS, "main portlet processAction entry");
+
+      portletResp.setRenderParameters(portletReq.getParameterMap());
+      long tid = Thread.currentThread().getId();
+      portletReq.setAttribute(THREADID_ATTR, tid);
+
+      StringWriter writer = new StringWriter();
+
+   }
+
+   @Override
+   public void serveResource(ResourceRequest portletReq, ResourceResponse portletResp)
+         throws PortletException, IOException {
+      LOGGER.entering(LOG_CLASS, "main portlet serveResource entry");
+
+      long tid = Thread.currentThread().getId();
+      portletReq.setAttribute(THREADID_ATTR, tid);
+
+      PrintWriter writer = portletResp.getWriter();
+
+   }
+
+   @Override
+   public void render(RenderRequest portletReq, RenderResponse portletResp)
+         throws PortletException, IOException {
+      LOGGER.entering(LOG_CLASS, "main portlet render entry");
+
+      long tid = Thread.currentThread().getId();
+      portletReq.setAttribute(THREADID_ATTR, tid);
+
+      PrintWriter writer = portletResp.getWriter();
+
+      JSR286SpecTestCaseDetails tcd = new JSR286SpecTestCaseDetails();
+
+      // Create result objects for the tests
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Render_filter1                  */
+      /* Details: "A filter declaration can be configured in the deployment   */
+      /* descriptor"                                                          */
+      TestResult tr0 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_RENDER_FILTER1);
+      /* TODO: implement test */
+      tr0.appendTcDetail("Not implemented.");
+      tr0.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Render_filter6                  */
+      /* Details: "A filter declaration can contain multiple <lifecycle>      */
+      /* tags for a single filter class"                                      */
+      TestResult tr1 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_RENDER_FILTER6);
+      /* TODO: implement test */
+      tr1.appendTcDetail("Not implemented.");
+      tr1.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Render_filter7                  */
+      /* Details: "The filter declaration can contain initialization          */
+      /* parameters which can be read by the filter through the               */
+      /* FilterConfig object"                                                 */
+      TestResult tr2 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_RENDER_FILTER7);
+      /* TODO: implement test */
+      tr2.appendTcDetail("Not implemented.");
+      tr2.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Render_filter8                  */
+      /* Details: "For each filter declaration, the filter instance must      */
+      /* receive all initialization parameters defined in the filter          */
+      /* declaration"                                                         */
+      TestResult tr3 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_RENDER_FILTER8);
+      /* TODO: implement test */
+      tr3.appendTcDetail("Not implemented.");
+      tr3.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Render_filter9                  */
+      /* Details: "For each filter declaration, the filter instance must      */
+      /* receive only initialization parameters defined in the filter         */
+      /* declaration"                                                         */
+      TestResult tr4 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_RENDER_FILTER9);
+      /* TODO: implement test */
+      tr4.appendTcDetail("Not implemented.");
+      tr4.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Render_filter10                 */
+      /* Details: "For multiple filter declarations for a single filter       */
+      /* class, the filter instance must receive all initialization           */
+      /* parameters defined in the filter declaration"                        */
+      TestResult tr5 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_RENDER_FILTER10);
+      /* TODO: implement test */
+      tr5.appendTcDetail("Not implemented.");
+      tr5.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Render_filter11                 */
+      /* Details: "For multiple filter declarations for a single filter       */
+      /* class, the filter instance must receive only initialization          */
+      /* parameters defined in the filter declaration"                        */
+      TestResult tr6 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_RENDER_FILTER11);
+      /* TODO: implement test */
+      tr6.appendTcDetail("Not implemented.");
+      tr6.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Render_filter12                 */
+      /* Details: "A filter class can appear in multiple filter               */
+      /* declarations"                                                        */
+      TestResult tr7 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_RENDER_FILTER12);
+      /* TODO: implement test */
+      tr7.appendTcDetail("Not implemented.");
+      tr7.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Render_filter13                 */
+      /* Details: "A filter declaration can be mapped to a portlet through    */
+      /* the deployment descriptor <filter-mapping> element"                  */
+      TestResult tr8 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_RENDER_FILTER13);
+      /* TODO: implement test */
+      tr8.appendTcDetail("Not implemented.");
+      tr8.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Render_filter14                 */
+      /* Details: "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"                      */
+      TestResult tr9 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_RENDER_FILTER14);
+      /* TODO: implement test */
+      tr9.appendTcDetail("Not implemented.");
+      tr9.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Render_filter15                 */
+      /* Details: "The order the container uses in building the chain of      */
+      /* filters to be applied for a particular request is the order in       */
+      /* which the <portlet-name> matching filter mappings appear in the      */
+      /* deployment descriptor"                                               */
+      TestResult tr10 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_RENDER_FILTER15);
+      /* TODO: implement test */
+      tr10.appendTcDetail("Not implemented.");
+      tr10.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Render_filterWrapper5           */
+      /* Details: "An RENDER_PHASE filter can wrap the RenderRequest object   */
+      /* with a custom wrapper"                                               */
+      TestResult tr11 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_RENDER_FILTERWRAPPER5);
+      /* TODO: implement test */
+      tr11.appendTcDetail("Not implemented.");
+      tr11.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Render_filterWrapper6           */
+      /* Details: "An RENDER_PHASE filter can wrap the RenderResponse         */
+      /* object with a custom wrapper"                                        */
+      TestResult tr12 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_RENDER_FILTERWRAPPER6);
+      /* TODO: implement test */
+      tr12.appendTcDetail("Not implemented.");
+      tr12.writeTo(writer);
+
+      /* TestCase: V2AddlFilterTests_SPEC2_20_Render_filter3                  */
+      /* Details: "If the filter declaration specifies the <lifecycle> tag    */
+      /* value RENDER_PHASE, the RenderFilter.doFilter method is called"      */
+      TestResult tr13 = tcd.getTestResultFailed(V2ADDLFILTERTESTS_SPEC2_20_RENDER_FILTER3);
+      /* TODO: implement test */
+      tr13.appendTcDetail("Not implemented.");
+      tr13.writeTo(writer);
+
+   }
+
+}