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/09/01 15:29:45 UTC

[37/63] [abbrv] Moved filter test cases to proper filter method. Added keyword "Api" to test case names whose definitions were derived from the API documentation to allow targeted test runs for that group of tests.

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/db1071e7/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/filters/FilterTests_FilterConfig_ApiRenderFilter_filter.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/filters/FilterTests_FilterConfig_ApiRenderFilter_filter.java b/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/filters/FilterTests_FilterConfig_ApiRenderFilter_filter.java
new file mode 100644
index 0000000..c9a4a71
--- /dev/null
+++ b/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/filters/FilterTests_FilterConfig_ApiRenderFilter_filter.java
@@ -0,0 +1,125 @@
+/*  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.filters;
+
+import java.io.*;
+import java.util.*;
+import java.util.logging.*;
+import static java.util.logging.Logger.*;
+import javax.portlet.*;
+import javax.portlet.filter.*;
+import javax.portlet.tck.beans.*;
+import javax.portlet.tck.constants.*;
+import static javax.portlet.tck.constants.Constants.*;
+import static javax.portlet.tck.beans.JSR286ApiTestCaseDetails.*;
+import static javax.portlet.PortletSession.*;
+import static javax.portlet.ResourceURL.*;
+
+/**
+ * Filter for JSR 362 request dispatcher testing.
+ * Used by portlet: FilterTests_FilterConfig_ApiRenderFilter
+ *
+ * @author nick
+ *
+ */
+public class FilterTests_FilterConfig_ApiRenderFilter_filter implements RenderFilter {
+   private static final String LOG_CLASS = 
+         FilterTests_FilterConfig_ApiRenderFilter_filter.class.getName();
+   private final Logger LOGGER = Logger.getLogger(LOG_CLASS);
+
+   private FilterConfig filterConfig;
+
+   @Override
+   public void init(FilterConfig filterConfig) throws PortletException {
+      this.filterConfig = filterConfig;
+   }
+
+   @Override
+   public void destroy() {
+   }
+
+   @Override
+   public void doFilter(RenderRequest portletReq, RenderResponse portletResp,
+         FilterChain chain) throws IOException, PortletException {
+      LOGGER.entering(LOG_CLASS, "doFilter");
+
+      PrintWriter writer = portletResp.getWriter();
+
+      // first execute the chain
+
+      chain.doFilter(portletReq, portletResp);
+
+      // now do the tests and write output
+
+      JSR286ApiTestCaseDetails tcd = new JSR286ApiTestCaseDetails();
+
+      // Create result objects for the tests
+
+      /* TestCase: V2FilterTests_FilterConfig_ApiRenderFilter_getFilterName   */
+      /* Details: "Method getFilterName(): getFilterName method returns       */
+      /* filter name as defined in deployment descriptor"                     */
+      TestResult tr0 = tcd.getTestResultFailed(V2FILTERTESTS_FILTERCONFIG_APIRENDERFILTER_GETFILTERNAME);
+      /* TODO: implement test */
+      tr0.appendTcDetail("Not implemented.");
+      tr0.writeTo(writer);
+
+      /* TestCase: V2FilterTests_FilterConfig_ApiRenderFilter_getPortletContext */
+      /* Details: "Method getPortletContext(): Returns reference to           */
+      /* PortletContext object"                                               */
+      TestResult tr1 = tcd.getTestResultFailed(V2FILTERTESTS_FILTERCONFIG_APIRENDERFILTER_GETPORTLETCONTEXT);
+      /* TODO: implement test */
+      tr1.appendTcDetail("Not implemented.");
+      tr1.writeTo(writer);
+
+      /* TestCase: V2FilterTests_FilterConfig_ApiRenderFilter_getInitParameter1 */
+      /* Details: "Method getInitParameter(String): Returns null if           */
+      /* initialization parameter does not exist"                             */
+      TestResult tr2 = tcd.getTestResultFailed(V2FILTERTESTS_FILTERCONFIG_APIRENDERFILTER_GETINITPARAMETER1);
+      /* TODO: implement test */
+      tr2.appendTcDetail("Not implemented.");
+      tr2.writeTo(writer);
+
+      /* TestCase: V2FilterTests_FilterConfig_ApiRenderFilter_getInitParameter2 */
+      /* Details: "Method getInitParameter(String): Returns value of          */
+      /* specified initialization parameter"                                  */
+      TestResult tr3 = tcd.getTestResultFailed(V2FILTERTESTS_FILTERCONFIG_APIRENDERFILTER_GETINITPARAMETER2);
+      /* TODO: implement test */
+      tr3.appendTcDetail("Not implemented.");
+      tr3.writeTo(writer);
+
+      /* TestCase: V2FilterTests_FilterConfig_ApiRenderFilter_getInitParameterNames1 */
+      /* Details: "Method getInitParameterNames(): Returns empty              */
+      /* Enumeration if no parameters defined"                                */
+      TestResult tr4 = tcd.getTestResultFailed(V2FILTERTESTS_FILTERCONFIG_APIRENDERFILTER_GETINITPARAMETERNAMES1);
+      /* TODO: implement test */
+      tr4.appendTcDetail("Not implemented.");
+      tr4.writeTo(writer);
+
+      /* TestCase: V2FilterTests_FilterConfig_ApiRenderFilter_getInitParameterNames2 */
+      /* Details: "Method getInitParameterNames(): Returns an Enumeration     */
+      /* of initialization parameters defined in deployment descriptor"       */
+      TestResult tr5 = tcd.getTestResultFailed(V2FILTERTESTS_FILTERCONFIG_APIRENDERFILTER_GETINITPARAMETERNAMES2);
+      /* TODO: implement test */
+      tr5.appendTcDetail("Not implemented.");
+      tr5.writeTo(writer);
+
+
+   }
+}

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/db1071e7/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/filters/FilterTests_PortletFilter_ApiActionFilter_filter.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/filters/FilterTests_PortletFilter_ApiActionFilter_filter.java b/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/filters/FilterTests_PortletFilter_ApiActionFilter_filter.java
new file mode 100644
index 0000000..da9bf84
--- /dev/null
+++ b/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/filters/FilterTests_PortletFilter_ApiActionFilter_filter.java
@@ -0,0 +1,104 @@
+/*  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.filters;
+
+import java.io.*;
+import java.util.*;
+import java.util.logging.*;
+import static java.util.logging.Logger.*;
+import javax.portlet.*;
+import javax.portlet.filter.*;
+import javax.portlet.tck.beans.*;
+import javax.portlet.tck.constants.*;
+import static javax.portlet.tck.constants.Constants.*;
+import static javax.portlet.tck.beans.JSR286ApiTestCaseDetails.*;
+import static javax.portlet.PortletSession.*;
+import static javax.portlet.ResourceURL.*;
+
+/**
+ * Filter for JSR 362 request dispatcher testing.
+ * Used by portlet: FilterTests_PortletFilter_ApiActionFilter
+ *
+ * @author nick
+ *
+ */
+public class FilterTests_PortletFilter_ApiActionFilter_filter implements ActionFilter {
+   private static final String LOG_CLASS = 
+         FilterTests_PortletFilter_ApiActionFilter_filter.class.getName();
+   private final Logger LOGGER = Logger.getLogger(LOG_CLASS);
+
+   private FilterConfig filterConfig;
+
+   @Override
+   public void init(FilterConfig filterConfig) throws PortletException {
+      this.filterConfig = filterConfig;
+   }
+
+   @Override
+   public void destroy() {
+   }
+
+   @Override
+   public void doFilter(ActionRequest portletReq, ActionResponse portletResp,
+         FilterChain chain) throws IOException, PortletException {
+      LOGGER.entering(LOG_CLASS, "doFilter");
+
+      StringWriter writer = new StringWriter();
+
+      // first execute the chain
+
+      chain.doFilter(portletReq, portletResp);
+
+      // now do the tests and write output
+
+      JSR286ApiTestCaseDetails tcd = new JSR286ApiTestCaseDetails();
+
+      // Create result objects for the tests
+
+      /* TestCase: V2FilterTests_PortletFilter_ApiActionFilter_initAction1    */
+      /* Details: "The init(FilterConfig): method is called when an           */
+      /* ActionFilter is configured"                                          */
+      TestResult tr0 = tcd.getTestResultFailed(V2FILTERTESTS_PORTLETFILTER_APIACTIONFILTER_INITACTION1);
+      /* TODO: implement test */
+      tr0.appendTcDetail("Not implemented.");
+      tr0.writeTo(writer);
+
+      /* TestCase: V2FilterTests_PortletFilter_ApiActionFilter_initAction2    */
+      /* Details: "The init(FilterConfig): method for an ActionFilter is      */
+      /* passed a FilterConfig object"                                        */
+      TestResult tr1 = tcd.getTestResultFailed(V2FILTERTESTS_PORTLETFILTER_APIACTIONFILTER_INITACTION2);
+      /* TODO: implement test */
+      tr1.appendTcDetail("Not implemented.");
+      tr1.writeTo(writer);
+
+      /* TestCase: V2FilterTests_PortletFilter_ApiActionFilter_initAction3    */
+      /* Details: "If the init(FilterConfig): method for an ActionFilter      */
+      /* throws a PortletException, the filter is not placed in service"      */
+      TestResult tr2 = tcd.getTestResultFailed(V2FILTERTESTS_PORTLETFILTER_APIACTIONFILTER_INITACTION3);
+      /* TODO: implement test */
+      tr2.appendTcDetail("Not implemented.");
+      tr2.writeTo(writer);
+
+      portletReq.getPortletSession().setAttribute(
+                   Constants.RESULT_ATTR_PREFIX + "FilterTests_PortletFilter_ApiActionFilter",
+                   writer.toString(), APPLICATION_SCOPE);
+
+   }
+}

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/db1071e7/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/filters/FilterTests_PortletFilter_ApiEventFilter_filter.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/filters/FilterTests_PortletFilter_ApiEventFilter_filter.java b/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/filters/FilterTests_PortletFilter_ApiEventFilter_filter.java
new file mode 100644
index 0000000..aaeb9ef
--- /dev/null
+++ b/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/filters/FilterTests_PortletFilter_ApiEventFilter_filter.java
@@ -0,0 +1,104 @@
+/*  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.filters;
+
+import java.io.*;
+import java.util.*;
+import java.util.logging.*;
+import static java.util.logging.Logger.*;
+import javax.portlet.*;
+import javax.portlet.filter.*;
+import javax.portlet.tck.beans.*;
+import javax.portlet.tck.constants.*;
+import static javax.portlet.tck.constants.Constants.*;
+import static javax.portlet.tck.beans.JSR286ApiTestCaseDetails.*;
+import static javax.portlet.PortletSession.*;
+import static javax.portlet.ResourceURL.*;
+
+/**
+ * Filter for JSR 362 request dispatcher testing.
+ * Used by portlet: FilterTests_PortletFilter_ApiEventFilter
+ *
+ * @author nick
+ *
+ */
+public class FilterTests_PortletFilter_ApiEventFilter_filter implements EventFilter {
+   private static final String LOG_CLASS = 
+         FilterTests_PortletFilter_ApiEventFilter_filter.class.getName();
+   private final Logger LOGGER = Logger.getLogger(LOG_CLASS);
+
+   private FilterConfig filterConfig;
+
+   @Override
+   public void init(FilterConfig filterConfig) throws PortletException {
+      this.filterConfig = filterConfig;
+   }
+
+   @Override
+   public void destroy() {
+   }
+
+   @Override
+   public void doFilter(EventRequest portletReq, EventResponse portletResp,
+         FilterChain chain) throws IOException, PortletException {
+      LOGGER.entering(LOG_CLASS, "doFilter");
+
+      StringWriter writer = new StringWriter();
+
+      // first execute the chain
+
+      chain.doFilter(portletReq, portletResp);
+
+      // now do the tests and write output
+
+      JSR286ApiTestCaseDetails tcd = new JSR286ApiTestCaseDetails();
+
+      // Create result objects for the tests
+
+      /* TestCase: V2FilterTests_PortletFilter_ApiEventFilter_initEvent1      */
+      /* Details: "The init(FilterConfig): method is called when an           */
+      /* EventFilter is configured"                                           */
+      TestResult tr0 = tcd.getTestResultFailed(V2FILTERTESTS_PORTLETFILTER_APIEVENTFILTER_INITEVENT1);
+      /* TODO: implement test */
+      tr0.appendTcDetail("Not implemented.");
+      tr0.writeTo(writer);
+
+      /* TestCase: V2FilterTests_PortletFilter_ApiEventFilter_initEvent2      */
+      /* Details: "The init(FilterConfig): method for an EventFilter is       */
+      /* passed a FilterConfig object"                                        */
+      TestResult tr1 = tcd.getTestResultFailed(V2FILTERTESTS_PORTLETFILTER_APIEVENTFILTER_INITEVENT2);
+      /* TODO: implement test */
+      tr1.appendTcDetail("Not implemented.");
+      tr1.writeTo(writer);
+
+      /* TestCase: V2FilterTests_PortletFilter_ApiEventFilter_initEvent3      */
+      /* Details: "If the init(FilterConfig): method for an EventFilter       */
+      /* throws a PortletException, the filter is not placed in service"      */
+      TestResult tr2 = tcd.getTestResultFailed(V2FILTERTESTS_PORTLETFILTER_APIEVENTFILTER_INITEVENT3);
+      /* TODO: implement test */
+      tr2.appendTcDetail("Not implemented.");
+      tr2.writeTo(writer);
+
+      portletReq.getPortletSession().setAttribute(
+                   Constants.RESULT_ATTR_PREFIX + "FilterTests_PortletFilter_ApiEventFilter",
+                   writer.toString(), APPLICATION_SCOPE);
+
+   }
+}

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/db1071e7/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/filters/FilterTests_PortletFilter_ApiRenderFilter_filter.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/filters/FilterTests_PortletFilter_ApiRenderFilter_filter.java b/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/filters/FilterTests_PortletFilter_ApiRenderFilter_filter.java
new file mode 100644
index 0000000..330db5c
--- /dev/null
+++ b/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/filters/FilterTests_PortletFilter_ApiRenderFilter_filter.java
@@ -0,0 +1,101 @@
+/*  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.filters;
+
+import java.io.*;
+import java.util.*;
+import java.util.logging.*;
+import static java.util.logging.Logger.*;
+import javax.portlet.*;
+import javax.portlet.filter.*;
+import javax.portlet.tck.beans.*;
+import javax.portlet.tck.constants.*;
+import static javax.portlet.tck.constants.Constants.*;
+import static javax.portlet.tck.beans.JSR286ApiTestCaseDetails.*;
+import static javax.portlet.PortletSession.*;
+import static javax.portlet.ResourceURL.*;
+
+/**
+ * Filter for JSR 362 request dispatcher testing.
+ * Used by portlet: FilterTests_PortletFilter_ApiRenderFilter
+ *
+ * @author nick
+ *
+ */
+public class FilterTests_PortletFilter_ApiRenderFilter_filter implements RenderFilter {
+   private static final String LOG_CLASS = 
+         FilterTests_PortletFilter_ApiRenderFilter_filter.class.getName();
+   private final Logger LOGGER = Logger.getLogger(LOG_CLASS);
+
+   private FilterConfig filterConfig;
+
+   @Override
+   public void init(FilterConfig filterConfig) throws PortletException {
+      this.filterConfig = filterConfig;
+   }
+
+   @Override
+   public void destroy() {
+   }
+
+   @Override
+   public void doFilter(RenderRequest portletReq, RenderResponse portletResp,
+         FilterChain chain) throws IOException, PortletException {
+      LOGGER.entering(LOG_CLASS, "doFilter");
+
+      PrintWriter writer = portletResp.getWriter();
+
+      // first execute the chain
+
+      chain.doFilter(portletReq, portletResp);
+
+      // now do the tests and write output
+
+      JSR286ApiTestCaseDetails tcd = new JSR286ApiTestCaseDetails();
+
+      // Create result objects for the tests
+
+      /* TestCase: V2FilterTests_PortletFilter_ApiRenderFilter_initRender1    */
+      /* Details: "The init(FilterConfig): method is called when an           */
+      /* RenderFilter is configured"                                          */
+      TestResult tr0 = tcd.getTestResultFailed(V2FILTERTESTS_PORTLETFILTER_APIRENDERFILTER_INITRENDER1);
+      /* TODO: implement test */
+      tr0.appendTcDetail("Not implemented.");
+      tr0.writeTo(writer);
+
+      /* TestCase: V2FilterTests_PortletFilter_ApiRenderFilter_initRender2    */
+      /* Details: "The init(FilterConfig): method for an RenderFilter is      */
+      /* passed a FilterConfig object"                                        */
+      TestResult tr1 = tcd.getTestResultFailed(V2FILTERTESTS_PORTLETFILTER_APIRENDERFILTER_INITRENDER2);
+      /* TODO: implement test */
+      tr1.appendTcDetail("Not implemented.");
+      tr1.writeTo(writer);
+
+      /* TestCase: V2FilterTests_PortletFilter_ApiRenderFilter_initRender3    */
+      /* Details: "If the init(FilterConfig): method for an RenderFilter      */
+      /* throws a PortletException, the filter is not placed in service"      */
+      TestResult tr2 = tcd.getTestResultFailed(V2FILTERTESTS_PORTLETFILTER_APIRENDERFILTER_INITRENDER3);
+      /* TODO: implement test */
+      tr2.appendTcDetail("Not implemented.");
+      tr2.writeTo(writer);
+
+
+   }
+}

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/db1071e7/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/filters/FilterTests_PortletFilter_ApiResourceFilter_filter.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/filters/FilterTests_PortletFilter_ApiResourceFilter_filter.java b/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/filters/FilterTests_PortletFilter_ApiResourceFilter_filter.java
new file mode 100644
index 0000000..7b5f82d
--- /dev/null
+++ b/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/filters/FilterTests_PortletFilter_ApiResourceFilter_filter.java
@@ -0,0 +1,101 @@
+/*  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.filters;
+
+import java.io.*;
+import java.util.*;
+import java.util.logging.*;
+import static java.util.logging.Logger.*;
+import javax.portlet.*;
+import javax.portlet.filter.*;
+import javax.portlet.tck.beans.*;
+import javax.portlet.tck.constants.*;
+import static javax.portlet.tck.constants.Constants.*;
+import static javax.portlet.tck.beans.JSR286ApiTestCaseDetails.*;
+import static javax.portlet.PortletSession.*;
+import static javax.portlet.ResourceURL.*;
+
+/**
+ * Filter for JSR 362 request dispatcher testing.
+ * Used by portlet: FilterTests_PortletFilter_ApiResourceFilter
+ *
+ * @author nick
+ *
+ */
+public class FilterTests_PortletFilter_ApiResourceFilter_filter implements ResourceFilter {
+   private static final String LOG_CLASS = 
+         FilterTests_PortletFilter_ApiResourceFilter_filter.class.getName();
+   private final Logger LOGGER = Logger.getLogger(LOG_CLASS);
+
+   private FilterConfig filterConfig;
+
+   @Override
+   public void init(FilterConfig filterConfig) throws PortletException {
+      this.filterConfig = filterConfig;
+   }
+
+   @Override
+   public void destroy() {
+   }
+
+   @Override
+   public void doFilter(ResourceRequest portletReq, ResourceResponse portletResp,
+         FilterChain chain) throws IOException, PortletException {
+      LOGGER.entering(LOG_CLASS, "doFilter");
+
+      PrintWriter writer = portletResp.getWriter();
+
+      // first execute the chain
+
+      chain.doFilter(portletReq, portletResp);
+
+      // now do the tests and write output
+
+      JSR286ApiTestCaseDetails tcd = new JSR286ApiTestCaseDetails();
+
+      // Create result objects for the tests
+
+      /* TestCase: V2FilterTests_PortletFilter_ApiResourceFilter_initResource1 */
+      /* Details: "The init(FilterConfig): method is called when an           */
+      /* ResourceFilter is configured"                                        */
+      TestResult tr0 = tcd.getTestResultFailed(V2FILTERTESTS_PORTLETFILTER_APIRESOURCEFILTER_INITRESOURCE1);
+      /* TODO: implement test */
+      tr0.appendTcDetail("Not implemented.");
+      tr0.writeTo(writer);
+
+      /* TestCase: V2FilterTests_PortletFilter_ApiResourceFilter_initResource2 */
+      /* Details: "The init(FilterConfig): method for an ResourceFilter is    */
+      /* passed a FilterConfig object"                                        */
+      TestResult tr1 = tcd.getTestResultFailed(V2FILTERTESTS_PORTLETFILTER_APIRESOURCEFILTER_INITRESOURCE2);
+      /* TODO: implement test */
+      tr1.appendTcDetail("Not implemented.");
+      tr1.writeTo(writer);
+
+      /* TestCase: V2FilterTests_PortletFilter_ApiResourceFilter_initResource3 */
+      /* Details: "If the init(FilterConfig): method for an ResourceFilter    */
+      /* throws a PortletException, the filter is not placed in service"      */
+      TestResult tr2 = tcd.getTestResultFailed(V2FILTERTESTS_PORTLETFILTER_APIRESOURCEFILTER_INITRESOURCE3);
+      /* TODO: implement test */
+      tr2.appendTcDetail("Not implemented.");
+      tr2.writeTo(writer);
+
+
+   }
+}

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/db1071e7/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/filters/FilterTests_RenderFilter_ApiRenderFilter_filter.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/filters/FilterTests_RenderFilter_ApiRenderFilter_filter.java b/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/filters/FilterTests_RenderFilter_ApiRenderFilter_filter.java
new file mode 100644
index 0000000..58e8ee7
--- /dev/null
+++ b/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/filters/FilterTests_RenderFilter_ApiRenderFilter_filter.java
@@ -0,0 +1,157 @@
+/*  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.filters;
+
+import java.io.*;
+import java.util.*;
+import java.util.logging.*;
+import static java.util.logging.Logger.*;
+import javax.portlet.*;
+import javax.portlet.filter.*;
+import javax.portlet.tck.beans.*;
+import javax.portlet.tck.constants.*;
+import static javax.portlet.tck.constants.Constants.*;
+import static javax.portlet.tck.beans.JSR286ApiTestCaseDetails.*;
+import static javax.portlet.PortletSession.*;
+import static javax.portlet.ResourceURL.*;
+
+/**
+ * Filter for JSR 362 request dispatcher testing.
+ * Used by portlet: FilterTests_RenderFilter_ApiRenderFilter
+ *
+ * @author nick
+ *
+ */
+public class FilterTests_RenderFilter_ApiRenderFilter_filter implements RenderFilter {
+   private static final String LOG_CLASS = 
+         FilterTests_RenderFilter_ApiRenderFilter_filter.class.getName();
+   private final Logger LOGGER = Logger.getLogger(LOG_CLASS);
+
+   private FilterConfig filterConfig;
+
+   @Override
+   public void init(FilterConfig filterConfig) throws PortletException {
+      this.filterConfig = filterConfig;
+   }
+
+   @Override
+   public void destroy() {
+   }
+
+   @Override
+   public void doFilter(RenderRequest portletReq, RenderResponse portletResp,
+         FilterChain chain) throws IOException, PortletException {
+      LOGGER.entering(LOG_CLASS, "doFilter");
+
+      PrintWriter writer = portletResp.getWriter();
+
+      // first execute the chain
+
+      chain.doFilter(portletReq, portletResp);
+
+      // now do the tests and write output
+
+      JSR286ApiTestCaseDetails tcd = new JSR286ApiTestCaseDetails();
+
+      // Create result objects for the tests
+
+      /* TestCase: V2FilterTests_RenderFilter_ApiRenderFilter_canBeConfigured1 */
+      /* Details: "An RenderFilter can be configured in the portlet           */
+      /* descriptor"                                                          */
+      TestResult tr0 = tcd.getTestResultFailed(V2FILTERTESTS_RENDERFILTER_APIRENDERFILTER_CANBECONFIGURED1);
+      /* TODO: implement test */
+      tr0.appendTcDetail("Not implemented.");
+      tr0.writeTo(writer);
+
+      /* TestCase: V2FilterTests_RenderFilter_ApiRenderFilter_canBeConfigured2 */
+      /* Details: "Multiple RenderFilter classes can be configured in the     */
+      /* portlet descriptor"                                                  */
+      TestResult tr1 = tcd.getTestResultFailed(V2FILTERTESTS_RENDERFILTER_APIRENDERFILTER_CANBECONFIGURED2);
+      /* TODO: implement test */
+      tr1.appendTcDetail("Not implemented.");
+      tr1.writeTo(writer);
+
+      /* TestCase: V2FilterTests_RenderFilter_ApiRenderFilter_doFilterIsCalled */
+      /* Details: "The doFilter(RenderRequest, RenderResponse,                */
+      /* FilterChain): method is called before the processRender method for   */
+      /* the portlet"                                                         */
+      TestResult tr2 = tcd.getTestResultFailed(V2FILTERTESTS_RENDERFILTER_APIRENDERFILTER_DOFILTERISCALLED);
+      /* TODO: implement test */
+      tr2.appendTcDetail("Not implemented.");
+      tr2.writeTo(writer);
+
+      /* TestCase: V2FilterTests_RenderFilter_ApiRenderFilter_doFilterProcessRender1 */
+      /* Details: "After the doFilter(RenderRequest, RenderResponse,          */
+      /* FilterChain): method has sucessfully completed and invokes the       */
+      /* next filter, the processRenderMethod is called"                      */
+      TestResult tr3 = tcd.getTestResultFailed(V2FILTERTESTS_RENDERFILTER_APIRENDERFILTER_DOFILTERPROCESSRENDER1);
+      /* TODO: implement test */
+      tr3.appendTcDetail("Not implemented.");
+      tr3.writeTo(writer);
+
+      /* TestCase: V2FilterTests_RenderFilter_ApiRenderFilter_doFilterProcessRender2 */
+      /* Details: "After the doFilter(RenderRequest, RenderResponse,          */
+      /* FilterChain): method has sucessfully completed and invokes the       */
+      /* next filter, the next filter in the chain is called if multiple      */
+      /* filters are defined"                                                 */
+      TestResult tr4 = tcd.getTestResultFailed(V2FILTERTESTS_RENDERFILTER_APIRENDERFILTER_DOFILTERPROCESSRENDER2);
+      /* TODO: implement test */
+      tr4.appendTcDetail("Not implemented.");
+      tr4.writeTo(writer);
+
+      /* TestCase: V2FilterTests_RenderFilter_ApiRenderFilter_doFilterBlock   */
+      /* Details: "If the doFilter(RenderRequest, RenderResponse,             */
+      /* FilterChain): method does not invoke the next filter,                */
+      /* processRender is not called"                                         */
+      TestResult tr5 = tcd.getTestResultFailed(V2FILTERTESTS_RENDERFILTER_APIRENDERFILTER_DOFILTERBLOCK);
+      /* TODO: implement test */
+      tr5.appendTcDetail("Not implemented.");
+      tr5.writeTo(writer);
+
+      /* TestCase: V2FilterTests_RenderFilter_ApiRenderFilter_doFilterException1 */
+      /* Details: "If the doFilter(RenderRequest, RenderResponse,             */
+      /* FilterChain): method throws an UnavailableException, processRender   */
+      /* is not called"                                                       */
+      TestResult tr6 = tcd.getTestResultFailed(V2FILTERTESTS_RENDERFILTER_APIRENDERFILTER_DOFILTEREXCEPTION1);
+      /* TODO: implement test */
+      tr6.appendTcDetail("Not implemented.");
+      tr6.writeTo(writer);
+
+      /* TestCase: V2FilterTests_RenderFilter_ApiRenderFilter_doFilterException2 */
+      /* Details: "If the doFilter(RenderRequest, RenderResponse,             */
+      /* FilterChain): method throws an UnavailableException, no further      */
+      /* filter is called"                                                    */
+      TestResult tr7 = tcd.getTestResultFailed(V2FILTERTESTS_RENDERFILTER_APIRENDERFILTER_DOFILTEREXCEPTION2);
+      /* TODO: implement test */
+      tr7.appendTcDetail("Not implemented.");
+      tr7.writeTo(writer);
+
+      /* TestCase: V2FilterTests_RenderFilter_ApiRenderFilter_doFilterExamine */
+      /* Details: "Method doFilter(RenderRequest, RenderResponse,             */
+      /* FilterChain): After the next filter has been successfully invoked,   */
+      /* the RenderResponse may be examined"                                  */
+      TestResult tr8 = tcd.getTestResultFailed(V2FILTERTESTS_RENDERFILTER_APIRENDERFILTER_DOFILTEREXAMINE);
+      /* TODO: implement test */
+      tr8.appendTcDetail("Not implemented.");
+      tr8.writeTo(writer);
+
+
+   }
+}

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/db1071e7/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/filters/FilterTests_ResourceFilter_ApiResourceFilter_filter.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/filters/FilterTests_ResourceFilter_ApiResourceFilter_filter.java b/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/filters/FilterTests_ResourceFilter_ApiResourceFilter_filter.java
new file mode 100644
index 0000000..ecd6327
--- /dev/null
+++ b/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/filters/FilterTests_ResourceFilter_ApiResourceFilter_filter.java
@@ -0,0 +1,157 @@
+/*  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.filters;
+
+import java.io.*;
+import java.util.*;
+import java.util.logging.*;
+import static java.util.logging.Logger.*;
+import javax.portlet.*;
+import javax.portlet.filter.*;
+import javax.portlet.tck.beans.*;
+import javax.portlet.tck.constants.*;
+import static javax.portlet.tck.constants.Constants.*;
+import static javax.portlet.tck.beans.JSR286ApiTestCaseDetails.*;
+import static javax.portlet.PortletSession.*;
+import static javax.portlet.ResourceURL.*;
+
+/**
+ * Filter for JSR 362 request dispatcher testing.
+ * Used by portlet: FilterTests_ResourceFilter_ApiResourceFilter
+ *
+ * @author nick
+ *
+ */
+public class FilterTests_ResourceFilter_ApiResourceFilter_filter implements ResourceFilter {
+   private static final String LOG_CLASS = 
+         FilterTests_ResourceFilter_ApiResourceFilter_filter.class.getName();
+   private final Logger LOGGER = Logger.getLogger(LOG_CLASS);
+
+   private FilterConfig filterConfig;
+
+   @Override
+   public void init(FilterConfig filterConfig) throws PortletException {
+      this.filterConfig = filterConfig;
+   }
+
+   @Override
+   public void destroy() {
+   }
+
+   @Override
+   public void doFilter(ResourceRequest portletReq, ResourceResponse portletResp,
+         FilterChain chain) throws IOException, PortletException {
+      LOGGER.entering(LOG_CLASS, "doFilter");
+
+      PrintWriter writer = portletResp.getWriter();
+
+      // first execute the chain
+
+      chain.doFilter(portletReq, portletResp);
+
+      // now do the tests and write output
+
+      JSR286ApiTestCaseDetails tcd = new JSR286ApiTestCaseDetails();
+
+      // Create result objects for the tests
+
+      /* TestCase: V2FilterTests_ResourceFilter_ApiResourceFilter_canBeConfigured1 */
+      /* Details: "An ResourceFilter can be configured in the portlet         */
+      /* descriptor"                                                          */
+      TestResult tr0 = tcd.getTestResultFailed(V2FILTERTESTS_RESOURCEFILTER_APIRESOURCEFILTER_CANBECONFIGURED1);
+      /* TODO: implement test */
+      tr0.appendTcDetail("Not implemented.");
+      tr0.writeTo(writer);
+
+      /* TestCase: V2FilterTests_ResourceFilter_ApiResourceFilter_canBeConfigured2 */
+      /* Details: "Multiple ResourceFilter classes can be configured in the   */
+      /* portlet descriptor"                                                  */
+      TestResult tr1 = tcd.getTestResultFailed(V2FILTERTESTS_RESOURCEFILTER_APIRESOURCEFILTER_CANBECONFIGURED2);
+      /* TODO: implement test */
+      tr1.appendTcDetail("Not implemented.");
+      tr1.writeTo(writer);
+
+      /* TestCase: V2FilterTests_ResourceFilter_ApiResourceFilter_doFilterIsCalled */
+      /* Details: "The doFilter(ResourceRequest, ResourceResponse,            */
+      /* FilterChain): method is called before the processResource method     */
+      /* for the portlet"                                                     */
+      TestResult tr2 = tcd.getTestResultFailed(V2FILTERTESTS_RESOURCEFILTER_APIRESOURCEFILTER_DOFILTERISCALLED);
+      /* TODO: implement test */
+      tr2.appendTcDetail("Not implemented.");
+      tr2.writeTo(writer);
+
+      /* TestCase: V2FilterTests_ResourceFilter_ApiResourceFilter_doFilterProcessResource1 */
+      /* Details: "After the doFilter(ResourceRequest, ResourceResponse,      */
+      /* FilterChain): method has sucessfully completed and invokes the       */
+      /* next filter, the processResourceMethod is called"                    */
+      TestResult tr3 = tcd.getTestResultFailed(V2FILTERTESTS_RESOURCEFILTER_APIRESOURCEFILTER_DOFILTERPROCESSRESOURCE1);
+      /* TODO: implement test */
+      tr3.appendTcDetail("Not implemented.");
+      tr3.writeTo(writer);
+
+      /* TestCase: V2FilterTests_ResourceFilter_ApiResourceFilter_doFilterProcessResource2 */
+      /* Details: "After the doFilter(ResourceRequest, ResourceResponse,      */
+      /* FilterChain): method has sucessfully completed and invokes the       */
+      /* next filter, the next filter in the chain is called if multiple      */
+      /* filters are defined"                                                 */
+      TestResult tr4 = tcd.getTestResultFailed(V2FILTERTESTS_RESOURCEFILTER_APIRESOURCEFILTER_DOFILTERPROCESSRESOURCE2);
+      /* TODO: implement test */
+      tr4.appendTcDetail("Not implemented.");
+      tr4.writeTo(writer);
+
+      /* TestCase: V2FilterTests_ResourceFilter_ApiResourceFilter_doFilterBlock */
+      /* Details: "If the doFilter(ResourceRequest, ResourceResponse,         */
+      /* FilterChain): method does not invoke the next filter,                */
+      /* processResource is not called"                                       */
+      TestResult tr5 = tcd.getTestResultFailed(V2FILTERTESTS_RESOURCEFILTER_APIRESOURCEFILTER_DOFILTERBLOCK);
+      /* TODO: implement test */
+      tr5.appendTcDetail("Not implemented.");
+      tr5.writeTo(writer);
+
+      /* TestCase: V2FilterTests_ResourceFilter_ApiResourceFilter_doFilterException1 */
+      /* Details: "If the doFilter(ResourceRequest, ResourceResponse,         */
+      /* FilterChain): method throws an UnavailableException,                 */
+      /* processResource is not called"                                       */
+      TestResult tr6 = tcd.getTestResultFailed(V2FILTERTESTS_RESOURCEFILTER_APIRESOURCEFILTER_DOFILTEREXCEPTION1);
+      /* TODO: implement test */
+      tr6.appendTcDetail("Not implemented.");
+      tr6.writeTo(writer);
+
+      /* TestCase: V2FilterTests_ResourceFilter_ApiResourceFilter_doFilterException2 */
+      /* Details: "If the doFilter(ResourceRequest, ResourceResponse,         */
+      /* FilterChain): method throws an UnavailableException, no further      */
+      /* filter is called"                                                    */
+      TestResult tr7 = tcd.getTestResultFailed(V2FILTERTESTS_RESOURCEFILTER_APIRESOURCEFILTER_DOFILTEREXCEPTION2);
+      /* TODO: implement test */
+      tr7.appendTcDetail("Not implemented.");
+      tr7.writeTo(writer);
+
+      /* TestCase: V2FilterTests_ResourceFilter_ApiResourceFilter_doFilterExamine */
+      /* Details: "Method doFilter(ResourceRequest, ResourceResponse,         */
+      /* FilterChain): After the next filter has been successfully invoked,   */
+      /* the ResourceResponse may be examined"                                */
+      TestResult tr8 = tcd.getTestResultFailed(V2FILTERTESTS_RESOURCEFILTER_APIRESOURCEFILTER_DOFILTEREXAMINE);
+      /* TODO: implement test */
+      tr8.appendTcDetail("Not implemented.");
+      tr8.writeTo(writer);
+
+
+   }
+}

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/db1071e7/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/portlets/FilterTests_ActionFilter_ActionFilter.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/portlets/FilterTests_ActionFilter_ActionFilter.java b/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/portlets/FilterTests_ActionFilter_ActionFilter.java
deleted file mode 100644
index 73dbb76..0000000
--- a/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/portlets/FilterTests_ActionFilter_ActionFilter.java
+++ /dev/null
@@ -1,293 +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.*;
-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.JSR286ApiTestCaseDetails.*;
-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 FilterTests_ActionFilter_ActionFilter_event
- *
- */
-public class FilterTests_ActionFilter_ActionFilter implements Portlet, ResourceServingPortlet {
-   private static final String LOG_CLASS = 
-         FilterTests_ActionFilter_ActionFilter.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();
-
-      JSR286ApiTestCaseDetails tcd = new JSR286ApiTestCaseDetails();
-
-      // Create result objects for the tests
-
-      /* TestCase: V2FilterTests_ActionFilter_ActionFilter_canBeConfigured1   */
-      /* Details: "An ActionFilter can be configured in the portlet           */
-      /* descriptor"                                                          */
-      TestResult tr0 = tcd.getTestResultFailed(V2FILTERTESTS_ACTIONFILTER_ACTIONFILTER_CANBECONFIGURED1);
-      /* TODO: implement test */
-      tr0.appendTcDetail("Not implemented.");
-      tr0.writeTo(writer);
-
-      /* TestCase: V2FilterTests_ActionFilter_ActionFilter_canBeConfigured2   */
-      /* Details: "Multiple ActionFilter classes can be configured in the     */
-      /* portlet descriptor"                                                  */
-      TestResult tr1 = tcd.getTestResultFailed(V2FILTERTESTS_ACTIONFILTER_ACTIONFILTER_CANBECONFIGURED2);
-      /* TODO: implement test */
-      tr1.appendTcDetail("Not implemented.");
-      tr1.writeTo(writer);
-
-      /* TestCase: V2FilterTests_ActionFilter_ActionFilter_doFilterIsCalled   */
-      /* Details: "The doFilter(ActionRequest, ActionResponse,                */
-      /* FilterChain): method is called before the processAction method for   */
-      /* the portlet"                                                         */
-      TestResult tr2 = tcd.getTestResultFailed(V2FILTERTESTS_ACTIONFILTER_ACTIONFILTER_DOFILTERISCALLED);
-      /* TODO: implement test */
-      tr2.appendTcDetail("Not implemented.");
-      tr2.writeTo(writer);
-
-      /* TestCase: V2FilterTests_ActionFilter_ActionFilter_doFilterProcessAction1 */
-      /* Details: "After the doFilter(ActionRequest, ActionResponse,          */
-      /* FilterChain): method has sucessfully completed and invokes the       */
-      /* next filter, the processActionMethod is called"                      */
-      TestResult tr3 = tcd.getTestResultFailed(V2FILTERTESTS_ACTIONFILTER_ACTIONFILTER_DOFILTERPROCESSACTION1);
-      /* TODO: implement test */
-      tr3.appendTcDetail("Not implemented.");
-      tr3.writeTo(writer);
-
-      /* TestCase: V2FilterTests_ActionFilter_ActionFilter_doFilterProcessAction2 */
-      /* Details: "After the doFilter(ActionRequest, ActionResponse,          */
-      /* FilterChain): method has sucessfully completed and invokes the       */
-      /* next filter, the next filter in the chain is called if multiple      */
-      /* filters are defined"                                                 */
-      TestResult tr4 = tcd.getTestResultFailed(V2FILTERTESTS_ACTIONFILTER_ACTIONFILTER_DOFILTERPROCESSACTION2);
-      /* TODO: implement test */
-      tr4.appendTcDetail("Not implemented.");
-      tr4.writeTo(writer);
-
-      /* TestCase: V2FilterTests_ActionFilter_ActionFilter_doFilterBlock      */
-      /* Details: "If the doFilter(ActionRequest, ActionResponse,             */
-      /* FilterChain): method does not invoke the next filter,                */
-      /* processAction is not called"                                         */
-      TestResult tr5 = tcd.getTestResultFailed(V2FILTERTESTS_ACTIONFILTER_ACTIONFILTER_DOFILTERBLOCK);
-      /* TODO: implement test */
-      tr5.appendTcDetail("Not implemented.");
-      tr5.writeTo(writer);
-
-      /* TestCase: V2FilterTests_ActionFilter_ActionFilter_doFilterException1 */
-      /* Details: "If the doFilter(ActionRequest, ActionResponse,             */
-      /* FilterChain): method throws an UnavailableException, processAction   */
-      /* is not called"                                                       */
-      TestResult tr6 = tcd.getTestResultFailed(V2FILTERTESTS_ACTIONFILTER_ACTIONFILTER_DOFILTEREXCEPTION1);
-      /* TODO: implement test */
-      tr6.appendTcDetail("Not implemented.");
-      tr6.writeTo(writer);
-
-      /* TestCase: V2FilterTests_ActionFilter_ActionFilter_doFilterException2 */
-      /* Details: "If the doFilter(ActionRequest, ActionResponse,             */
-      /* FilterChain): method throws an UnavailableException, no further      */
-      /* filter is called"                                                    */
-      TestResult tr7 = tcd.getTestResultFailed(V2FILTERTESTS_ACTIONFILTER_ACTIONFILTER_DOFILTEREXCEPTION2);
-      /* TODO: implement test */
-      tr7.appendTcDetail("Not implemented.");
-      tr7.writeTo(writer);
-
-      /* TestCase: V2FilterTests_ActionFilter_ActionFilter_doFilterExamine    */
-      /* Details: "Method doFilter(ActionRequest, ActionResponse,             */
-      /* FilterChain): After the next filter has been successfully invoked,   */
-      /* the ActionResponse may be examined"                                  */
-      TestResult tr8 = tcd.getTestResultFailed(V2FILTERTESTS_ACTIONFILTER_ACTIONFILTER_DOFILTEREXAMINE);
-      /* TODO: implement test */
-      tr8.appendTcDetail("Not implemented.");
-      tr8.writeTo(writer);
-
-      portletReq.getPortletSession().setAttribute(
-                   Constants.RESULT_ATTR_PREFIX + "FilterTests_ActionFilter_ActionFilter",
-                   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 + "FilterTests_ActionFilter_ActionFilter", APPLICATION_SCOPE);
-      if (msg != null) {
-         writer.write("<p>" + msg + "</p><br/>\n");
-         ps.removeAttribute(RESULT_ATTR_PREFIX + "FilterTests_ActionFilter_ActionFilter", APPLICATION_SCOPE);
-      }
-
-      /* TestCase: V2FilterTests_ActionFilter_ActionFilter_canBeConfigured1   */
-      /* Details: "An ActionFilter can be configured in the portlet           */
-      /* descriptor"                                                          */
-      {
-         PortletURL aurl = portletResp.createActionURL();
-         aurl.setParameters(portletReq.getPrivateParameterMap());
-         TestButton tb = new TestButton("V2FilterTests_ActionFilter_ActionFilter_canBeConfigured1", aurl);
-         tb.writeTo(writer);
-      }
-
-      /* TestCase: V2FilterTests_ActionFilter_ActionFilter_canBeConfigured2   */
-      /* Details: "Multiple ActionFilter classes can be configured in the     */
-      /* portlet descriptor"                                                  */
-      {
-         PortletURL aurl = portletResp.createActionURL();
-         aurl.setParameters(portletReq.getPrivateParameterMap());
-         TestButton tb = new TestButton("V2FilterTests_ActionFilter_ActionFilter_canBeConfigured2", aurl);
-         tb.writeTo(writer);
-      }
-
-      /* TestCase: V2FilterTests_ActionFilter_ActionFilter_doFilterIsCalled   */
-      /* Details: "The doFilter(ActionRequest, ActionResponse,                */
-      /* FilterChain): method is called before the processAction method for   */
-      /* the portlet"                                                         */
-      {
-         PortletURL aurl = portletResp.createActionURL();
-         aurl.setParameters(portletReq.getPrivateParameterMap());
-         TestButton tb = new TestButton("V2FilterTests_ActionFilter_ActionFilter_doFilterIsCalled", aurl);
-         tb.writeTo(writer);
-      }
-
-      /* TestCase: V2FilterTests_ActionFilter_ActionFilter_doFilterProcessAction1 */
-      /* Details: "After the doFilter(ActionRequest, ActionResponse,          */
-      /* FilterChain): method has sucessfully completed and invokes the       */
-      /* next filter, the processActionMethod is called"                      */
-      {
-         PortletURL aurl = portletResp.createActionURL();
-         aurl.setParameters(portletReq.getPrivateParameterMap());
-         TestButton tb = new TestButton("V2FilterTests_ActionFilter_ActionFilter_doFilterProcessAction1", aurl);
-         tb.writeTo(writer);
-      }
-
-      /* TestCase: V2FilterTests_ActionFilter_ActionFilter_doFilterProcessAction2 */
-      /* Details: "After the doFilter(ActionRequest, ActionResponse,          */
-      /* FilterChain): method has sucessfully completed and invokes the       */
-      /* next filter, the next filter in the chain is called if multiple      */
-      /* filters are defined"                                                 */
-      {
-         PortletURL aurl = portletResp.createActionURL();
-         aurl.setParameters(portletReq.getPrivateParameterMap());
-         TestButton tb = new TestButton("V2FilterTests_ActionFilter_ActionFilter_doFilterProcessAction2", aurl);
-         tb.writeTo(writer);
-      }
-
-      /* TestCase: V2FilterTests_ActionFilter_ActionFilter_doFilterBlock      */
-      /* Details: "If the doFilter(ActionRequest, ActionResponse,             */
-      /* FilterChain): method does not invoke the next filter,                */
-      /* processAction is not called"                                         */
-      {
-         PortletURL aurl = portletResp.createActionURL();
-         aurl.setParameters(portletReq.getPrivateParameterMap());
-         TestButton tb = new TestButton("V2FilterTests_ActionFilter_ActionFilter_doFilterBlock", aurl);
-         tb.writeTo(writer);
-      }
-
-      /* TestCase: V2FilterTests_ActionFilter_ActionFilter_doFilterException1 */
-      /* Details: "If the doFilter(ActionRequest, ActionResponse,             */
-      /* FilterChain): method throws an UnavailableException, processAction   */
-      /* is not called"                                                       */
-      {
-         PortletURL aurl = portletResp.createActionURL();
-         aurl.setParameters(portletReq.getPrivateParameterMap());
-         TestButton tb = new TestButton("V2FilterTests_ActionFilter_ActionFilter_doFilterException1", aurl);
-         tb.writeTo(writer);
-      }
-
-      /* TestCase: V2FilterTests_ActionFilter_ActionFilter_doFilterException2 */
-      /* Details: "If the doFilter(ActionRequest, ActionResponse,             */
-      /* FilterChain): method throws an UnavailableException, no further      */
-      /* filter is called"                                                    */
-      {
-         PortletURL aurl = portletResp.createActionURL();
-         aurl.setParameters(portletReq.getPrivateParameterMap());
-         TestButton tb = new TestButton("V2FilterTests_ActionFilter_ActionFilter_doFilterException2", aurl);
-         tb.writeTo(writer);
-      }
-
-      /* TestCase: V2FilterTests_ActionFilter_ActionFilter_doFilterExamine    */
-      /* Details: "Method doFilter(ActionRequest, ActionResponse,             */
-      /* FilterChain): After the next filter has been successfully invoked,   */
-      /* the ActionResponse may be examined"                                  */
-      {
-         PortletURL aurl = portletResp.createActionURL();
-         aurl.setParameters(portletReq.getPrivateParameterMap());
-         TestButton tb = new TestButton("V2FilterTests_ActionFilter_ActionFilter_doFilterExamine", aurl);
-         tb.writeTo(writer);
-      }
-
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/db1071e7/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/portlets/FilterTests_ActionFilter_ApiActionFilter.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/portlets/FilterTests_ActionFilter_ApiActionFilter.java b/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/portlets/FilterTests_ActionFilter_ApiActionFilter.java
new file mode 100644
index 0000000..c38e899
--- /dev/null
+++ b/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/portlets/FilterTests_ActionFilter_ApiActionFilter.java
@@ -0,0 +1,206 @@
+/*  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.JSR286ApiTestCaseDetails.*;
+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 FilterTests_ActionFilter_ApiActionFilter_event
+ *
+ */
+public class FilterTests_ActionFilter_ApiActionFilter implements Portlet, ResourceServingPortlet {
+   private static final String LOG_CLASS = 
+         FilterTests_ActionFilter_ApiActionFilter.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();
+
+      PortletSession ps = portletReq.getPortletSession();
+      String msg = (String) ps.getAttribute(RESULT_ATTR_PREFIX + "FilterTests_ActionFilter_ApiActionFilter", APPLICATION_SCOPE);
+      if (msg != null) {
+         writer.write("<p>" + msg + "</p><br/>\n");
+         ps.removeAttribute(RESULT_ATTR_PREFIX + "FilterTests_ActionFilter_ApiActionFilter", APPLICATION_SCOPE);
+      }
+
+      /* TestCase: V2FilterTests_ActionFilter_ApiActionFilter_canBeConfigured1 */
+      /* Details: "An ActionFilter can be configured in the portlet           */
+      /* descriptor"                                                          */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2FilterTests_ActionFilter_ApiActionFilter_canBeConfigured1", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2FilterTests_ActionFilter_ApiActionFilter_canBeConfigured2 */
+      /* Details: "Multiple ActionFilter classes can be configured in the     */
+      /* portlet descriptor"                                                  */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2FilterTests_ActionFilter_ApiActionFilter_canBeConfigured2", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2FilterTests_ActionFilter_ApiActionFilter_doFilterIsCalled */
+      /* Details: "The doFilter(ActionRequest, ActionResponse,                */
+      /* FilterChain): method is called before the processAction method for   */
+      /* the portlet"                                                         */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2FilterTests_ActionFilter_ApiActionFilter_doFilterIsCalled", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2FilterTests_ActionFilter_ApiActionFilter_doFilterProcessAction1 */
+      /* Details: "After the doFilter(ActionRequest, ActionResponse,          */
+      /* FilterChain): method has sucessfully completed and invokes the       */
+      /* next filter, the processActionMethod is called"                      */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2FilterTests_ActionFilter_ApiActionFilter_doFilterProcessAction1", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2FilterTests_ActionFilter_ApiActionFilter_doFilterProcessAction2 */
+      /* Details: "After the doFilter(ActionRequest, ActionResponse,          */
+      /* FilterChain): method has sucessfully completed and invokes the       */
+      /* next filter, the next filter in the chain is called if multiple      */
+      /* filters are defined"                                                 */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2FilterTests_ActionFilter_ApiActionFilter_doFilterProcessAction2", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2FilterTests_ActionFilter_ApiActionFilter_doFilterBlock   */
+      /* Details: "If the doFilter(ActionRequest, ActionResponse,             */
+      /* FilterChain): method does not invoke the next filter,                */
+      /* processAction is not called"                                         */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2FilterTests_ActionFilter_ApiActionFilter_doFilterBlock", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2FilterTests_ActionFilter_ApiActionFilter_doFilterException1 */
+      /* Details: "If the doFilter(ActionRequest, ActionResponse,             */
+      /* FilterChain): method throws an UnavailableException, processAction   */
+      /* is not called"                                                       */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2FilterTests_ActionFilter_ApiActionFilter_doFilterException1", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2FilterTests_ActionFilter_ApiActionFilter_doFilterException2 */
+      /* Details: "If the doFilter(ActionRequest, ActionResponse,             */
+      /* FilterChain): method throws an UnavailableException, no further      */
+      /* filter is called"                                                    */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2FilterTests_ActionFilter_ApiActionFilter_doFilterException2", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2FilterTests_ActionFilter_ApiActionFilter_doFilterExamine */
+      /* Details: "Method doFilter(ActionRequest, ActionResponse,             */
+      /* FilterChain): After the next filter has been successfully invoked,   */
+      /* the ActionResponse may be examined"                                  */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2FilterTests_ActionFilter_ApiActionFilter_doFilterExamine", aurl);
+         tb.writeTo(writer);
+      }
+
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/db1071e7/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/portlets/FilterTests_EventFilter_ApiEventFilter.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/portlets/FilterTests_EventFilter_ApiEventFilter.java b/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/portlets/FilterTests_EventFilter_ApiEventFilter.java
new file mode 100644
index 0000000..5fc34b9
--- /dev/null
+++ b/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/portlets/FilterTests_EventFilter_ApiEventFilter.java
@@ -0,0 +1,201 @@
+/*  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.JSR286ApiTestCaseDetails.*;
+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 FilterTests_EventFilter_ApiEventFilter_event
+ *
+ */
+public class FilterTests_EventFilter_ApiEventFilter implements Portlet, ResourceServingPortlet {
+   private static final String LOG_CLASS = 
+         FilterTests_EventFilter_ApiEventFilter.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,
+             "FilterTests_EventFilter_ApiEventFilter");
+      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: V2FilterTests_EventFilter_ApiEventFilter_canBeConfigured1  */
+      /* Details: "An EventFilter can be configured in the portlet            */
+      /* descriptor"                                                          */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2FilterTests_EventFilter_ApiEventFilter_canBeConfigured1", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2FilterTests_EventFilter_ApiEventFilter_canBeConfigured2  */
+      /* Details: "Multiple EventFilter classes can be configured in the      */
+      /* portlet descriptor"                                                  */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2FilterTests_EventFilter_ApiEventFilter_canBeConfigured2", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2FilterTests_EventFilter_ApiEventFilter_doFilterIsCalled  */
+      /* Details: "The doFilter(EventRequest, EventResponse, FilterChain):    */
+      /* method is called before the processEvent method for the portlet"     */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2FilterTests_EventFilter_ApiEventFilter_doFilterIsCalled", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2FilterTests_EventFilter_ApiEventFilter_doFilterProcessEvent1 */
+      /* Details: "After the doFilter(EventRequest, EventResponse,            */
+      /* FilterChain): method has sucessfully completed and invokes the       */
+      /* next filter, the processEventMethod is called"                       */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2FilterTests_EventFilter_ApiEventFilter_doFilterProcessEvent1", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2FilterTests_EventFilter_ApiEventFilter_doFilterProcessEvent2 */
+      /* Details: "After the doFilter(EventRequest, EventResponse,            */
+      /* FilterChain): method has sucessfully completed and invokes the       */
+      /* next filter, the next filter in the chain is called if multiple      */
+      /* filters are defined"                                                 */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2FilterTests_EventFilter_ApiEventFilter_doFilterProcessEvent2", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2FilterTests_EventFilter_ApiEventFilter_doFilterBlock     */
+      /* Details: "If the doFilter(EventRequest, EventResponse,               */
+      /* FilterChain): method does not invoke the next filter, processEvent   */
+      /* is not called"                                                       */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2FilterTests_EventFilter_ApiEventFilter_doFilterBlock", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2FilterTests_EventFilter_ApiEventFilter_doFilterException1 */
+      /* Details: "If the doFilter(EventRequest, EventResponse,               */
+      /* FilterChain): method throws an UnavailableException, processEvent    */
+      /* is not called"                                                       */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2FilterTests_EventFilter_ApiEventFilter_doFilterException1", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2FilterTests_EventFilter_ApiEventFilter_doFilterException2 */
+      /* Details: "If the doFilter(EventRequest, EventResponse,               */
+      /* FilterChain): method throws an UnavailableException, no further      */
+      /* filter is called"                                                    */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2FilterTests_EventFilter_ApiEventFilter_doFilterException2", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2FilterTests_EventFilter_ApiEventFilter_doFilterExamine   */
+      /* Details: "Method doFilter(EventRequest, EventResponse,               */
+      /* FilterChain): After the next filter has been successfully invoked,   */
+      /* the EventResponse may be examined"                                   */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2FilterTests_EventFilter_ApiEventFilter_doFilterExamine", aurl);
+         tb.writeTo(writer);
+      }
+
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/db1071e7/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/portlets/FilterTests_EventFilter_ApiEventFilter_event.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/portlets/FilterTests_EventFilter_ApiEventFilter_event.java b/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/portlets/FilterTests_EventFilter_ApiEventFilter_event.java
new file mode 100644
index 0000000..9dad775
--- /dev/null
+++ b/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/portlets/FilterTests_EventFilter_ApiEventFilter_event.java
@@ -0,0 +1,102 @@
+/*  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.JSR286ApiTestCaseDetails.*;
+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 FilterTests_EventFilter_ApiEventFilter_event implements Portlet, EventPortlet, ResourceServingPortlet {
+   private static final String LOG_CLASS = 
+         FilterTests_EventFilter_ApiEventFilter_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();
+
+
+   }
+
+   @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>FilterTests_EventFilter_ApiEventFilter_event</p>\n");
+
+      String msg = (String) portletReq.getPortletSession()
+            .getAttribute(RESULT_ATTR_PREFIX + "FilterTests_EventFilter_ApiEventFilter", APPLICATION_SCOPE);
+      msg = (msg==null) ? "Not ready. click test case link." : msg;
+      writer.write("<p>" + msg + "</p>\n");
+
+   }
+
+}