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/07/27 09:05:55 UTC

[19/24] Added the JSR 362 TCK to the Pluto project.

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd830576/portlet-tck_3.0/V2ExceptionTests/src/main/java/javax/portlet/tck/ExceptionTests/portlets/V2ExceptionTests_SIG_UnavailableException.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2ExceptionTests/src/main/java/javax/portlet/tck/ExceptionTests/portlets/V2ExceptionTests_SIG_UnavailableException.java b/portlet-tck_3.0/V2ExceptionTests/src/main/java/javax/portlet/tck/ExceptionTests/portlets/V2ExceptionTests_SIG_UnavailableException.java
new file mode 100644
index 0000000..700d292
--- /dev/null
+++ b/portlet-tck_3.0/V2ExceptionTests/src/main/java/javax/portlet/tck/ExceptionTests/portlets/V2ExceptionTests_SIG_UnavailableException.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.ExceptionTests.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.JSR286ApiTestCaseDetails;
+import static javax.portlet.tck.beans.JSR286ApiTestCaseDetails.*;
+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 V2ExceptionTests_SIG_UnavailableException implements Portlet {
+   private static final String LOG_CLASS = 
+         V2ExceptionTests_SIG_UnavailableException.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();
+      JSR286ApiTestCaseDetails tcd = new JSR286ApiTestCaseDetails();
+      ClassChecker cc = new ClassChecker(UnavailableException.class);
+
+      // Create result objects for the tests
+
+      /* TestCase: UnavailableException_SIG_extendsPortletException */
+      /* Details: "Extends PortletException " */
+      TestResult tr0 = tcd.getTestResultFailed(UNAVAILABLEEXCEPTION_SIG_EXTENDSPORTLETEXCEPTION);
+      {
+         tr0.setTcSuccess(cc.hasSuperclass(PortletException.class));
+      }
+
+      /* TestCase: UnavailableException_SIG_constructor */
+      /* Details: "Provides constructor UnavailableException(String) " */
+      TestResult tr1 = tcd.getTestResultFailed(UNAVAILABLEEXCEPTION_SIG_CONSTRUCTOR);
+      {
+         Class<?>[] parms = {String.class};
+         tr1.setTcSuccess(cc.hasConstructor(parms));
+      }
+
+      /* TestCase: UnavailableException_SIG_constructorA */
+      /* Details: "Provides constructor UnavailableException(String, int) " */
+      TestResult tr2 = tcd.getTestResultFailed(UNAVAILABLEEXCEPTION_SIG_CONSTRUCTORA);
+      {
+         Class<?>[] parms = {String.class, int.class};
+         tr2.setTcSuccess(cc.hasConstructor(parms));
+      }
+
+      /* TestCase: UnavailableException_SIG_hasIsPermanent */
+      /* Details: "Has a isPermanent()  method " */
+      TestResult tr3 = tcd.getTestResultFailed(UNAVAILABLEEXCEPTION_SIG_HASISPERMANENT);
+      {
+         String name = "isPermanent";
+         Class<?>[] exceptions = null;
+         Class<?>[] parms = null;
+         tr3.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      }
+
+      /* TestCase: UnavailableException_SIG_hasIsPermanentReturns */
+      /* Details: "Method isPermanent() returns boolean " */
+      TestResult tr4 = tcd.getTestResultFailed(UNAVAILABLEEXCEPTION_SIG_HASISPERMANENTRETURNS);
+      {
+         String name = "isPermanent";
+         Class<?> retType = boolean.class;
+         Class<?>[] parms = null;
+         tr4.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      }
+
+      /* TestCase: UnavailableException_SIG_hasGetUnavailableSeconds */
+      /* Details: "Has a getUnavailableSeconds()  method " */
+      TestResult tr5 = tcd.getTestResultFailed(UNAVAILABLEEXCEPTION_SIG_HASGETUNAVAILABLESECONDS);
+      {
+         String name = "getUnavailableSeconds";
+         Class<?>[] exceptions = null;
+         Class<?>[] parms = null;
+         tr5.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      }
+
+      /* TestCase: UnavailableException_SIG_hasGetUnavailableSecondsReturns */
+      /* Details: "Method getUnavailableSeconds() returns int " */
+      TestResult tr6 = tcd.getTestResultFailed(UNAVAILABLEEXCEPTION_SIG_HASGETUNAVAILABLESECONDSRETURNS);
+      {
+         String name = "getUnavailableSeconds";
+         Class<?> retType = int.class;
+         Class<?>[] parms = null;
+         tr6.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      }
+
+
+
+      // 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);
+
+
+   }
+
+}
+

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd830576/portlet-tck_3.0/V2ExceptionTests/src/main/java/javax/portlet/tck/ExceptionTests/portlets/V2ExceptionTests_SIG_ValidatorException.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2ExceptionTests/src/main/java/javax/portlet/tck/ExceptionTests/portlets/V2ExceptionTests_SIG_ValidatorException.java b/portlet-tck_3.0/V2ExceptionTests/src/main/java/javax/portlet/tck/ExceptionTests/portlets/V2ExceptionTests_SIG_ValidatorException.java
new file mode 100644
index 0000000..ce66dc9
--- /dev/null
+++ b/portlet-tck_3.0/V2ExceptionTests/src/main/java/javax/portlet/tck/ExceptionTests/portlets/V2ExceptionTests_SIG_ValidatorException.java
@@ -0,0 +1,144 @@
+/*  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.ExceptionTests.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.JSR286ApiTestCaseDetails;
+import static javax.portlet.tck.beans.JSR286ApiTestCaseDetails.*;
+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 V2ExceptionTests_SIG_ValidatorException implements Portlet {
+   private static final String LOG_CLASS = 
+         V2ExceptionTests_SIG_ValidatorException.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();
+      JSR286ApiTestCaseDetails tcd = new JSR286ApiTestCaseDetails();
+      ClassChecker cc = new ClassChecker(ValidatorException.class);
+
+      // Create result objects for the tests
+
+      /* TestCase: ValidatorException_SIG_extendsPortletException */
+      /* Details: "Extends PortletException " */
+      TestResult tr0 = tcd.getTestResultFailed(VALIDATOREXCEPTION_SIG_EXTENDSPORTLETEXCEPTION);
+      {
+         tr0.setTcSuccess(cc.hasSuperclass(PortletException.class));
+      }
+
+      /* TestCase: ValidatorException_SIG_constructor */
+      /* Details: "Provides constructor ValidatorException(String, java.util.Collection) " */
+      TestResult tr1 = tcd.getTestResultFailed(VALIDATOREXCEPTION_SIG_CONSTRUCTOR);
+      {
+         Class<?>[] parms = {String.class, java.util.Collection.class};
+         tr1.setTcSuccess(cc.hasConstructor(parms));
+      }
+
+      /* TestCase: ValidatorException_SIG_constructorA */
+      /* Details: "Provides constructor ValidatorException(String, Throwable, java.util.Collection) " */
+      TestResult tr2 = tcd.getTestResultFailed(VALIDATOREXCEPTION_SIG_CONSTRUCTORA);
+      {
+         Class<?>[] parms = {String.class, Throwable.class, java.util.Collection.class};
+         tr2.setTcSuccess(cc.hasConstructor(parms));
+      }
+
+      /* TestCase: ValidatorException_SIG_constructorB */
+      /* Details: "Provides constructor ValidatorException(Throwable, java.util.Collection) " */
+      TestResult tr3 = tcd.getTestResultFailed(VALIDATOREXCEPTION_SIG_CONSTRUCTORB);
+      {
+         Class<?>[] parms = {Throwable.class, java.util.Collection.class};
+         tr3.setTcSuccess(cc.hasConstructor(parms));
+      }
+
+      /* TestCase: ValidatorException_SIG_hasGetFailedKeys */
+      /* Details: "Has a getFailedKeys()  method " */
+      TestResult tr4 = tcd.getTestResultFailed(VALIDATOREXCEPTION_SIG_HASGETFAILEDKEYS);
+      {
+         String name = "getFailedKeys";
+         Class<?>[] exceptions = null;
+         Class<?>[] parms = null;
+         tr4.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      }
+
+      /* TestCase: ValidatorException_SIG_hasGetFailedKeysReturns */
+      /* Details: "Method getFailedKeys() returns java.util.Enumeration " */
+      TestResult tr5 = tcd.getTestResultFailed(VALIDATOREXCEPTION_SIG_HASGETFAILEDKEYSRETURNS);
+      {
+         String name = "getFailedKeys";
+         Class<?> retType = java.util.Enumeration.class;
+         Class<?>[] parms = null;
+         tr5.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      }
+
+
+
+      // 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);
+
+
+   }
+
+}
+

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd830576/portlet-tck_3.0/V2ExceptionTests/src/main/java/javax/portlet/tck/ExceptionTests/portlets/V2ExceptionTests_SIG_WindowStateException.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2ExceptionTests/src/main/java/javax/portlet/tck/ExceptionTests/portlets/V2ExceptionTests_SIG_WindowStateException.java b/portlet-tck_3.0/V2ExceptionTests/src/main/java/javax/portlet/tck/ExceptionTests/portlets/V2ExceptionTests_SIG_WindowStateException.java
new file mode 100644
index 0000000..cccd960
--- /dev/null
+++ b/portlet-tck_3.0/V2ExceptionTests/src/main/java/javax/portlet/tck/ExceptionTests/portlets/V2ExceptionTests_SIG_WindowStateException.java
@@ -0,0 +1,144 @@
+/*  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.ExceptionTests.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.JSR286ApiTestCaseDetails;
+import static javax.portlet.tck.beans.JSR286ApiTestCaseDetails.*;
+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 V2ExceptionTests_SIG_WindowStateException implements Portlet {
+   private static final String LOG_CLASS = 
+         V2ExceptionTests_SIG_WindowStateException.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();
+      JSR286ApiTestCaseDetails tcd = new JSR286ApiTestCaseDetails();
+      ClassChecker cc = new ClassChecker(WindowStateException.class);
+
+      // Create result objects for the tests
+
+      /* TestCase: WindowStateException_SIG_extendsPortletException */
+      /* Details: "Extends PortletException " */
+      TestResult tr0 = tcd.getTestResultFailed(WINDOWSTATEEXCEPTION_SIG_EXTENDSPORTLETEXCEPTION);
+      {
+         tr0.setTcSuccess(cc.hasSuperclass(PortletException.class));
+      }
+
+      /* TestCase: WindowStateException_SIG_constructor */
+      /* Details: "Provides constructor WindowStateException(String, WindowState) " */
+      TestResult tr1 = tcd.getTestResultFailed(WINDOWSTATEEXCEPTION_SIG_CONSTRUCTOR);
+      {
+         Class<?>[] parms = {String.class, WindowState.class};
+         tr1.setTcSuccess(cc.hasConstructor(parms));
+      }
+
+      /* TestCase: WindowStateException_SIG_constructorA */
+      /* Details: "Provides constructor WindowStateException(String, Throwable, WindowState) " */
+      TestResult tr2 = tcd.getTestResultFailed(WINDOWSTATEEXCEPTION_SIG_CONSTRUCTORA);
+      {
+         Class<?>[] parms = {String.class, Throwable.class, WindowState.class};
+         tr2.setTcSuccess(cc.hasConstructor(parms));
+      }
+
+      /* TestCase: WindowStateException_SIG_constructorB */
+      /* Details: "Provides constructor WindowStateException(Throwable, WindowState) " */
+      TestResult tr3 = tcd.getTestResultFailed(WINDOWSTATEEXCEPTION_SIG_CONSTRUCTORB);
+      {
+         Class<?>[] parms = {Throwable.class, WindowState.class};
+         tr3.setTcSuccess(cc.hasConstructor(parms));
+      }
+
+      /* TestCase: WindowStateException_SIG_hasGetState */
+      /* Details: "Has a getState()  method " */
+      TestResult tr4 = tcd.getTestResultFailed(WINDOWSTATEEXCEPTION_SIG_HASGETSTATE);
+      {
+         String name = "getState";
+         Class<?>[] exceptions = null;
+         Class<?>[] parms = null;
+         tr4.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      }
+
+      /* TestCase: WindowStateException_SIG_hasGetStateReturns */
+      /* Details: "Method getState() returns WindowState " */
+      TestResult tr5 = tcd.getTestResultFailed(WINDOWSTATEEXCEPTION_SIG_HASGETSTATERETURNS);
+      {
+         String name = "getState";
+         Class<?> retType = WindowState.class;
+         Class<?>[] parms = null;
+         tr5.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      }
+
+
+
+      // 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);
+
+
+   }
+
+}
+

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd830576/portlet-tck_3.0/V2ExceptionTests/src/main/java/javax/portlet/tck/ExceptionTests/portlets/V2ExceptionTests_UnavailableException.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2ExceptionTests/src/main/java/javax/portlet/tck/ExceptionTests/portlets/V2ExceptionTests_UnavailableException.java b/portlet-tck_3.0/V2ExceptionTests/src/main/java/javax/portlet/tck/ExceptionTests/portlets/V2ExceptionTests_UnavailableException.java
new file mode 100644
index 0000000..c54c85a
--- /dev/null
+++ b/portlet-tck_3.0/V2ExceptionTests/src/main/java/javax/portlet/tck/ExceptionTests/portlets/V2ExceptionTests_UnavailableException.java
@@ -0,0 +1,117 @@
+/*  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.ExceptionTests.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.JSR286ApiTestCaseDetails;
+import static javax.portlet.tck.beans.JSR286ApiTestCaseDetails.*;
+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 V2ExceptionTests_UnavailableException implements Portlet {
+   private static final String LOG_CLASS = 
+         V2ExceptionTests_UnavailableException.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();
+      JSR286ApiTestCaseDetails tcd = new JSR286ApiTestCaseDetails();
+      ClassChecker cc = new ClassChecker(UnavailableException.class);
+
+      // Create result objects for the tests
+
+      /* TestCase: UnavailableException_isPermanent1 */
+      /* Details: "Returns a boolean" */
+      TestResult tr0 = tcd.getTestResultFailed(UNAVAILABLEEXCEPTION_ISPERMANENT1);
+      /* TODO: implement test */
+
+      /* TestCase: UnavailableException_isPermanent2 */
+      /* Details: "Returns true if the portlet is permanently unavailable " */
+      TestResult tr1 = tcd.getTestResultFailed(UNAVAILABLEEXCEPTION_ISPERMANENT2);
+      /* TODO: implement test */
+
+      /* TestCase: UnavailableException_isPermanent3 */
+      /* Details: "Returns false if the portlet is temporarily unavailable " */
+      TestResult tr2 = tcd.getTestResultFailed(UNAVAILABLEEXCEPTION_ISPERMANENT3);
+      /* TODO: implement test */
+
+      /* TestCase: UnavailableException_getUnavailableSeconds1 */
+      /* Details: "Returns an integer " */
+      TestResult tr3 = tcd.getTestResultFailed(UNAVAILABLEEXCEPTION_GETUNAVAILABLESECONDS1);
+      /* TODO: implement test */
+
+      /* TestCase: UnavailableException_getUnavailableSeconds2 */
+      /* Details: "Returns a number <= 0 if the portlet is permanently unavailable" */
+      TestResult tr4 = tcd.getTestResultFailed(UNAVAILABLEEXCEPTION_GETUNAVAILABLESECONDS2);
+      /* 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);
+
+
+   }
+
+}
+

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd830576/portlet-tck_3.0/V2ExceptionTests/src/main/java/javax/portlet/tck/ExceptionTests/portlets/V2ExceptionTests_ValidatorException.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2ExceptionTests/src/main/java/javax/portlet/tck/ExceptionTests/portlets/V2ExceptionTests_ValidatorException.java b/portlet-tck_3.0/V2ExceptionTests/src/main/java/javax/portlet/tck/ExceptionTests/portlets/V2ExceptionTests_ValidatorException.java
new file mode 100644
index 0000000..d0c04a0
--- /dev/null
+++ b/portlet-tck_3.0/V2ExceptionTests/src/main/java/javax/portlet/tck/ExceptionTests/portlets/V2ExceptionTests_ValidatorException.java
@@ -0,0 +1,117 @@
+/*  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.ExceptionTests.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.JSR286ApiTestCaseDetails;
+import static javax.portlet.tck.beans.JSR286ApiTestCaseDetails.*;
+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 V2ExceptionTests_ValidatorException implements Portlet {
+   private static final String LOG_CLASS = 
+         V2ExceptionTests_ValidatorException.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();
+      JSR286ApiTestCaseDetails tcd = new JSR286ApiTestCaseDetails();
+      ClassChecker cc = new ClassChecker(ValidatorException.class);
+
+      // Create result objects for the tests
+
+      /* TestCase: ValidatorException_constructor2 */
+      /* Details: "For ValidatorException(java.lang.String, java.util.Collection<java.lang.String>), the failedKeys parameter may be null" */
+      TestResult tr0 = tcd.getTestResultFailed(VALIDATOREXCEPTION_CONSTRUCTOR2);
+      /* TODO: implement test */
+
+      /* TestCase: ValidatorException_constructor4 */
+      /* Details: "For ValidatorException(java.lang.String, java.lang.Throwable, java.util.Collection<java.lang.String>), the failedKeys parameter may be null" */
+      TestResult tr1 = tcd.getTestResultFailed(VALIDATOREXCEPTION_CONSTRUCTOR4);
+      /* TODO: implement test */
+
+      /* TestCase: ValidatorException_constructor6 */
+      /* Details: "For ValidatorException(java.lang.Throwable, java.util.Collection<java.lang.String>), the failedKeys parameter may be null" */
+      TestResult tr2 = tcd.getTestResultFailed(VALIDATOREXCEPTION_CONSTRUCTOR6);
+      /* TODO: implement test */
+
+      /* TestCase: ValidatorException_getFailedKeys1 */
+      /* Details: "Returns a java.util.Enumeration<java.lang.String> object containing the preference keys that failed validation" */
+      TestResult tr3 = tcd.getTestResultFailed(VALIDATOREXCEPTION_GETFAILEDKEYS1);
+      /* TODO: implement test */
+
+      /* TestCase: ValidatorException_getFailedKeys2 */
+      /* Details: "Returns an empty enmueration if no failed keys are available" */
+      TestResult tr4 = tcd.getTestResultFailed(VALIDATOREXCEPTION_GETFAILEDKEYS2);
+      /* 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);
+
+
+   }
+
+}
+

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd830576/portlet-tck_3.0/V2ExceptionTests/src/main/java/javax/portlet/tck/ExceptionTests/portlets/V2ExceptionTests_WindowStateException.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2ExceptionTests/src/main/java/javax/portlet/tck/ExceptionTests/portlets/V2ExceptionTests_WindowStateException.java b/portlet-tck_3.0/V2ExceptionTests/src/main/java/javax/portlet/tck/ExceptionTests/portlets/V2ExceptionTests_WindowStateException.java
new file mode 100644
index 0000000..536ce75
--- /dev/null
+++ b/portlet-tck_3.0/V2ExceptionTests/src/main/java/javax/portlet/tck/ExceptionTests/portlets/V2ExceptionTests_WindowStateException.java
@@ -0,0 +1,93 @@
+/*  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.ExceptionTests.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.JSR286ApiTestCaseDetails;
+import static javax.portlet.tck.beans.JSR286ApiTestCaseDetails.*;
+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 V2ExceptionTests_WindowStateException implements Portlet {
+   private static final String LOG_CLASS = 
+         V2ExceptionTests_WindowStateException.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();
+      JSR286ApiTestCaseDetails tcd = new JSR286ApiTestCaseDetails();
+      ClassChecker cc = new ClassChecker(WindowStateException.class);
+
+      // Create result objects for the tests
+
+      /* TestCase: WindowStateException_getState */
+      /* Details: "Returns the WindowState object causing this exception" */
+      TestResult tr0 = tcd.getTestResultFailed(WINDOWSTATEEXCEPTION_GETSTATE);
+      /* TODO: implement test */
+
+
+
+      // Write the results to the output stream
+
+      tr0.writeTo(writer);
+
+
+   }
+
+}
+

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd830576/portlet-tck_3.0/V2ExceptionTests/src/main/resources/xml-resources/additionalTCs.xml
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2ExceptionTests/src/main/resources/xml-resources/additionalTCs.xml b/portlet-tck_3.0/V2ExceptionTests/src/main/resources/xml-resources/additionalTCs.xml
new file mode 100644
index 0000000..5a8be76
--- /dev/null
+++ b/portlet-tck_3.0/V2ExceptionTests/src/main/resources/xml-resources/additionalTCs.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.     
+-->
+<!--
+   Defines the test cases for this module.
+   For this module, the test case names are not automatically generated from.
+   the deployment descriptor, so edit this file to add new test cases.
+   This allows a portlet to define multiple test cases.
+-->
+<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
+<properties>
+<!-- JSR 286 API ExceptionTests test case names and page mappings -->
+<entry key="PortletException_SIG_extendsException">V2ExceptionTests_SIG_PortletException</entry>
+<entry key="PortletException_SIG_constructor">V2ExceptionTests_SIG_PortletException</entry>
+<entry key="PortletException_SIG_constructorA">V2ExceptionTests_SIG_PortletException</entry>
+<entry key="PortletException_SIG_constructorB">V2ExceptionTests_SIG_PortletException</entry>
+<entry key="PortletException_SIG_constructorC">V2ExceptionTests_SIG_PortletException</entry>
+<entry key="PortletModeException_hasGetMode2">V2ExceptionTests_PortletModeException</entry>
+<entry key="PortletModeException_SIG_extendsPortletException">V2ExceptionTests_SIG_PortletModeException</entry>
+<entry key="PortletModeException_SIG_constructor">V2ExceptionTests_SIG_PortletModeException</entry>
+<entry key="PortletModeException_SIG_constructorA">V2ExceptionTests_SIG_PortletModeException</entry>
+<entry key="PortletModeException_SIG_constructorB">V2ExceptionTests_SIG_PortletModeException</entry>
+<entry key="PortletModeException_SIG_hasGetMode">V2ExceptionTests_SIG_PortletModeException</entry>
+<entry key="PortletModeException_SIG_hasGetModeReturns">V2ExceptionTests_SIG_PortletModeException</entry>
+<entry key="PortletSecurityException_SIG_extendsPortletException">V2ExceptionTests_SIG_PortletSecurityException</entry>
+<entry key="PortletSecurityException_SIG_constructor">V2ExceptionTests_SIG_PortletSecurityException</entry>
+<entry key="PortletSecurityException_SIG_constructorA">V2ExceptionTests_SIG_PortletSecurityException</entry>
+<entry key="PortletSecurityException_SIG_constructorB">V2ExceptionTests_SIG_PortletSecurityException</entry>
+<entry key="ReadOnlyException_SIG_extendsPortletException">V2ExceptionTests_SIG_ReadOnlyException</entry>
+<entry key="ReadOnlyException_SIG_constructor">V2ExceptionTests_SIG_ReadOnlyException</entry>
+<entry key="ReadOnlyException_SIG_constructorA">V2ExceptionTests_SIG_ReadOnlyException</entry>
+<entry key="ReadOnlyException_SIG_constructorB">V2ExceptionTests_SIG_ReadOnlyException</entry>
+<entry key="UnavailableException_isPermanent1">V2ExceptionTests_UnavailableException</entry>
+<entry key="UnavailableException_isPermanent2">V2ExceptionTests_UnavailableException</entry>
+<entry key="UnavailableException_isPermanent3">V2ExceptionTests_UnavailableException</entry>
+<entry key="UnavailableException_getUnavailableSeconds1">V2ExceptionTests_UnavailableException</entry>
+<entry key="UnavailableException_getUnavailableSeconds2">V2ExceptionTests_UnavailableException</entry>
+<entry key="UnavailableException_SIG_extendsPortletException">V2ExceptionTests_SIG_UnavailableException</entry>
+<entry key="UnavailableException_SIG_constructor">V2ExceptionTests_SIG_UnavailableException</entry>
+<entry key="UnavailableException_SIG_constructorA">V2ExceptionTests_SIG_UnavailableException</entry>
+<entry key="UnavailableException_SIG_hasIsPermanent">V2ExceptionTests_SIG_UnavailableException</entry>
+<entry key="UnavailableException_SIG_hasIsPermanentReturns">V2ExceptionTests_SIG_UnavailableException</entry>
+<entry key="UnavailableException_SIG_hasGetUnavailableSeconds">V2ExceptionTests_SIG_UnavailableException</entry>
+<entry key="UnavailableException_SIG_hasGetUnavailableSecondsReturns">V2ExceptionTests_SIG_UnavailableException</entry>
+<entry key="ValidatorException_constructor2">V2ExceptionTests_ValidatorException</entry>
+<entry key="ValidatorException_constructor4">V2ExceptionTests_ValidatorException</entry>
+<entry key="ValidatorException_constructor6">V2ExceptionTests_ValidatorException</entry>
+<entry key="ValidatorException_getFailedKeys1">V2ExceptionTests_ValidatorException</entry>
+<entry key="ValidatorException_getFailedKeys2">V2ExceptionTests_ValidatorException</entry>
+<entry key="ValidatorException_SIG_extendsPortletException">V2ExceptionTests_SIG_ValidatorException</entry>
+<entry key="ValidatorException_SIG_constructor">V2ExceptionTests_SIG_ValidatorException</entry>
+<entry key="ValidatorException_SIG_constructorA">V2ExceptionTests_SIG_ValidatorException</entry>
+<entry key="ValidatorException_SIG_constructorB">V2ExceptionTests_SIG_ValidatorException</entry>
+<entry key="ValidatorException_SIG_hasGetFailedKeys">V2ExceptionTests_SIG_ValidatorException</entry>
+<entry key="ValidatorException_SIG_hasGetFailedKeysReturns">V2ExceptionTests_SIG_ValidatorException</entry>
+<entry key="WindowStateException_getState">V2ExceptionTests_WindowStateException</entry>
+<entry key="WindowStateException_SIG_extendsPortletException">V2ExceptionTests_SIG_WindowStateException</entry>
+<entry key="WindowStateException_SIG_constructor">V2ExceptionTests_SIG_WindowStateException</entry>
+<entry key="WindowStateException_SIG_constructorA">V2ExceptionTests_SIG_WindowStateException</entry>
+<entry key="WindowStateException_SIG_constructorB">V2ExceptionTests_SIG_WindowStateException</entry>
+<entry key="WindowStateException_SIG_hasGetState">V2ExceptionTests_SIG_WindowStateException</entry>
+<entry key="WindowStateException_SIG_hasGetStateReturns">V2ExceptionTests_SIG_WindowStateException</entry>
+
+</properties>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd830576/portlet-tck_3.0/V2ExceptionTests/src/main/webapp/WEB-INF/portlet.xml
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2ExceptionTests/src/main/webapp/WEB-INF/portlet.xml b/portlet-tck_3.0/V2ExceptionTests/src/main/webapp/WEB-INF/portlet.xml
new file mode 100644
index 0000000..23ca027
--- /dev/null
+++ b/portlet-tck_3.0/V2ExceptionTests/src/main/webapp/WEB-INF/portlet.xml
@@ -0,0 +1,269 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.     
+-->
+<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
+   version="2.0" id="javax.portlet-tck-ExceptionTests">
+
+   <portlet>
+      <portlet-name>V2ExceptionTests_SIG_PortletException</portlet-name>
+      <portlet-class>javax.portlet.tck.ExceptionTests.portlets.V2ExceptionTests_SIG_PortletException</portlet-class>
+
+      <init-param>
+         <name>TestParameter</name>
+         <value>TestValue</value>
+      </init-param>
+
+      <expiration-cache>0</expiration-cache>
+
+      <supports>
+         <mime-type>text/html</mime-type>
+      </supports>
+
+      <supported-locale>en_US</supported-locale>
+
+      <portlet-info>
+         <title>V2ExceptionTests_SIG_PortletException</title>
+      </portlet-info>
+   </portlet>
+
+   <portlet>
+      <portlet-name>V2ExceptionTests_PortletModeException</portlet-name>
+      <portlet-class>javax.portlet.tck.ExceptionTests.portlets.V2ExceptionTests_PortletModeException</portlet-class>
+
+      <init-param>
+         <name>TestParameter</name>
+         <value>TestValue</value>
+      </init-param>
+
+      <expiration-cache>0</expiration-cache>
+
+      <supports>
+         <mime-type>text/html</mime-type>
+      </supports>
+
+      <supported-locale>en_US</supported-locale>
+
+      <portlet-info>
+         <title>V2ExceptionTests_PortletModeException</title>
+      </portlet-info>
+   </portlet>
+
+   <portlet>
+      <portlet-name>V2ExceptionTests_SIG_PortletModeException</portlet-name>
+      <portlet-class>javax.portlet.tck.ExceptionTests.portlets.V2ExceptionTests_SIG_PortletModeException</portlet-class>
+
+      <init-param>
+         <name>TestParameter</name>
+         <value>TestValue</value>
+      </init-param>
+
+      <expiration-cache>0</expiration-cache>
+
+      <supports>
+         <mime-type>text/html</mime-type>
+      </supports>
+
+      <supported-locale>en_US</supported-locale>
+
+      <portlet-info>
+         <title>V2ExceptionTests_SIG_PortletModeException</title>
+      </portlet-info>
+   </portlet>
+
+   <portlet>
+      <portlet-name>V2ExceptionTests_SIG_PortletSecurityException</portlet-name>
+      <portlet-class>javax.portlet.tck.ExceptionTests.portlets.V2ExceptionTests_SIG_PortletSecurityException</portlet-class>
+
+      <init-param>
+         <name>TestParameter</name>
+         <value>TestValue</value>
+      </init-param>
+
+      <expiration-cache>0</expiration-cache>
+
+      <supports>
+         <mime-type>text/html</mime-type>
+      </supports>
+
+      <supported-locale>en_US</supported-locale>
+
+      <portlet-info>
+         <title>V2ExceptionTests_SIG_PortletSecurityException</title>
+      </portlet-info>
+   </portlet>
+
+   <portlet>
+      <portlet-name>V2ExceptionTests_SIG_ReadOnlyException</portlet-name>
+      <portlet-class>javax.portlet.tck.ExceptionTests.portlets.V2ExceptionTests_SIG_ReadOnlyException</portlet-class>
+
+      <init-param>
+         <name>TestParameter</name>
+         <value>TestValue</value>
+      </init-param>
+
+      <expiration-cache>0</expiration-cache>
+
+      <supports>
+         <mime-type>text/html</mime-type>
+      </supports>
+
+      <supported-locale>en_US</supported-locale>
+
+      <portlet-info>
+         <title>V2ExceptionTests_SIG_ReadOnlyException</title>
+      </portlet-info>
+   </portlet>
+
+   <portlet>
+      <portlet-name>V2ExceptionTests_UnavailableException</portlet-name>
+      <portlet-class>javax.portlet.tck.ExceptionTests.portlets.V2ExceptionTests_UnavailableException</portlet-class>
+
+      <init-param>
+         <name>TestParameter</name>
+         <value>TestValue</value>
+      </init-param>
+
+      <expiration-cache>0</expiration-cache>
+
+      <supports>
+         <mime-type>text/html</mime-type>
+      </supports>
+
+      <supported-locale>en_US</supported-locale>
+
+      <portlet-info>
+         <title>V2ExceptionTests_UnavailableException</title>
+      </portlet-info>
+   </portlet>
+
+   <portlet>
+      <portlet-name>V2ExceptionTests_SIG_UnavailableException</portlet-name>
+      <portlet-class>javax.portlet.tck.ExceptionTests.portlets.V2ExceptionTests_SIG_UnavailableException</portlet-class>
+
+      <init-param>
+         <name>TestParameter</name>
+         <value>TestValue</value>
+      </init-param>
+
+      <expiration-cache>0</expiration-cache>
+
+      <supports>
+         <mime-type>text/html</mime-type>
+      </supports>
+
+      <supported-locale>en_US</supported-locale>
+
+      <portlet-info>
+         <title>V2ExceptionTests_SIG_UnavailableException</title>
+      </portlet-info>
+   </portlet>
+
+   <portlet>
+      <portlet-name>V2ExceptionTests_ValidatorException</portlet-name>
+      <portlet-class>javax.portlet.tck.ExceptionTests.portlets.V2ExceptionTests_ValidatorException</portlet-class>
+
+      <init-param>
+         <name>TestParameter</name>
+         <value>TestValue</value>
+      </init-param>
+
+      <expiration-cache>0</expiration-cache>
+
+      <supports>
+         <mime-type>text/html</mime-type>
+      </supports>
+
+      <supported-locale>en_US</supported-locale>
+
+      <portlet-info>
+         <title>V2ExceptionTests_ValidatorException</title>
+      </portlet-info>
+   </portlet>
+
+   <portlet>
+      <portlet-name>V2ExceptionTests_SIG_ValidatorException</portlet-name>
+      <portlet-class>javax.portlet.tck.ExceptionTests.portlets.V2ExceptionTests_SIG_ValidatorException</portlet-class>
+
+      <init-param>
+         <name>TestParameter</name>
+         <value>TestValue</value>
+      </init-param>
+
+      <expiration-cache>0</expiration-cache>
+
+      <supports>
+         <mime-type>text/html</mime-type>
+      </supports>
+
+      <supported-locale>en_US</supported-locale>
+
+      <portlet-info>
+         <title>V2ExceptionTests_SIG_ValidatorException</title>
+      </portlet-info>
+   </portlet>
+
+   <portlet>
+      <portlet-name>V2ExceptionTests_WindowStateException</portlet-name>
+      <portlet-class>javax.portlet.tck.ExceptionTests.portlets.V2ExceptionTests_WindowStateException</portlet-class>
+
+      <init-param>
+         <name>TestParameter</name>
+         <value>TestValue</value>
+      </init-param>
+
+      <expiration-cache>0</expiration-cache>
+
+      <supports>
+         <mime-type>text/html</mime-type>
+      </supports>
+
+      <supported-locale>en_US</supported-locale>
+
+      <portlet-info>
+         <title>V2ExceptionTests_WindowStateException</title>
+      </portlet-info>
+   </portlet>
+
+   <portlet>
+      <portlet-name>V2ExceptionTests_SIG_WindowStateException</portlet-name>
+      <portlet-class>javax.portlet.tck.ExceptionTests.portlets.V2ExceptionTests_SIG_WindowStateException</portlet-class>
+
+      <init-param>
+         <name>TestParameter</name>
+         <value>TestValue</value>
+      </init-param>
+
+      <expiration-cache>0</expiration-cache>
+
+      <supports>
+         <mime-type>text/html</mime-type>
+      </supports>
+
+      <supported-locale>en_US</supported-locale>
+
+      <portlet-info>
+         <title>V2ExceptionTests_SIG_WindowStateException</title>
+      </portlet-info>
+   </portlet>
+
+
+
+</portlet-app>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd830576/portlet-tck_3.0/V2ExceptionTests/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2ExceptionTests/src/main/webapp/WEB-INF/web.xml b/portlet-tck_3.0/V2ExceptionTests/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..3e61db6
--- /dev/null
+++ b/portlet-tck_3.0/V2ExceptionTests/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.     
+-->
+<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
+	<display-name>javax.portlet-tck-ExceptionTests</display-name>
+</web-app>
+

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd830576/portlet-tck_3.0/V2FilterTests/pom.xml
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2FilterTests/pom.xml b/portlet-tck_3.0/V2FilterTests/pom.xml
new file mode 100644
index 0000000..a253bb3
--- /dev/null
+++ b/portlet-tck_3.0/V2FilterTests/pom.xml
@@ -0,0 +1,120 @@
+<!--
+    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-V2FilterTests</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>
+
+   </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/bd830576/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/FilterTests/portlets/V2FilterTests_ActionFilter.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/FilterTests/portlets/V2FilterTests_ActionFilter.java b/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/FilterTests/portlets/V2FilterTests_ActionFilter.java
new file mode 100644
index 0000000..2bd04b8
--- /dev/null
+++ b/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/FilterTests/portlets/V2FilterTests_ActionFilter.java
@@ -0,0 +1,141 @@
+/*  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.FilterTests.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.JSR286ApiTestCaseDetails;
+import static javax.portlet.tck.beans.JSR286ApiTestCaseDetails.*;
+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 V2FilterTests_ActionFilter implements Portlet {
+   private static final String LOG_CLASS = 
+         V2FilterTests_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 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();
+      JSR286ApiTestCaseDetails tcd = new JSR286ApiTestCaseDetails();
+      ClassChecker cc = new ClassChecker(ActionFilter.class);
+
+      // Create result objects for the tests
+
+      /* TestCase: ActionFilter_canBeConfigured1 */
+      /* Details: "An ActionFilter can be configured in the portlet descriptor" */
+      TestResult tr0 = tcd.getTestResultFailed(ACTIONFILTER_CANBECONFIGURED1);
+      /* TODO: implement test */
+
+      /* TestCase: ActionFilter_canBeConfigured2 */
+      /* Details: "Multiple ActionFilter classes can be configured in the portlet descriptor" */
+      TestResult tr1 = tcd.getTestResultFailed(ACTIONFILTER_CANBECONFIGURED2);
+      /* TODO: implement test */
+
+      /* TestCase: ActionFilter_doFilterIsCalled */
+      /* Details: "The doFilter(ActionRequest, ActionResponse, FilterChain) method is called before the processAction method for the portlet" */
+      TestResult tr2 = tcd.getTestResultFailed(ACTIONFILTER_DOFILTERISCALLED);
+      /* TODO: implement test */
+
+      /* TestCase: ActionFilter_doFilterProcessAction1 */
+      /* Details: "After the method has sucessfully completed and invokes the next filter, the processActionMethod is called" */
+      TestResult tr3 = tcd.getTestResultFailed(ACTIONFILTER_DOFILTERPROCESSACTION1);
+      /* TODO: implement test */
+
+      /* TestCase: ActionFilter_doFilterProcessAction2 */
+      /* Details: "After the 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(ACTIONFILTER_DOFILTERPROCESSACTION2);
+      /* TODO: implement test */
+
+      /* TestCase: ActionFilter_doFilterBlock */
+      /* Details: "If the method does not invoke the next filter, processAction is not called" */
+      TestResult tr5 = tcd.getTestResultFailed(ACTIONFILTER_DOFILTERBLOCK);
+      /* TODO: implement test */
+
+      /* TestCase: ActionFilter_doFilterException1 */
+      /* Details: "If the method throws an UnavailableException, processAction is not called" */
+      TestResult tr6 = tcd.getTestResultFailed(ACTIONFILTER_DOFILTEREXCEPTION1);
+      /* TODO: implement test */
+
+      /* TestCase: ActionFilter_doFilterException2 */
+      /* Details: "If the method throws an UnavailableException, no further filter is called" */
+      TestResult tr7 = tcd.getTestResultFailed(ACTIONFILTER_DOFILTEREXCEPTION2);
+      /* TODO: implement test */
+
+      /* TestCase: ActionFilter_doFilterExamine */
+      /* Details: "After the next filter has been successfully invoked, the ActionResponse may be examined" */
+      TestResult tr8 = tcd.getTestResultFailed(ACTIONFILTER_DOFILTEREXAMINE);
+      /* 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);
+
+
+   }
+
+}
+

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd830576/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/FilterTests/portlets/V2FilterTests_EventFilter.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/FilterTests/portlets/V2FilterTests_EventFilter.java b/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/FilterTests/portlets/V2FilterTests_EventFilter.java
new file mode 100644
index 0000000..fcdf39d
--- /dev/null
+++ b/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/FilterTests/portlets/V2FilterTests_EventFilter.java
@@ -0,0 +1,141 @@
+/*  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.FilterTests.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.JSR286ApiTestCaseDetails;
+import static javax.portlet.tck.beans.JSR286ApiTestCaseDetails.*;
+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 V2FilterTests_EventFilter implements Portlet {
+   private static final String LOG_CLASS = 
+         V2FilterTests_EventFilter.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();
+      JSR286ApiTestCaseDetails tcd = new JSR286ApiTestCaseDetails();
+      ClassChecker cc = new ClassChecker(EventFilter.class);
+
+      // Create result objects for the tests
+
+      /* TestCase: EventFilter_canBeConfigured1 */
+      /* Details: "An EventFilter can be configured in the portlet descriptor" */
+      TestResult tr0 = tcd.getTestResultFailed(EVENTFILTER_CANBECONFIGURED1);
+      /* TODO: implement test */
+
+      /* TestCase: EventFilter_canBeConfigured2 */
+      /* Details: "Multiple EventFilter classes can be configured in the portlet descriptor" */
+      TestResult tr1 = tcd.getTestResultFailed(EVENTFILTER_CANBECONFIGURED2);
+      /* TODO: implement test */
+
+      /* TestCase: EventFilter_doFilterIsCalled */
+      /* Details: "The doFilter(EventRequest, EventResponse, FilterChain) method is called before the processEvent method for the portlet" */
+      TestResult tr2 = tcd.getTestResultFailed(EVENTFILTER_DOFILTERISCALLED);
+      /* TODO: implement test */
+
+      /* TestCase: EventFilter_doFilterProcessEvent1 */
+      /* Details: "After the method has sucessfully completed and invokes the next filter, the processEventMethod is called" */
+      TestResult tr3 = tcd.getTestResultFailed(EVENTFILTER_DOFILTERPROCESSEVENT1);
+      /* TODO: implement test */
+
+      /* TestCase: EventFilter_doFilterProcessEvent2 */
+      /* Details: "After the 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(EVENTFILTER_DOFILTERPROCESSEVENT2);
+      /* TODO: implement test */
+
+      /* TestCase: EventFilter_doFilterBlock */
+      /* Details: "If the method does not invoke the next filter, processEvent is not called" */
+      TestResult tr5 = tcd.getTestResultFailed(EVENTFILTER_DOFILTERBLOCK);
+      /* TODO: implement test */
+
+      /* TestCase: EventFilter_doFilterException1 */
+      /* Details: "If the method throws an UnavailableException, processEvent is not called" */
+      TestResult tr6 = tcd.getTestResultFailed(EVENTFILTER_DOFILTEREXCEPTION1);
+      /* TODO: implement test */
+
+      /* TestCase: EventFilter_doFilterException2 */
+      /* Details: "If the method throws an UnavailableException, no further filter is called" */
+      TestResult tr7 = tcd.getTestResultFailed(EVENTFILTER_DOFILTEREXCEPTION2);
+      /* TODO: implement test */
+
+      /* TestCase: EventFilter_doFilterExamine */
+      /* Details: "After the next filter has been successfully invoked, the EventResponse may be examined" */
+      TestResult tr8 = tcd.getTestResultFailed(EVENTFILTER_DOFILTEREXAMINE);
+      /* 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);
+
+
+   }
+
+}
+

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd830576/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/FilterTests/portlets/V2FilterTests_FilterChain.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/FilterTests/portlets/V2FilterTests_FilterChain.java b/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/FilterTests/portlets/V2FilterTests_FilterChain.java
new file mode 100644
index 0000000..21d781c
--- /dev/null
+++ b/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/FilterTests/portlets/V2FilterTests_FilterChain.java
@@ -0,0 +1,183 @@
+/*  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.FilterTests.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.JSR286ApiTestCaseDetails;
+import static javax.portlet.tck.beans.JSR286ApiTestCaseDetails.*;
+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 V2FilterTests_FilterChain implements Portlet {
+   private static final String LOG_CLASS = 
+         V2FilterTests_FilterChain.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();
+      JSR286ApiTestCaseDetails tcd = new JSR286ApiTestCaseDetails();
+      ClassChecker cc = new ClassChecker(FilterChain.class);
+
+      // Create result objects for the tests
+
+      /* TestCase: FilterChain_invokeActionFilter */
+      /* Details: "Invoking doFilter(ActionRequest, ActionResponse) causes next filter to be invoked" */
+      TestResult tr0 = tcd.getTestResultFailed(FILTERCHAIN_INVOKEACTIONFILTER);
+      /* TODO: implement test */
+
+      /* TestCase: FilterChain_invokeActionFilter2 */
+      /* Details: "Invoking doFilter(ActionRequest, ActionResponse) causes portlet action method to be invoked" */
+      TestResult tr1 = tcd.getTestResultFailed(FILTERCHAIN_INVOKEACTIONFILTER2);
+      /* TODO: implement test */
+
+      /* TestCase: FilterChain_invokeActionException */
+      /* Details: "Invoking doFilter(ActionRequest, ActionResponse) throws PortletException" */
+      TestResult tr2 = tcd.getTestResultFailed(FILTERCHAIN_INVOKEACTIONEXCEPTION);
+      /* TODO: implement test */
+
+      /* TestCase: FilterChain_invokeActionException2 */
+      /* Details: "Invoking doFilter(ActionRequest, ActionResponse) throws IOException" */
+      TestResult tr3 = tcd.getTestResultFailed(FILTERCHAIN_INVOKEACTIONEXCEPTION2);
+      /* TODO: implement test */
+
+      /* TestCase: FilterChain_invokeEventFilter */
+      /* Details: "Invoking doFilter(EventRequest, EventResponse) causes next filter to be invoked" */
+      TestResult tr4 = tcd.getTestResultFailed(FILTERCHAIN_INVOKEEVENTFILTER);
+      /* TODO: implement test */
+
+      /* TestCase: FilterChain_invokeEventFilter2 */
+      /* Details: "Invoking doFilter(EventRequest, EventResponse) causes portlet Event method to be invoked" */
+      TestResult tr5 = tcd.getTestResultFailed(FILTERCHAIN_INVOKEEVENTFILTER2);
+      /* TODO: implement test */
+
+      /* TestCase: FilterChain_invokeEventException */
+      /* Details: "Invoking doFilter(EventRequest, EventResponse) throws PortletException" */
+      TestResult tr6 = tcd.getTestResultFailed(FILTERCHAIN_INVOKEEVENTEXCEPTION);
+      /* TODO: implement test */
+
+      /* TestCase: FilterChain_invokeEventException2 */
+      /* Details: "Invoking doFilter(EventRequest, EventResponse) throws IOException" */
+      TestResult tr7 = tcd.getTestResultFailed(FILTERCHAIN_INVOKEEVENTEXCEPTION2);
+      /* TODO: implement test */
+
+      /* TestCase: FilterChain_invokeRenderFilter */
+      /* Details: "Invoking doFilter(RenderRequest, RenderResponse) causes next filter to be invoked" */
+      TestResult tr8 = tcd.getTestResultFailed(FILTERCHAIN_INVOKERENDERFILTER);
+      /* TODO: implement test */
+
+      /* TestCase: FilterChain_invokeRenderFilter2 */
+      /* Details: "Invoking doFilter(RenderRequest, RenderResponse) causes portlet Render method to be invoked" */
+      TestResult tr9 = tcd.getTestResultFailed(FILTERCHAIN_INVOKERENDERFILTER2);
+      /* TODO: implement test */
+
+      /* TestCase: FilterChain_invokeRenderException */
+      /* Details: "Invoking doFilter(RenderRequest, RenderResponse) throws PortletException" */
+      TestResult tr10 = tcd.getTestResultFailed(FILTERCHAIN_INVOKERENDEREXCEPTION);
+      /* TODO: implement test */
+
+      /* TestCase: FilterChain_invokeRenderException2 */
+      /* Details: "Invoking doFilter(RenderRequest, RenderResponse) throws IOException" */
+      TestResult tr11 = tcd.getTestResultFailed(FILTERCHAIN_INVOKERENDEREXCEPTION2);
+      /* TODO: implement test */
+
+      /* TestCase: FilterChain_invokeResourceFilter */
+      /* Details: "Invoking doFilter(ResourceRequest, ResourceResponse) causes next filter to be invoked" */
+      TestResult tr12 = tcd.getTestResultFailed(FILTERCHAIN_INVOKERESOURCEFILTER);
+      /* TODO: implement test */
+
+      /* TestCase: FilterChain_invokeResourceFilter2 */
+      /* Details: "Invoking doFilter(ResourceRequest, ResourceResponse) causes portlet Resource method to be invoked" */
+      TestResult tr13 = tcd.getTestResultFailed(FILTERCHAIN_INVOKERESOURCEFILTER2);
+      /* TODO: implement test */
+
+      /* TestCase: FilterChain_invokeResourceException */
+      /* Details: "Invoking doFilter(ResourceRequest, ResourceResponse) throws PortletException" */
+      TestResult tr14 = tcd.getTestResultFailed(FILTERCHAIN_INVOKERESOURCEEXCEPTION);
+      /* TODO: implement test */
+
+      /* TestCase: FilterChain_invokeResourceException2 */
+      /* Details: "Invoking doFilter(ResourceRequest, ResourceResponse) throws IOException" */
+      TestResult tr15 = tcd.getTestResultFailed(FILTERCHAIN_INVOKERESOURCEEXCEPTION2);
+      /* 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);
+
+
+   }
+
+}
+

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd830576/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/FilterTests/portlets/V2FilterTests_FilterConfig.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/FilterTests/portlets/V2FilterTests_FilterConfig.java b/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/FilterTests/portlets/V2FilterTests_FilterConfig.java
new file mode 100644
index 0000000..676fcde
--- /dev/null
+++ b/portlet-tck_3.0/V2FilterTests/src/main/java/javax/portlet/tck/FilterTests/portlets/V2FilterTests_FilterConfig.java
@@ -0,0 +1,123 @@
+/*  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.FilterTests.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.JSR286ApiTestCaseDetails;
+import static javax.portlet.tck.beans.JSR286ApiTestCaseDetails.*;
+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 V2FilterTests_FilterConfig implements Portlet {
+   private static final String LOG_CLASS = 
+         V2FilterTests_FilterConfig.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();
+      JSR286ApiTestCaseDetails tcd = new JSR286ApiTestCaseDetails();
+      ClassChecker cc = new ClassChecker(FilterConfig.class);
+
+      // Create result objects for the tests
+
+      /* TestCase: FilterConfig_getFilterName */
+      /* Details: "getFilterName method returns filter name as defined in deployment descriptor" */
+      TestResult tr0 = tcd.getTestResultFailed(FILTERCONFIG_GETFILTERNAME);
+      /* TODO: implement test */
+
+      /* TestCase: FilterConfig_getPortletContext */
+      /* Details: "Returns reference to PortletContext object" */
+      TestResult tr1 = tcd.getTestResultFailed(FILTERCONFIG_GETPORTLETCONTEXT);
+      /* TODO: implement test */
+
+      /* TestCase: FilterConfig_getInitParameter1 */
+      /* Details: "Returns null if initialization parameter does not exist" */
+      TestResult tr2 = tcd.getTestResultFailed(FILTERCONFIG_GETINITPARAMETER1);
+      /* TODO: implement test */
+
+      /* TestCase: FilterConfig_getInitParameter2 */
+      /* Details: "Returns value of specified initialization parameter" */
+      TestResult tr3 = tcd.getTestResultFailed(FILTERCONFIG_GETINITPARAMETER2);
+      /* TODO: implement test */
+
+      /* TestCase: FilterConfig_getInitParameterNames1 */
+      /* Details: "Returns empty Enumeration if no parameters defined" */
+      TestResult tr4 = tcd.getTestResultFailed(FILTERCONFIG_GETINITPARAMETERNAMES1);
+      /* TODO: implement test */
+
+      /* TestCase: FilterConfig_getInitParameterNames2 */
+      /* Details: "Returns an Enumeration of initialization parameters defined in deployment descriptor" */
+      TestResult tr5 = tcd.getTestResultFailed(FILTERCONFIG_GETINITPARAMETERNAMES2);
+      /* 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);
+
+
+   }
+
+}
+