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:58 UTC

[22/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/V2EnvironmentTests/src/main/java/javax/portlet/tck/EnvironmentTests/portlets/V2EnvironmentTests_CacheControl.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2EnvironmentTests/src/main/java/javax/portlet/tck/EnvironmentTests/portlets/V2EnvironmentTests_CacheControl.java b/portlet-tck_3.0/V2EnvironmentTests/src/main/java/javax/portlet/tck/EnvironmentTests/portlets/V2EnvironmentTests_CacheControl.java
new file mode 100644
index 0000000..a2ddec1
--- /dev/null
+++ b/portlet-tck_3.0/V2EnvironmentTests/src/main/java/javax/portlet/tck/EnvironmentTests/portlets/V2EnvironmentTests_CacheControl.java
@@ -0,0 +1,225 @@
+/*  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.EnvironmentTests.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 V2EnvironmentTests_CacheControl implements Portlet {
+   private static final String LOG_CLASS = 
+         V2EnvironmentTests_CacheControl.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(renderResponse.getCacheControl().getClass());
+
+      // Create result objects for the tests
+
+      /* TestCase: CacheControl_getExpirationTime1 */
+      /* Details: "Returns the expiration time set through setExpirationTime" */
+      TestResult tr0 = tcd.getTestResultFailed(CACHECONTROL_GETEXPIRATIONTIME1);
+      /* TODO: implement test */
+
+      /* TestCase: CacheControl_getExpirationTime2 */
+      /* Details: "Returns the default expiration time from the deployment descriptor if the expiration time has not been set" */
+      TestResult tr1 = tcd.getTestResultFailed(CACHECONTROL_GETEXPIRATIONTIME2);
+      /* TODO: implement test */
+
+      /* TestCase: CacheControl_getExpirationTime3 */
+      /* Details: "Returns 0 if the expiration time has not been set and no default is set in the deployment descriptor" */
+      TestResult tr2 = tcd.getTestResultFailed(CACHECONTROL_GETEXPIRATIONTIME3);
+      /* TODO: implement test */
+
+      /* TestCase: CacheControl_setExpirationTime1 */
+      /* Details: "Sets the expiration time for the current response to the specified value" */
+      TestResult tr3 = tcd.getTestResultFailed(CACHECONTROL_SETEXPIRATIONTIME1);
+      /* TODO: implement test */
+
+      /* TestCase: CacheControl_setExpirationTime2 */
+      /* Details: "If the expiration value is set to 0, caching is disabled" */
+      TestResult tr4 = tcd.getTestResultFailed(CACHECONTROL_SETEXPIRATIONTIME2);
+      /* TODO: implement test */
+
+      /* TestCase: CacheControl_setExpirationTime3 */
+      /* Details: "If the expiration value is set to -1, the cache does not expire" */
+      TestResult tr5 = tcd.getTestResultFailed(CACHECONTROL_SETEXPIRATIONTIME3);
+      /* TODO: implement test */
+
+      /* TestCase: CacheControl_isPublicScope1 */
+      /* Details: "Returns true if the caching scope has been set to public through the setPublicScope method" */
+      TestResult tr6 = tcd.getTestResultFailed(CACHECONTROL_ISPUBLICSCOPE1);
+      /* TODO: implement test */
+
+      /* TestCase: CacheControl_isPublicScope2 */
+      /* Details: "Returns true if the caching scope default has been set to public in the deployment descriptor " */
+      TestResult tr7 = tcd.getTestResultFailed(CACHECONTROL_ISPUBLICSCOPE2);
+      /* TODO: implement test */
+
+      /* TestCase: CacheControl_isPublicScope3 */
+      /* Details: "Returns false if the caching scope has been set to non-public through the setPublicScope method " */
+      TestResult tr8 = tcd.getTestResultFailed(CACHECONTROL_ISPUBLICSCOPE3);
+      /* TODO: implement test */
+
+      /* TestCase: CacheControl_isPublicScope4 */
+      /* Details: "Returns false if the caching scope  default has been set to public in the deployment descriptor" */
+      TestResult tr9 = tcd.getTestResultFailed(CACHECONTROL_ISPUBLICSCOPE4);
+      /* TODO: implement test */
+
+      /* TestCase: CacheControl_isPublicScope5 */
+      /* Details: "Returns false if the caching scope has not been set ans has no default" */
+      TestResult tr10 = tcd.getTestResultFailed(CACHECONTROL_ISPUBLICSCOPE5);
+      /* TODO: implement test */
+
+      /* TestCase: CacheControl_setPublicScope1 */
+      /* Details: "If the input parameter is true, the cache scope is set to public" */
+      TestResult tr11 = tcd.getTestResultFailed(CACHECONTROL_SETPUBLICSCOPE1);
+      /* TODO: implement test */
+
+      /* TestCase: CacheControl_setPublicScope2 */
+      /* Details: "If the input parameter is false, the cache scope is set to non-public" */
+      TestResult tr12 = tcd.getTestResultFailed(CACHECONTROL_SETPUBLICSCOPE2);
+      /* TODO: implement test */
+
+      /* TestCase: CacheControl_getETag1 */
+      /* Details: "Returns a String containing the ETag for the current response" */
+      TestResult tr13 = tcd.getTestResultFailed(CACHECONTROL_GETETAG1);
+      /* TODO: implement test */
+
+      /* TestCase: CacheControl_getETag2 */
+      /* Details: "Returns null if no ETag is set on the response" */
+      TestResult tr14 = tcd.getTestResultFailed(CACHECONTROL_GETETAG2);
+      /* TODO: implement test */
+
+      /* TestCase: CacheControl_setETag1 */
+      /* Details: "Sets an ETag for the current response" */
+      TestResult tr15 = tcd.getTestResultFailed(CACHECONTROL_SETETAG1);
+      /* TODO: implement test */
+
+      /* TestCase: CacheControl_setETag2 */
+      /* Details: "A previously-set ETag is overwritten" */
+      TestResult tr16 = tcd.getTestResultFailed(CACHECONTROL_SETETAG2);
+      /* TODO: implement test */
+
+      /* TestCase: CacheControl_setETag3 */
+      /* Details: "Removes the ETag if the input parameter is null" */
+      TestResult tr17 = tcd.getTestResultFailed(CACHECONTROL_SETETAG3);
+      /* TODO: implement test */
+
+      /* TestCase: CacheControl_useCachedContent1 */
+      /* Details: "Returns true if cached content has been set to valid through the setUseCachedContent method" */
+      TestResult tr18 = tcd.getTestResultFailed(CACHECONTROL_USECACHEDCONTENT1);
+      /* TODO: implement test */
+
+      /* TestCase: CacheControl_useCachedContent2 */
+      /* Details: "Returns false if cached content has been set to invalid through the setUseCachedContent method" */
+      TestResult tr19 = tcd.getTestResultFailed(CACHECONTROL_USECACHEDCONTENT2);
+      /* TODO: implement test */
+
+      /* TestCase: CacheControl_useCachedContent3 */
+      /* Details: "Returns false if the use cached content indcator has not been set" */
+      TestResult tr20 = tcd.getTestResultFailed(CACHECONTROL_USECACHEDCONTENT3);
+      /* TODO: implement test */
+
+      /* TestCase: CacheControl_setUseCachedContent1 */
+      /* Details: "If set to true, the cached content is valid " */
+      TestResult tr21 = tcd.getTestResultFailed(CACHECONTROL_SETUSECACHEDCONTENT1);
+      /* TODO: implement test */
+
+      /* TestCase: CacheControl_setUseCachedContent2 */
+      /* Details: "If set to false, the cached content is invalid " */
+      TestResult tr22 = tcd.getTestResultFailed(CACHECONTROL_SETUSECACHEDCONTENT2);
+      /* TODO: implement test */
+
+
+
+      // Write the results to the output stream
+
+      tr0.writeTo(writer);
+      tr1.writeTo(writer);
+      tr2.writeTo(writer);
+      tr3.writeTo(writer);
+      tr4.writeTo(writer);
+      tr5.writeTo(writer);
+      tr6.writeTo(writer);
+      tr7.writeTo(writer);
+      tr8.writeTo(writer);
+      tr9.writeTo(writer);
+      tr10.writeTo(writer);
+      tr11.writeTo(writer);
+      tr12.writeTo(writer);
+      tr13.writeTo(writer);
+      tr14.writeTo(writer);
+      tr15.writeTo(writer);
+      tr16.writeTo(writer);
+      tr17.writeTo(writer);
+      tr18.writeTo(writer);
+      tr19.writeTo(writer);
+      tr20.writeTo(writer);
+      tr21.writeTo(writer);
+      tr22.writeTo(writer);
+
+
+   }
+
+}
+

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd830576/portlet-tck_3.0/V2EnvironmentTests/src/main/java/javax/portlet/tck/EnvironmentTests/portlets/V2EnvironmentTests_PortalContext.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2EnvironmentTests/src/main/java/javax/portlet/tck/EnvironmentTests/portlets/V2EnvironmentTests_PortalContext.java b/portlet-tck_3.0/V2EnvironmentTests/src/main/java/javax/portlet/tck/EnvironmentTests/portlets/V2EnvironmentTests_PortalContext.java
new file mode 100644
index 0000000..54907f4
--- /dev/null
+++ b/portlet-tck_3.0/V2EnvironmentTests/src/main/java/javax/portlet/tck/EnvironmentTests/portlets/V2EnvironmentTests_PortalContext.java
@@ -0,0 +1,203 @@
+/*  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.EnvironmentTests.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 V2EnvironmentTests_PortalContext implements Portlet {
+   private static final String LOG_CLASS = 
+         V2EnvironmentTests_PortalContext.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(renderRequest.getPortalContext().getClass());
+
+      // Create result objects for the tests
+
+      /* TestCase: PortalContext_fieldMARKUP_HEAD_ELEMENT_SUPPORT */
+      /* Details: "Has String field MARKUP_HEAD_ELEMENT_SUPPORT with value of \"javax.portlet.markup.head.element.support\" " */
+      TestResult tr0 = tcd.getTestResultFailed(PORTALCONTEXT_FIELDMARKUP_HEAD_ELEMENT_SUPPORT);
+      {
+         tr0.setTcSuccess(cc.hasField("MARKUP_HEAD_ELEMENT_SUPPORT", "javax.portlet.markup.head.element.support"));
+      }
+
+      /* TestCase: PortalContext_getProperty1 */
+      /* Details: "Returns a String containing the value for the specified property " */
+      TestResult tr1 = tcd.getTestResultFailed(PORTALCONTEXT_GETPROPERTY1);
+      /* TODO: implement test */
+
+      /* TestCase: PortalContext_getProperty2 */
+      /* Details: "Returns null if there is no property defined for the specified name" */
+      TestResult tr2 = tcd.getTestResultFailed(PORTALCONTEXT_GETPROPERTY2);
+      /* TODO: implement test */
+
+      /* TestCase: PortalContext_getProperty3 */
+      /* Details: "Throws IllegalArgumentException if the specified name is null " */
+      TestResult tr3 = tcd.getTestResultFailed(PORTALCONTEXT_GETPROPERTY3);
+      /* TODO: implement test */
+
+      /* TestCase: PortalContext_getPropertyNames1 */
+      /* Details: "Returns an java.util.Enumeration<java.lang.String> containing all portal property names" */
+      TestResult tr4 = tcd.getTestResultFailed(PORTALCONTEXT_GETPROPERTYNAMES1);
+      /* TODO: implement test */
+
+      /* TestCase: PortalContext_getPropertyNames2 */
+      /* Details: "Returns an empty Enumeration if there are no portal property names defined" */
+      TestResult tr5 = tcd.getTestResultFailed(PORTALCONTEXT_GETPROPERTYNAMES2);
+      /* TODO: implement test */
+
+      /* TestCase: PortalContext_getSupportedPortletModes1 */
+      /* Details: "Returns an java.util.Enumeration<PortletMode> containing all supported portlet modes" */
+      TestResult tr6 = tcd.getTestResultFailed(PORTALCONTEXT_GETSUPPORTEDPORTLETMODES1);
+      /* TODO: implement test */
+
+      /* TestCase: PortalContext_getSupportedPortletModes2 */
+      /* Details: "The Enumeration returned must contain the view mode" */
+      TestResult tr7 = tcd.getTestResultFailed(PORTALCONTEXT_GETSUPPORTEDPORTLETMODES2);
+      /* TODO: implement test */
+
+      /* TestCase: PortalContext_getSupportedPortletModes3 */
+      /* Details: "The Enumeration returned must contain the edit mode" */
+      TestResult tr8 = tcd.getTestResultFailed(PORTALCONTEXT_GETSUPPORTEDPORTLETMODES3);
+      /* TODO: implement test */
+
+      /* TestCase: PortalContext_getSupportedPortletModes4 */
+      /* Details: "The Enumeration returned must contain the help mode" */
+      TestResult tr9 = tcd.getTestResultFailed(PORTALCONTEXT_GETSUPPORTEDPORTLETMODES4);
+      /* TODO: implement test */
+
+      /* TestCase: PortalContext_getSupportedWindowStates1 */
+      /* Details: "Returns an java.util.Enumeration<WindowState> containing all supported window states" */
+      TestResult tr10 = tcd.getTestResultFailed(PORTALCONTEXT_GETSUPPORTEDWINDOWSTATES1);
+      /* TODO: implement test */
+
+      /* TestCase: PortalContext_getSupportedWindowStates2 */
+      /* Details: "The Enumeration returned must contain the maximized state" */
+      TestResult tr11 = tcd.getTestResultFailed(PORTALCONTEXT_GETSUPPORTEDWINDOWSTATES2);
+      /* TODO: implement test */
+
+      /* TestCase: PortalContext_getSupportedWindowStates3 */
+      /* Details: "The Enumeration returned must contain the minimized state" */
+      TestResult tr12 = tcd.getTestResultFailed(PORTALCONTEXT_GETSUPPORTEDWINDOWSTATES3);
+      /* TODO: implement test */
+
+      /* TestCase: PortalContext_getSupportedWindowStates4 */
+      /* Details: "The Enumeration returned must contain the normal state" */
+      TestResult tr13 = tcd.getTestResultFailed(PORTALCONTEXT_GETSUPPORTEDWINDOWSTATES4);
+      /* TODO: implement test */
+
+      /* TestCase: PortalContext_getPortalInfo1 */
+      /* Details: "Returns a String containing information about the portal" */
+      TestResult tr14 = tcd.getTestResultFailed(PORTALCONTEXT_GETPORTALINFO1);
+      /* TODO: implement test */
+
+      /* TestCase: PortalContext_getPortalInfo2 */
+      /* Details: "The returned string is of the form \"([^ ]+)/([^ ]+) *(.*)\", where $1 is the portal name, $2 is the version, and $3 is optional additional information" */
+      TestResult tr15 = tcd.getTestResultFailed(PORTALCONTEXT_GETPORTALINFO2);
+      /* TODO: implement test */
+
+      /* TestCase: PortalContext_getPortalInfo3 */
+      /* Details: "The returned string contains the portal name" */
+      TestResult tr16 = tcd.getTestResultFailed(PORTALCONTEXT_GETPORTALINFO3);
+      /* TODO: implement test */
+
+      /* TestCase: PortalContext_getPortalInfo4 */
+      /* Details: "The returned string contains the portal version" */
+      TestResult tr17 = tcd.getTestResultFailed(PORTALCONTEXT_GETPORTALINFO4);
+      /* TODO: implement test */
+
+      /* TestCase: PortalContext_getPortalInfo5 */
+      /* Details: "The returned string may not be null" */
+      TestResult tr18 = tcd.getTestResultFailed(PORTALCONTEXT_GETPORTALINFO5);
+      /* TODO: implement test */
+
+
+
+      // Write the results to the output stream
+
+      tr0.writeTo(writer);
+      tr1.writeTo(writer);
+      tr2.writeTo(writer);
+      tr3.writeTo(writer);
+      tr4.writeTo(writer);
+      tr5.writeTo(writer);
+      tr6.writeTo(writer);
+      tr7.writeTo(writer);
+      tr8.writeTo(writer);
+      tr9.writeTo(writer);
+      tr10.writeTo(writer);
+      tr11.writeTo(writer);
+      tr12.writeTo(writer);
+      tr13.writeTo(writer);
+      tr14.writeTo(writer);
+      tr15.writeTo(writer);
+      tr16.writeTo(writer);
+      tr17.writeTo(writer);
+      tr18.writeTo(writer);
+
+
+   }
+
+}
+

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd830576/portlet-tck_3.0/V2EnvironmentTests/src/main/java/javax/portlet/tck/EnvironmentTests/portlets/V2EnvironmentTests_PortletContext.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2EnvironmentTests/src/main/java/javax/portlet/tck/EnvironmentTests/portlets/V2EnvironmentTests_PortletContext.java b/portlet-tck_3.0/V2EnvironmentTests/src/main/java/javax/portlet/tck/EnvironmentTests/portlets/V2EnvironmentTests_PortletContext.java
new file mode 100644
index 0000000..085cdc0
--- /dev/null
+++ b/portlet-tck_3.0/V2EnvironmentTests/src/main/java/javax/portlet/tck/EnvironmentTests/portlets/V2EnvironmentTests_PortletContext.java
@@ -0,0 +1,417 @@
+/*  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.EnvironmentTests.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 V2EnvironmentTests_PortletContext implements Portlet {
+   private static final String LOG_CLASS = 
+         V2EnvironmentTests_PortletContext.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(portletConfig.getPortletContext().getClass());
+
+      // Create result objects for the tests
+
+      /* TestCase: PortletContext_getServerInfo */
+      /* Details: "" */
+      TestResult tr0 = tcd.getTestResultFailed(PORTLETCONTEXT_GETSERVERINFO);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getServerInfo1 */
+      /* Details: "Returns a String containing information about the portlet container" */
+      TestResult tr1 = tcd.getTestResultFailed(PORTLETCONTEXT_GETSERVERINFO1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getServerInfo2 */
+      /* Details: "The returned string is of the form \"([^ ]+)/([^ ]+) *(.*)\", where $1 is the portal name, $2 is the version, and $3 is optional additional information" */
+      TestResult tr2 = tcd.getTestResultFailed(PORTLETCONTEXT_GETSERVERINFO2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getServerInfo3 */
+      /* Details: "The returned string contains the container name" */
+      TestResult tr3 = tcd.getTestResultFailed(PORTLETCONTEXT_GETSERVERINFO3);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getServerInfo4 */
+      /* Details: "The returned string contains the container version" */
+      TestResult tr4 = tcd.getTestResultFailed(PORTLETCONTEXT_GETSERVERINFO4);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getServerInfo5 */
+      /* Details: "The returned string may not be null" */
+      TestResult tr5 = tcd.getTestResultFailed(PORTLETCONTEXT_GETSERVERINFO5);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getRequestDispatcher1 */
+      /* Details: "Returns a PortletRequestDispatcher for the specified path" */
+      TestResult tr6 = tcd.getTestResultFailed(PORTLETCONTEXT_GETREQUESTDISPATCHER1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getRequestDispatcher2 */
+      /* Details: "Returns null if the specified path does not begin with \"/\"" */
+      TestResult tr7 = tcd.getTestResultFailed(PORTLETCONTEXT_GETREQUESTDISPATCHER2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getRequestDispatcher3 */
+      /* Details: "Returns null if any other error occurs" */
+      TestResult tr8 = tcd.getTestResultFailed(PORTLETCONTEXT_GETREQUESTDISPATCHER3);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getNamedDispatcher1 */
+      /* Details: "Returns a PortletRequestDispatcher for the specified servlet name" */
+      TestResult tr9 = tcd.getTestResultFailed(PORTLETCONTEXT_GETNAMEDDISPATCHER1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getNamedDispatcher2 */
+      /* Details: "Returns null if an error occurs" */
+      TestResult tr10 = tcd.getTestResultFailed(PORTLETCONTEXT_GETNAMEDDISPATCHER2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getResourceAsStream1 */
+      /* Details: "Returns a java.io.InputStream for the resource at the specified path" */
+      TestResult tr11 = tcd.getTestResultFailed(PORTLETCONTEXT_GETRESOURCEASSTREAM1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getResourceAsStream2 */
+      /* Details: "Protected resources can be accessed by prefixing the path with \"/WEB-INF/\"" */
+      TestResult tr12 = tcd.getTestResultFailed(PORTLETCONTEXT_GETRESOURCEASSTREAM2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getResourceAsStream3 */
+      /* Details: "Returns null if no resource exists at the specified path" */
+      TestResult tr13 = tcd.getTestResultFailed(PORTLETCONTEXT_GETRESOURCEASSTREAM3);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getMajorVersion */
+      /* Details: "Returns the major version of the portlet API supported by the container " */
+      TestResult tr14 = tcd.getTestResultFailed(PORTLETCONTEXT_GETMAJORVERSION);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getMinorVersion */
+      /* Details: "Returns the minor version of the portlet API supported by the container" */
+      TestResult tr15 = tcd.getTestResultFailed(PORTLETCONTEXT_GETMINORVERSION);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getMimeType1 */
+      /* Details: "Returns a String containing the MIME type of the specified file name" */
+      TestResult tr16 = tcd.getTestResultFailed(PORTLETCONTEXT_GETMIMETYPE1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getMimeType2 */
+      /* Details: "Returns \"text/html\" for an HTML file with the approriate <mime-mapping> element in web.xml " */
+      TestResult tr17 = tcd.getTestResultFailed(PORTLETCONTEXT_GETMIMETYPE2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getMimeType3 */
+      /* Details: "Returns \"image/gif\" for an image file with the approriate <mime-mapping> element in web.xml" */
+      TestResult tr18 = tcd.getTestResultFailed(PORTLETCONTEXT_GETMIMETYPE3);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getMimeType4 */
+      /* Details: "Returns null if the MIME type cannot be determined" */
+      TestResult tr19 = tcd.getTestResultFailed(PORTLETCONTEXT_GETMIMETYPE4);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getMimeType5 */
+      /* Details: "Returns null if the file does not exist" */
+      TestResult tr20 = tcd.getTestResultFailed(PORTLETCONTEXT_GETMIMETYPE5);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getRealPath1 */
+      /* Details: "Returns a String containing the OS-specific real path for the given virtual path" */
+      TestResult tr21 = tcd.getTestResultFailed(PORTLETCONTEXT_GETREALPATH1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getRealPath2 */
+      /* Details: "Returns null if the file does not exist" */
+      TestResult tr22 = tcd.getTestResultFailed(PORTLETCONTEXT_GETREALPATH2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getRealPath3 */
+      /* Details: "Returns null if the transformation cannot be performed" */
+      TestResult tr23 = tcd.getTestResultFailed(PORTLETCONTEXT_GETREALPATH3);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getResourcePaths1 */
+      /* Details: "Returns a java.util.Set<java.lang.String> containing all the paths to resources within the web application longest sub-path of which matches the supplied path argument  " */
+      TestResult tr24 = tcd.getTestResultFailed(PORTLETCONTEXT_GETRESOURCEPATHS1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getResourcePaths2 */
+      /* Details: "A path indicating a file does not end with a slash (/)" */
+      TestResult tr25 = tcd.getTestResultFailed(PORTLETCONTEXT_GETRESOURCEPATHS2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getResourcePaths3 */
+      /* Details: "A path indicating a subdirectory ends with a slash (/)" */
+      TestResult tr26 = tcd.getTestResultFailed(PORTLETCONTEXT_GETRESOURCEPATHS3);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getResourcePaths4 */
+      /* Details: "Returns null if there are no resources in the web application of which the path begins with the supplied path" */
+      TestResult tr27 = tcd.getTestResultFailed(PORTLETCONTEXT_GETRESOURCEPATHS4);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getResource1 */
+      /* Details: "Returns a java.net.URL object that maps to the specified path" */
+      TestResult tr28 = tcd.getTestResultFailed(PORTLETCONTEXT_GETRESOURCE1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getResource2 */
+      /* Details: "Returns null if no resource is mapped to the path" */
+      TestResult tr29 = tcd.getTestResultFailed(PORTLETCONTEXT_GETRESOURCE2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getResource3 */
+      /* Details: "Throws java.net.MalformedURLException if the path does not begin with a slash (/)" */
+      TestResult tr30 = tcd.getTestResultFailed(PORTLETCONTEXT_GETRESOURCE3);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getResource4 */
+      /* Details: "Throws java.net.MalformedURLException if the path is malformed" */
+      TestResult tr31 = tcd.getTestResultFailed(PORTLETCONTEXT_GETRESOURCE4);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getAttribute1 */
+      /* Details: "Returns a java.lang.Object attribute value for the specified name" */
+      TestResult tr32 = tcd.getTestResultFailed(PORTLETCONTEXT_GETATTRIBUTE1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getAttribute2 */
+      /* Details: "Returns null if there is no attribute value for the specified name" */
+      TestResult tr33 = tcd.getTestResultFailed(PORTLETCONTEXT_GETATTRIBUTE2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getAttribute3 */
+      /* Details: "Throws IllegalArgumentException if the name is null" */
+      TestResult tr34 = tcd.getTestResultFailed(PORTLETCONTEXT_GETATTRIBUTE3);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getAttributeNames1 */
+      /* Details: "Returns an java.util.Enumeration<java.lang.String> containing the attribute names in the PortletContext" */
+      TestResult tr35 = tcd.getTestResultFailed(PORTLETCONTEXT_GETATTRIBUTENAMES1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getAttributeNames2 */
+      /* Details: "Returns an empty Enumeration if no attributes are available" */
+      TestResult tr36 = tcd.getTestResultFailed(PORTLETCONTEXT_GETATTRIBUTENAMES2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getInitParameter1 */
+      /* Details: "Returns a java.lang.String PortletContext initialization parameter value for the specified name" */
+      TestResult tr37 = tcd.getTestResultFailed(PORTLETCONTEXT_GETINITPARAMETER1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getInitParameter2 */
+      /* Details: "Returns null if there is no inittialization parameter for the specified name" */
+      TestResult tr38 = tcd.getTestResultFailed(PORTLETCONTEXT_GETINITPARAMETER2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getInitParameter3 */
+      /* Details: "Throws IllegalArgumentException if the name is null" */
+      TestResult tr39 = tcd.getTestResultFailed(PORTLETCONTEXT_GETINITPARAMETER3);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getInitParameterNames1 */
+      /* Details: "Returns an java.util.Enumeration<java.lang.String> containing the InitParameter names in the PortletContext" */
+      TestResult tr40 = tcd.getTestResultFailed(PORTLETCONTEXT_GETINITPARAMETERNAMES1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getInitParameterNames2 */
+      /* Details: "Returns an empty Enumeration if no InitParameters are available" */
+      TestResult tr41 = tcd.getTestResultFailed(PORTLETCONTEXT_GETINITPARAMETERNAMES2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_logA */
+      /* Details: "Writes specified message to a portlet log file" */
+      TestResult tr42 = tcd.getTestResultFailed(PORTLETCONTEXT_LOGA);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_logB */
+      /* Details: "Writes specified message and stack trace to a portlet log file" */
+      TestResult tr43 = tcd.getTestResultFailed(PORTLETCONTEXT_LOGB);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_removeAttribute1 */
+      /* Details: "Removes the attribute with the specified nale" */
+      TestResult tr44 = tcd.getTestResultFailed(PORTLETCONTEXT_REMOVEATTRIBUTE1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_removeAttribute2 */
+      /* Details: "Throws IllegalArgumentException if the name is null" */
+      TestResult tr45 = tcd.getTestResultFailed(PORTLETCONTEXT_REMOVEATTRIBUTE2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_setAttribute1 */
+      /* Details: "Sets an attribute for the specified name in the portlet context" */
+      TestResult tr46 = tcd.getTestResultFailed(PORTLETCONTEXT_SETATTRIBUTE1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_setAttribute2 */
+      /* Details: "Any existing attribute for the specified name is removed" */
+      TestResult tr47 = tcd.getTestResultFailed(PORTLETCONTEXT_SETATTRIBUTE2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_setAttribute3 */
+      /* Details: "If the specified name is null, the attribute is removed" */
+      TestResult tr48 = tcd.getTestResultFailed(PORTLETCONTEXT_SETATTRIBUTE3);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_setAttribute4 */
+      /* Details: "Throws IllegalArgumentException if the name is null" */
+      TestResult tr49 = tcd.getTestResultFailed(PORTLETCONTEXT_SETATTRIBUTE4);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getPortletContextName1 */
+      /* Details: "Returns the portlet application name" */
+      TestResult tr50 = tcd.getTestResultFailed(PORTLETCONTEXT_GETPORTLETCONTEXTNAME1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getPortletContextName2 */
+      /* Details: "The name is as specified in web.xml the <display-name> element" */
+      TestResult tr51 = tcd.getTestResultFailed(PORTLETCONTEXT_GETPORTLETCONTEXTNAME2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getPortletContextName3 */
+      /* Details: "Returns null if no web.xml <display-name> element is defined" */
+      TestResult tr52 = tcd.getTestResultFailed(PORTLETCONTEXT_GETPORTLETCONTEXTNAME3);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getContainerRuntimeOptions1 */
+      /* Details: "Returns an java.util.Enumeration<java.lang.String> containing the available runtime option names" */
+      TestResult tr53 = tcd.getTestResultFailed(PORTLETCONTEXT_GETCONTAINERRUNTIMEOPTIONS1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletContext_getContainerRuntimeOptions2 */
+      /* Details: "Returns an empty Enumeration if no runtime options are available" */
+      TestResult tr54 = tcd.getTestResultFailed(PORTLETCONTEXT_GETCONTAINERRUNTIMEOPTIONS2);
+      /* TODO: implement test */
+
+
+
+      // Write the results to the output stream
+
+      tr0.writeTo(writer);
+      tr1.writeTo(writer);
+      tr2.writeTo(writer);
+      tr3.writeTo(writer);
+      tr4.writeTo(writer);
+      tr5.writeTo(writer);
+      tr6.writeTo(writer);
+      tr7.writeTo(writer);
+      tr8.writeTo(writer);
+      tr9.writeTo(writer);
+      tr10.writeTo(writer);
+      tr11.writeTo(writer);
+      tr12.writeTo(writer);
+      tr13.writeTo(writer);
+      tr14.writeTo(writer);
+      tr15.writeTo(writer);
+      tr16.writeTo(writer);
+      tr17.writeTo(writer);
+      tr18.writeTo(writer);
+      tr19.writeTo(writer);
+      tr20.writeTo(writer);
+      tr21.writeTo(writer);
+      tr22.writeTo(writer);
+      tr23.writeTo(writer);
+      tr24.writeTo(writer);
+      tr25.writeTo(writer);
+      tr26.writeTo(writer);
+      tr27.writeTo(writer);
+      tr28.writeTo(writer);
+      tr29.writeTo(writer);
+      tr30.writeTo(writer);
+      tr31.writeTo(writer);
+      tr32.writeTo(writer);
+      tr33.writeTo(writer);
+      tr34.writeTo(writer);
+      tr35.writeTo(writer);
+      tr36.writeTo(writer);
+      tr37.writeTo(writer);
+      tr38.writeTo(writer);
+      tr39.writeTo(writer);
+      tr40.writeTo(writer);
+      tr41.writeTo(writer);
+      tr42.writeTo(writer);
+      tr43.writeTo(writer);
+      tr44.writeTo(writer);
+      tr45.writeTo(writer);
+      tr46.writeTo(writer);
+      tr47.writeTo(writer);
+      tr48.writeTo(writer);
+      tr49.writeTo(writer);
+      tr50.writeTo(writer);
+      tr51.writeTo(writer);
+      tr52.writeTo(writer);
+      tr53.writeTo(writer);
+      tr54.writeTo(writer);
+
+
+   }
+
+}
+

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd830576/portlet-tck_3.0/V2EnvironmentTests/src/main/java/javax/portlet/tck/EnvironmentTests/portlets/V2EnvironmentTests_PortletPreferences.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2EnvironmentTests/src/main/java/javax/portlet/tck/EnvironmentTests/portlets/V2EnvironmentTests_PortletPreferences.java b/portlet-tck_3.0/V2EnvironmentTests/src/main/java/javax/portlet/tck/EnvironmentTests/portlets/V2EnvironmentTests_PortletPreferences.java
new file mode 100644
index 0000000..2578f32
--- /dev/null
+++ b/portlet-tck_3.0/V2EnvironmentTests/src/main/java/javax/portlet/tck/EnvironmentTests/portlets/V2EnvironmentTests_PortletPreferences.java
@@ -0,0 +1,309 @@
+/*  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.EnvironmentTests.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 V2EnvironmentTests_PortletPreferences implements Portlet {
+   private static final String LOG_CLASS = 
+         V2EnvironmentTests_PortletPreferences.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(renderRequest.getPreferences().getClass());
+
+      // Create result objects for the tests
+
+      /* TestCase: PortletPreferences_isReadOnly1 */
+      /* Details: "Returns true if the preference specified by the key is defined to be read-only in the deployment descriptor" */
+      TestResult tr0 = tcd.getTestResultFailed(PORTLETPREFERENCES_ISREADONLY1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_isReadOnly2 */
+      /* Details: "Returns false if the preference specified by the key is not defined to be read-only in the deployment descriptor" */
+      TestResult tr1 = tcd.getTestResultFailed(PORTLETPREFERENCES_ISREADONLY2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_isReadOnly3 */
+      /* Details: "Returns false if the preference specified by the key is undefined" */
+      TestResult tr2 = tcd.getTestResultFailed(PORTLETPREFERENCES_ISREADONLY3);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_isReadOnly4 */
+      /* Details: "Throws IllegalArgumentException if the key is null" */
+      TestResult tr3 = tcd.getTestResultFailed(PORTLETPREFERENCES_ISREADONLY4);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_getValue1 */
+      /* Details: "Returns the first String value for the specified key" */
+      TestResult tr4 = tcd.getTestResultFailed(PORTLETPREFERENCES_GETVALUE1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_getValue2 */
+      /* Details: "Returns the specified default value if there is no value for the specified key " */
+      TestResult tr5 = tcd.getTestResultFailed(PORTLETPREFERENCES_GETVALUE2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_getValue3 */
+      /* Details: "Returns the specified default value if the existing value for the specified key is null " */
+      TestResult tr6 = tcd.getTestResultFailed(PORTLETPREFERENCES_GETVALUE3);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_getValue4 */
+      /* Details: "Throws IllegalArgumentException if the key is null" */
+      TestResult tr7 = tcd.getTestResultFailed(PORTLETPREFERENCES_GETVALUE4);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_getValues1 */
+      /* Details: "Returns the values String[] for the specified key" */
+      TestResult tr8 = tcd.getTestResultFailed(PORTLETPREFERENCES_GETVALUES1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_getValues2 */
+      /* Details: "Returns the specified default String[] if there is no Values for the specified key " */
+      TestResult tr9 = tcd.getTestResultFailed(PORTLETPREFERENCES_GETVALUES2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_getValues3 */
+      /* Details: "Returns the specified default String[] if the existing String[] for the specified key is null " */
+      TestResult tr10 = tcd.getTestResultFailed(PORTLETPREFERENCES_GETVALUES3);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_getValues4 */
+      /* Details: "Throws IllegalArgumentException if the key is null" */
+      TestResult tr11 = tcd.getTestResultFailed(PORTLETPREFERENCES_GETVALUES4);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_setValue1 */
+      /* Details: "Sets the specified value for the specified key" */
+      TestResult tr12 = tcd.getTestResultFailed(PORTLETPREFERENCES_SETVALUE1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_setValue2 */
+      /* Details: "Any existing String or String[] value for the specified key is replaced" */
+      TestResult tr13 = tcd.getTestResultFailed(PORTLETPREFERENCES_SETVALUE2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_setValue3 */
+      /* Details: "The value may be set to null" */
+      TestResult tr14 = tcd.getTestResultFailed(PORTLETPREFERENCES_SETVALUE3);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_setValue4 */
+      /* Details: "Throws ReadOnlyException if the preference cannot be modified for this request" */
+      TestResult tr15 = tcd.getTestResultFailed(PORTLETPREFERENCES_SETVALUE4);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_setValue5 */
+      /* Details: "Throws IllegalArgumentException if the key is null" */
+      TestResult tr16 = tcd.getTestResultFailed(PORTLETPREFERENCES_SETVALUE5);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_setValues1 */
+      /* Details: "Sets the specified value array for the specified key" */
+      TestResult tr17 = tcd.getTestResultFailed(PORTLETPREFERENCES_SETVALUES1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_setValues2 */
+      /* Details: "Any existing String or String[] Values for the specified key is replaced" */
+      TestResult tr18 = tcd.getTestResultFailed(PORTLETPREFERENCES_SETVALUES2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_setValues3 */
+      /* Details: "The value array may be set to null" */
+      TestResult tr19 = tcd.getTestResultFailed(PORTLETPREFERENCES_SETVALUES3);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_setValues4 */
+      /* Details: "The value array may contain null members" */
+      TestResult tr20 = tcd.getTestResultFailed(PORTLETPREFERENCES_SETVALUES4);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_setValues5 */
+      /* Details: "Throws ReadOnlyException if the preference cannot be modified for this request" */
+      TestResult tr21 = tcd.getTestResultFailed(PORTLETPREFERENCES_SETVALUES5);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_setValues6 */
+      /* Details: "Throws IllegalArgumentException if the key is null" */
+      TestResult tr22 = tcd.getTestResultFailed(PORTLETPREFERENCES_SETVALUES6);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_getNames1 */
+      /* Details: "Returns an java.util.Enumeration<java.lang.String> containing the available preference keys" */
+      TestResult tr23 = tcd.getTestResultFailed(PORTLETPREFERENCES_GETNAMES1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_getNames2 */
+      /* Details: "Returns an empty Enumeration if no preference keys are available" */
+      TestResult tr24 = tcd.getTestResultFailed(PORTLETPREFERENCES_GETNAMES2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_getMap1 */
+      /* Details: "Returns an java.util.Map<java.lang.String> containing the available preferences" */
+      TestResult tr25 = tcd.getTestResultFailed(PORTLETPREFERENCES_GETMAP1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_getMap2 */
+      /* Details: "Returns an empty Map if no preferences are available" */
+      TestResult tr26 = tcd.getTestResultFailed(PORTLETPREFERENCES_GETMAP2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_reset1 */
+      /* Details: "Removes the value associated with the specified key" */
+      TestResult tr27 = tcd.getTestResultFailed(PORTLETPREFERENCES_RESET1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_reset2 */
+      /* Details: "Throws ReadOnlyException if the preference cannot be modified for this request" */
+      TestResult tr28 = tcd.getTestResultFailed(PORTLETPREFERENCES_RESET2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_reset3 */
+      /* Details: "Throws IllegalArgumentException if the key is null" */
+      TestResult tr29 = tcd.getTestResultFailed(PORTLETPREFERENCES_RESET3);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_store1 */
+      /* Details: "Commits changes made to the preferences to the persistent store " */
+      TestResult tr30 = tcd.getTestResultFailed(PORTLETPREFERENCES_STORE1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_store2 */
+      /* Details: "If the store() method is not called, changes made are discarded" */
+      TestResult tr31 = tcd.getTestResultFailed(PORTLETPREFERENCES_STORE2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_store3 */
+      /* Details: "If a validator is defined, it is called before the actual store is performed" */
+      TestResult tr32 = tcd.getTestResultFailed(PORTLETPREFERENCES_STORE3);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_store4 */
+      /* Details: "If validation fails, the store is not performed" */
+      TestResult tr33 = tcd.getTestResultFailed(PORTLETPREFERENCES_STORE4);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_store5 */
+      /* Details: "Throws IllegalStateException if store() is called in the render method  " */
+      TestResult tr34 = tcd.getTestResultFailed(PORTLETPREFERENCES_STORE5);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_store6 */
+      /* Details: "Throws ValidatorException if the validation performed by the associated validator fails " */
+      TestResult tr35 = tcd.getTestResultFailed(PORTLETPREFERENCES_STORE6);
+      /* TODO: implement test */
+
+      /* TestCase: PortletPreferences_store7 */
+      /* Details: "Throws IOException if an IO error occurs " */
+      TestResult tr36 = tcd.getTestResultFailed(PORTLETPREFERENCES_STORE7);
+      /* TODO: implement test */
+
+
+
+      // Write the results to the output stream
+
+      tr0.writeTo(writer);
+      tr1.writeTo(writer);
+      tr2.writeTo(writer);
+      tr3.writeTo(writer);
+      tr4.writeTo(writer);
+      tr5.writeTo(writer);
+      tr6.writeTo(writer);
+      tr7.writeTo(writer);
+      tr8.writeTo(writer);
+      tr9.writeTo(writer);
+      tr10.writeTo(writer);
+      tr11.writeTo(writer);
+      tr12.writeTo(writer);
+      tr13.writeTo(writer);
+      tr14.writeTo(writer);
+      tr15.writeTo(writer);
+      tr16.writeTo(writer);
+      tr17.writeTo(writer);
+      tr18.writeTo(writer);
+      tr19.writeTo(writer);
+      tr20.writeTo(writer);
+      tr21.writeTo(writer);
+      tr22.writeTo(writer);
+      tr23.writeTo(writer);
+      tr24.writeTo(writer);
+      tr25.writeTo(writer);
+      tr26.writeTo(writer);
+      tr27.writeTo(writer);
+      tr28.writeTo(writer);
+      tr29.writeTo(writer);
+      tr30.writeTo(writer);
+      tr31.writeTo(writer);
+      tr32.writeTo(writer);
+      tr33.writeTo(writer);
+      tr34.writeTo(writer);
+      tr35.writeTo(writer);
+      tr36.writeTo(writer);
+
+
+   }
+
+}
+

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd830576/portlet-tck_3.0/V2EnvironmentTests/src/main/java/javax/portlet/tck/EnvironmentTests/portlets/V2EnvironmentTests_PortletRequestDispatcher.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2EnvironmentTests/src/main/java/javax/portlet/tck/EnvironmentTests/portlets/V2EnvironmentTests_PortletRequestDispatcher.java b/portlet-tck_3.0/V2EnvironmentTests/src/main/java/javax/portlet/tck/EnvironmentTests/portlets/V2EnvironmentTests_PortletRequestDispatcher.java
new file mode 100644
index 0000000..ec523c7
--- /dev/null
+++ b/portlet-tck_3.0/V2EnvironmentTests/src/main/java/javax/portlet/tck/EnvironmentTests/portlets/V2EnvironmentTests_PortletRequestDispatcher.java
@@ -0,0 +1,165 @@
+/*  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.EnvironmentTests.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 V2EnvironmentTests_PortletRequestDispatcher implements Portlet {
+   private static final String LOG_CLASS = 
+         V2EnvironmentTests_PortletRequestDispatcher.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(portletConfig.getPortletContext().getRequestDispatcher("/generated-resources/xml/module/tck-V2EnvironmentTests-tests.xml").getClass());
+
+      // Create result objects for the tests
+
+      /* TestCase: PortletRequestDispatcher_includeA1 */
+      /* Details: "Includes the content of a JSP page in the response" */
+      TestResult tr0 = tcd.getTestResultFailed(PORTLETREQUESTDISPATCHER_INCLUDEA1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletRequestDispatcher_includeA2 */
+      /* Details: "Includes the content of a HTML Page in the response" */
+      TestResult tr1 = tcd.getTestResultFailed(PORTLETREQUESTDISPATCHER_INCLUDEA2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletRequestDispatcher_includeA3 */
+      /* Details: "The included servlet cannot change the status code. The attempt is ignored" */
+      TestResult tr2 = tcd.getTestResultFailed(PORTLETREQUESTDISPATCHER_INCLUDEA3);
+      /* TODO: implement test */
+
+      /* TestCase: PortletRequestDispatcher_includeA4 */
+      /* Details: "The included servlet cannot set the headers. The Attempt is ignored" */
+      TestResult tr3 = tcd.getTestResultFailed(PORTLETREQUESTDISPATCHER_INCLUDEA4);
+      /* TODO: implement test */
+
+      /* TestCase: PortletRequestDispatcher_includeB1 */
+      /* Details: "Includes the content of a JSP page in the response" */
+      TestResult tr4 = tcd.getTestResultFailed(PORTLETREQUESTDISPATCHER_INCLUDEB1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletRequestDispatcher_includeB2 */
+      /* Details: "Includes the content of a HTML Page in the response" */
+      TestResult tr5 = tcd.getTestResultFailed(PORTLETREQUESTDISPATCHER_INCLUDEB2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletRequestDispatcher_includeB3 */
+      /* Details: "The included servlet cannot change the status code. The attempt is ignored" */
+      TestResult tr6 = tcd.getTestResultFailed(PORTLETREQUESTDISPATCHER_INCLUDEB3);
+      /* TODO: implement test */
+
+      /* TestCase: PortletRequestDispatcher_includeB4 */
+      /* Details: "The included servlet cannot set the headers. The attempt is ignored" */
+      TestResult tr7 = tcd.getTestResultFailed(PORTLETREQUESTDISPATCHER_INCLUDEB4);
+      /* TODO: implement test */
+
+      /* TestCase: PortletRequestDispatcher_forward1 */
+      /* Details: "Can forward to a JSP page to create the response" */
+      TestResult tr8 = tcd.getTestResultFailed(PORTLETREQUESTDISPATCHER_FORWARD1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletRequestDispatcher_forward2 */
+      /* Details: "Can forward to a HTML Page to create the response" */
+      TestResult tr9 = tcd.getTestResultFailed(PORTLETREQUESTDISPATCHER_FORWARD2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletRequestDispatcher_forward3 */
+      /* Details: "Throws IllegalStateException if the response was already committed" */
+      TestResult tr10 = tcd.getTestResultFailed(PORTLETREQUESTDISPATCHER_FORWARD3);
+      /* TODO: implement test */
+
+      /* TestCase: PortletRequestDispatcher_forward4 */
+      /* Details: "Throws PortletException if the forwarded servlet throws any excpetion other than IOException or a runtime exception " */
+      TestResult tr11 = tcd.getTestResultFailed(PORTLETREQUESTDISPATCHER_FORWARD4);
+      /* TODO: implement test */
+
+      /* TestCase: PortletRequestDispatcher_forward5 */
+      /* Details: "Throws IOException if the forwarded servlet an IOException" */
+      TestResult tr12 = tcd.getTestResultFailed(PORTLETREQUESTDISPATCHER_FORWARD5);
+      /* 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);
+
+
+   }
+
+}
+

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd830576/portlet-tck_3.0/V2EnvironmentTests/src/main/java/javax/portlet/tck/EnvironmentTests/portlets/V2EnvironmentTests_PortletSession.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2EnvironmentTests/src/main/java/javax/portlet/tck/EnvironmentTests/portlets/V2EnvironmentTests_PortletSession.java b/portlet-tck_3.0/V2EnvironmentTests/src/main/java/javax/portlet/tck/EnvironmentTests/portlets/V2EnvironmentTests_PortletSession.java
new file mode 100644
index 0000000..bae25bb
--- /dev/null
+++ b/portlet-tck_3.0/V2EnvironmentTests/src/main/java/javax/portlet/tck/EnvironmentTests/portlets/V2EnvironmentTests_PortletSession.java
@@ -0,0 +1,415 @@
+/*  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.EnvironmentTests.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 V2EnvironmentTests_PortletSession implements Portlet {
+   private static final String LOG_CLASS = 
+         V2EnvironmentTests_PortletSession.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(renderRequest.getPortletSession().getClass());
+
+      // Create result objects for the tests
+
+      /* TestCase: PortletSession_fieldAPPLICATION_SCOPE */
+      /* Details: "Has int field APPLICATION_SCOPE with value of 0x01 " */
+      TestResult tr0 = tcd.getTestResultFailed(PORTLETSESSION_FIELDAPPLICATION_SCOPE);
+      {
+         tr0.setTcSuccess(cc.hasField("APPLICATION_SCOPE", "0x01"));
+      }
+
+      /* TestCase: PortletSession_fieldPORTLET_SCOPE */
+      /* Details: "Has int field PORTLET_SCOPE with value of 0x02 " */
+      TestResult tr1 = tcd.getTestResultFailed(PORTLETSESSION_FIELDPORTLET_SCOPE);
+      {
+         tr1.setTcSuccess(cc.hasField("PORTLET_SCOPE", "0x02"));
+      }
+
+      /* TestCase: PortletSession_getAttributeA1 */
+      /* Details: "Returns a java.lang.Object for the specified attribute name in the PORTLET_SCOPE" */
+      TestResult tr2 = tcd.getTestResultFailed(PORTLETSESSION_GETATTRIBUTEA1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_getAttributeA2 */
+      /* Details: "Returns null if no attribute with the specified name exists in the PORTLET_SCOPE" */
+      TestResult tr3 = tcd.getTestResultFailed(PORTLETSESSION_GETATTRIBUTEA2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_getAttributeA3 */
+      /* Details: "Throws IllegalArgumentException if the name is null" */
+      TestResult tr4 = tcd.getTestResultFailed(PORTLETSESSION_GETATTRIBUTEA3);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_getAttributeA4 */
+      /* Details: "Throws IllegalStateException if the method is called on an invalidated session" */
+      TestResult tr5 = tcd.getTestResultFailed(PORTLETSESSION_GETATTRIBUTEA4);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_getAttributeB1 */
+      /* Details: "Returns a java.lang.Object for the specified attribute name in the specified scope" */
+      TestResult tr6 = tcd.getTestResultFailed(PORTLETSESSION_GETATTRIBUTEB1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_getAttributeB2 */
+      /* Details: "Returns null if no attribute with the specified name exists in the specified scope" */
+      TestResult tr7 = tcd.getTestResultFailed(PORTLETSESSION_GETATTRIBUTEB2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_getAttributeB3 */
+      /* Details: "Throws IllegalArgumentException if the name is null" */
+      TestResult tr8 = tcd.getTestResultFailed(PORTLETSESSION_GETATTRIBUTEB3);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_getAttributeB4 */
+      /* Details: "Throws IllegalStateException if the method is called on an invalidated session" */
+      TestResult tr9 = tcd.getTestResultFailed(PORTLETSESSION_GETATTRIBUTEB4);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_getAttributeNamesA1 */
+      /* Details: "Returns a java.util.Enumeration<java.lang.String> of the available attribute names in the PORTLET_SCOPE" */
+      TestResult tr10 = tcd.getTestResultFailed(PORTLETSESSION_GETATTRIBUTENAMESA1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_getAttributeNamesA2 */
+      /* Details: "Returns an empty Enumeration if there are no attributes available in the PORTLET_SCOPE" */
+      TestResult tr11 = tcd.getTestResultFailed(PORTLETSESSION_GETATTRIBUTENAMESA2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_getAttributeNamesB1 */
+      /* Details: "Returns a java.util.Enumeration<java.lang.String> of the available attribute names in the specified scope" */
+      TestResult tr12 = tcd.getTestResultFailed(PORTLETSESSION_GETATTRIBUTENAMESB1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_getAttributeNamesB2 */
+      /* Details: "Returns an empty Enumeration if there are no attributes available in the specified scope" */
+      TestResult tr13 = tcd.getTestResultFailed(PORTLETSESSION_GETATTRIBUTENAMESB2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_getCreationTime1 */
+      /* Details: "Returns a long containing the time the session was created in milliseconds since 1/1/1970  " */
+      TestResult tr14 = tcd.getTestResultFailed(PORTLETSESSION_GETCREATIONTIME1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_getCreationTime2 */
+      /* Details: "Throws IllegalStateException if this method is called on an invalidated session" */
+      TestResult tr15 = tcd.getTestResultFailed(PORTLETSESSION_GETCREATIONTIME2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_getId */
+      /* Details: "Returns a String containing a unique identifier for the session" */
+      TestResult tr16 = tcd.getTestResultFailed(PORTLETSESSION_GETID);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_getLastAccessedTime */
+      /* Details: "Returns a long containing the last time the session was accessed in milliseconds since 1/1/1970" */
+      TestResult tr17 = tcd.getTestResultFailed(PORTLETSESSION_GETLASTACCESSEDTIME);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_getMaxInactiveInterval */
+      /* Details: "Returns the maximum time interval, in seconds, for which the portlet container keeps this session open between client accesses" */
+      TestResult tr18 = tcd.getTestResultFailed(PORTLETSESSION_GETMAXINACTIVEINTERVAL);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_invalidate1 */
+      /* Details: "Invalidates this session (all scopes) and unbinds any objects bound to it" */
+      TestResult tr19 = tcd.getTestResultFailed(PORTLETSESSION_INVALIDATE1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_invalidate2 */
+      /* Details: "The underlying HTTP session is also invalidated" */
+      TestResult tr20 = tcd.getTestResultFailed(PORTLETSESSION_INVALIDATE2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_isNew1 */
+      /* Details: "Returns true if the client has not yet joined the session" */
+      TestResult tr21 = tcd.getTestResultFailed(PORTLETSESSION_ISNEW1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_isNew2 */
+      /* Details: "Returns false if the client has joined the session" */
+      TestResult tr22 = tcd.getTestResultFailed(PORTLETSESSION_ISNEW2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_removeAttributeA1 */
+      /* Details: "Removes the attribute specified by the name from the PORTLET_SCOPE" */
+      TestResult tr23 = tcd.getTestResultFailed(PORTLETSESSION_REMOVEATTRIBUTEA1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_removeAttributeA2 */
+      /* Details: "If there is no attribute by the specified name in the the PORTLET_SCOPE, this method does nothing" */
+      TestResult tr24 = tcd.getTestResultFailed(PORTLETSESSION_REMOVEATTRIBUTEA2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_removeAttributeA3 */
+      /* Details: "If an attribute was removed, the HttpSessionAttributeListener.attributeRemoved method is called on all HttpSessionAttributeListeners in the web application" */
+      TestResult tr25 = tcd.getTestResultFailed(PORTLETSESSION_REMOVEATTRIBUTEA3);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_removeAttributeA4 */
+      /* Details: "Throws IllegalArgumentException if the name is null" */
+      TestResult tr26 = tcd.getTestResultFailed(PORTLETSESSION_REMOVEATTRIBUTEA4);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_removeAttributeB1 */
+      /* Details: "Removes the attribute specified by the name from the specified scope" */
+      TestResult tr27 = tcd.getTestResultFailed(PORTLETSESSION_REMOVEATTRIBUTEB1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_removeAttributeB2 */
+      /* Details: "If there is no attribute by the specified name in the specified scope, this method does nothing" */
+      TestResult tr28 = tcd.getTestResultFailed(PORTLETSESSION_REMOVEATTRIBUTEB2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_removeAttributeB3 */
+      /* Details: "If an attribute was removed, the HttpSessionAttributeListener.attributeRemoved method is called on all HttpSessionAttributeListeners in the web application" */
+      TestResult tr29 = tcd.getTestResultFailed(PORTLETSESSION_REMOVEATTRIBUTEB3);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_removeAttributeB4 */
+      /* Details: "Throws IllegalArgumentException if the name is null" */
+      TestResult tr30 = tcd.getTestResultFailed(PORTLETSESSION_REMOVEATTRIBUTEB4);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_setAttributeA1 */
+      /* Details: "Stores an attribute object under the specified name in the PORTLET_SCOPE" */
+      TestResult tr31 = tcd.getTestResultFailed(PORTLETSESSION_SETATTRIBUTEA1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_setAttributeA2 */
+      /* Details: "Replaces the attribute by the specified name if the attribute already exists" */
+      TestResult tr32 = tcd.getTestResultFailed(PORTLETSESSION_SETATTRIBUTEA2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_setAttributeA3 */
+      /* Details: "Removes the attribute by the specified name if the object is null" */
+      TestResult tr33 = tcd.getTestResultFailed(PORTLETSESSION_SETATTRIBUTEA3);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_setAttributeA4 */
+      /* Details: "If the attribute object implements HttpSessionBindingListener, its HttpSessionBindingListener.valueBound method is called" */
+      TestResult tr34 = tcd.getTestResultFailed(PORTLETSESSION_SETATTRIBUTEA4);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_setAttributeA5 */
+      /* Details: "If an existing attribute object implements HttpSessionBindingListener and is replaced, its HttpSessionBindingListener.valueUnbound method is called" */
+      TestResult tr35 = tcd.getTestResultFailed(PORTLETSESSION_SETATTRIBUTEA5);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_setAttributeA6 */
+      /* Details: "If an attribute was replaced, the HttpSessionAttributeListener.attributeReplaced method is called on all HttpSessionAttributeListeners in the web application" */
+      TestResult tr36 = tcd.getTestResultFailed(PORTLETSESSION_SETATTRIBUTEA6);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_setAttributeA7 */
+      /* Details: "If a new attribute was added, the HttpSessionAttributeListener.attributeAdded method is called on all HttpSessionAttributeListeners in the web application" */
+      TestResult tr37 = tcd.getTestResultFailed(PORTLETSESSION_SETATTRIBUTEA7);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_setAttributeA8 */
+      /* Details: "Throws IllegalArgumentException if the name is null" */
+      TestResult tr38 = tcd.getTestResultFailed(PORTLETSESSION_SETATTRIBUTEA8);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_setAttributeB1 */
+      /* Details: "Stores an attribute object under the specified name in the specified scope" */
+      TestResult tr39 = tcd.getTestResultFailed(PORTLETSESSION_SETATTRIBUTEB1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_setAttributeB2 */
+      /* Details: "Replaces the attribute by the specified name if the attribute already exists" */
+      TestResult tr40 = tcd.getTestResultFailed(PORTLETSESSION_SETATTRIBUTEB2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_setAttributeB3 */
+      /* Details: "Removes the attribute by the specified name if the object is null" */
+      TestResult tr41 = tcd.getTestResultFailed(PORTLETSESSION_SETATTRIBUTEB3);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_setAttributeB4 */
+      /* Details: "If the attribute object implements HttpSessionBindingListener, its HttpSessionBindingListener.valueBound method is called" */
+      TestResult tr42 = tcd.getTestResultFailed(PORTLETSESSION_SETATTRIBUTEB4);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_setAttributeB5 */
+      /* Details: "If an existing attribute object implements HttpSessionBindingListener and is replaced, its HttpSessionBindingListener.valueUnbound method is called" */
+      TestResult tr43 = tcd.getTestResultFailed(PORTLETSESSION_SETATTRIBUTEB5);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_setAttributeB6 */
+      /* Details: "If an attribute was replaced, the HttpSessionAttributeListener.attributeReplaced method is called on all HttpSessionAttributeListeners in the web application" */
+      TestResult tr44 = tcd.getTestResultFailed(PORTLETSESSION_SETATTRIBUTEB6);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_setAttributeB7 */
+      /* Details: "If a new attribute was added, the HttpSessionAttributeListener.attributeAdded method is called on all HttpSessionAttributeListeners in the web application" */
+      TestResult tr45 = tcd.getTestResultFailed(PORTLETSESSION_SETATTRIBUTEB7);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_setAttributeB8 */
+      /* Details: "Throws IllegalArgumentException if the name is null" */
+      TestResult tr46 = tcd.getTestResultFailed(PORTLETSESSION_SETATTRIBUTEB8);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_setMaxInactiveInterval1 */
+      /* Details: "Specifies the time in seconds between client requests before the portlet contaner invalidates the session" */
+      TestResult tr47 = tcd.getTestResultFailed(PORTLETSESSION_SETMAXINACTIVEINTERVAL1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_setMaxInactiveInterval2 */
+      /* Details: "If the specified time is negative, the session should never timeout" */
+      TestResult tr48 = tcd.getTestResultFailed(PORTLETSESSION_SETMAXINACTIVEINTERVAL2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_getPortletContext */
+      /* Details: "Returns the PortletContext object for this session" */
+      TestResult tr49 = tcd.getTestResultFailed(PORTLETSESSION_GETPORTLETCONTEXT);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_getAttributeMapA1 */
+      /* Details: "Returns an java.util.Map<java.lang.String,java.lang.Object> object for the attributes available in the PORTLET_SCOPE" */
+      TestResult tr50 = tcd.getTestResultFailed(PORTLETSESSION_GETATTRIBUTEMAPA1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_getAttributeMapA2 */
+      /* Details: "Returns an empty map if no attributes exist in the PORTLET_SCOPE" */
+      TestResult tr51 = tcd.getTestResultFailed(PORTLETSESSION_GETATTRIBUTEMAPA2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_getAttributeMapB1 */
+      /* Details: "Returns an java.util.Map<java.lang.String,java.lang.Object> object for the attributes available in the PORTLET_SCOPE" */
+      TestResult tr52 = tcd.getTestResultFailed(PORTLETSESSION_GETATTRIBUTEMAPB1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSession_getAttributeMapB2 */
+      /* Details: "Returns an empty map if no attributes exist in the PORTLET_SCOPE" */
+      TestResult tr53 = tcd.getTestResultFailed(PORTLETSESSION_GETATTRIBUTEMAPB2);
+      /* TODO: implement test */
+
+
+
+      // Write the results to the output stream
+
+      tr0.writeTo(writer);
+      tr1.writeTo(writer);
+      tr2.writeTo(writer);
+      tr3.writeTo(writer);
+      tr4.writeTo(writer);
+      tr5.writeTo(writer);
+      tr6.writeTo(writer);
+      tr7.writeTo(writer);
+      tr8.writeTo(writer);
+      tr9.writeTo(writer);
+      tr10.writeTo(writer);
+      tr11.writeTo(writer);
+      tr12.writeTo(writer);
+      tr13.writeTo(writer);
+      tr14.writeTo(writer);
+      tr15.writeTo(writer);
+      tr16.writeTo(writer);
+      tr17.writeTo(writer);
+      tr18.writeTo(writer);
+      tr19.writeTo(writer);
+      tr20.writeTo(writer);
+      tr21.writeTo(writer);
+      tr22.writeTo(writer);
+      tr23.writeTo(writer);
+      tr24.writeTo(writer);
+      tr25.writeTo(writer);
+      tr26.writeTo(writer);
+      tr27.writeTo(writer);
+      tr28.writeTo(writer);
+      tr29.writeTo(writer);
+      tr30.writeTo(writer);
+      tr31.writeTo(writer);
+      tr32.writeTo(writer);
+      tr33.writeTo(writer);
+      tr34.writeTo(writer);
+      tr35.writeTo(writer);
+      tr36.writeTo(writer);
+      tr37.writeTo(writer);
+      tr38.writeTo(writer);
+      tr39.writeTo(writer);
+      tr40.writeTo(writer);
+      tr41.writeTo(writer);
+      tr42.writeTo(writer);
+      tr43.writeTo(writer);
+      tr44.writeTo(writer);
+      tr45.writeTo(writer);
+      tr46.writeTo(writer);
+      tr47.writeTo(writer);
+      tr48.writeTo(writer);
+      tr49.writeTo(writer);
+      tr50.writeTo(writer);
+      tr51.writeTo(writer);
+      tr52.writeTo(writer);
+      tr53.writeTo(writer);
+
+
+   }
+
+}
+

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd830576/portlet-tck_3.0/V2EnvironmentTests/src/main/java/javax/portlet/tck/EnvironmentTests/portlets/V2EnvironmentTests_PortletSessionUtil.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2EnvironmentTests/src/main/java/javax/portlet/tck/EnvironmentTests/portlets/V2EnvironmentTests_PortletSessionUtil.java b/portlet-tck_3.0/V2EnvironmentTests/src/main/java/javax/portlet/tck/EnvironmentTests/portlets/V2EnvironmentTests_PortletSessionUtil.java
new file mode 100644
index 0000000..99b9cac
--- /dev/null
+++ b/portlet-tck_3.0/V2EnvironmentTests/src/main/java/javax/portlet/tck/EnvironmentTests/portlets/V2EnvironmentTests_PortletSessionUtil.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.EnvironmentTests.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 V2EnvironmentTests_PortletSessionUtil implements Portlet {
+   private static final String LOG_CLASS = 
+         V2EnvironmentTests_PortletSessionUtil.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(PortletSessionUtil.class);
+
+      // Create result objects for the tests
+
+      /* TestCase: PortletSessionUtil_decodeAttributeName1 */
+      /* Details: "Returns a String containing the decoded name of the attribute if the input name is an encoded name in PORTLET_SCOPE" */
+      TestResult tr0 = tcd.getTestResultFailed(PORTLETSESSIONUTIL_DECODEATTRIBUTENAME1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSessionUtil_decodeAttributeName2 */
+      /* Details: "Returns a String containing the input name unchanged if the input name is in APPLICATION_SCOPE " */
+      TestResult tr1 = tcd.getTestResultFailed(PORTLETSESSIONUTIL_DECODEATTRIBUTENAME2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSessionUtil_decodeScope1 */
+      /* Details: "Returns the decoded attribute scope for the input encoded attribute name" */
+      TestResult tr2 = tcd.getTestResultFailed(PORTLETSESSIONUTIL_DECODESCOPE1);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSessionUtil_decodeScope2 */
+      /* Details: "Returns PortletSession.APPLICATION_SCOPE if the attribute name is in APPLICATION_SCOPE" */
+      TestResult tr3 = tcd.getTestResultFailed(PORTLETSESSIONUTIL_DECODESCOPE2);
+      /* TODO: implement test */
+
+      /* TestCase: PortletSessionUtil_decodeScope3 */
+      /* Details: "Returns PortletSession.PORTLET_SCOPE if the attribute name is in PORTLET_SCOPE" */
+      TestResult tr4 = tcd.getTestResultFailed(PORTLETSESSIONUTIL_DECODESCOPE3);
+      /* 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);
+
+
+   }
+
+}
+