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

[26/32] git commit: Moved the signature tests to separate modules and implemented more of them.

Moved the signature tests to separate modules and implemented more of them.


Project: http://git-wip-us.apache.org/repos/asf/portals-pluto/repo
Commit: http://git-wip-us.apache.org/repos/asf/portals-pluto/commit/834b222c
Tree: http://git-wip-us.apache.org/repos/asf/portals-pluto/tree/834b222c
Diff: http://git-wip-us.apache.org/repos/asf/portals-pluto/diff/834b222c

Branch: refs/heads/master
Commit: 834b222c7c35c83692a1ef1b39b5ad5f707d784d
Parents: 718e64c
Author: Scott Nicklous <ms...@apache.org>
Authored: Wed Aug 27 18:51:53 2014 +0200
Committer: Scott Nicklous <ms...@apache.org>
Committed: Wed Aug 27 18:51:53 2014 +0200

----------------------------------------------------------------------
 portlet-tck_3.0/V2SigTestsAction/pom.xml        |  127 +
 .../SigTestsAction_ActionRequest_SIGAction.java |  151 +
 ...SigTestsAction_ActionResponse_SIGAction.java |  222 ++
 ...TestsAction_ClientDataRequest_SIGAction.java |  428 +++
 ...SigTestsAction_PortletRequest_SIGAction.java | 1960 ++++++++++++
 ...igTestsAction_PortletResponse_SIGAction.java |  417 +++
 ...estsAction_StateAwareResponse_SIGAction.java |  614 ++++
 .../resources/xml-resources/additionalTCs.xml   |  173 ++
 .../src/main/webapp/WEB-INF/portlet.xml         |  107 +
 .../src/main/webapp/WEB-INF/web.xml             |   23 +
 portlet-tck_3.0/V2SigTestsEnv/pom.xml           |  127 +
 .../SigTestsEnv_CacheControl_SIGRender.java     |  287 ++
 .../SigTestsEnv_EventPortlet_SIGRender.java     |  132 +
 .../SigTestsEnv_GenericPortlet_SIGRender.java   |  769 +++++
 .../SigTestsEnv_PortalContext_SIGRender.java    |  230 ++
 .../SigTestsEnv_PortletConfig_SIGRender.java    |  362 +++
 .../SigTestsEnv_PortletContext_SIGRender.java   |  569 ++++
 .../SigTestsEnv_PortletMode_SIGRender.java      |  206 ++
 ...igTestsEnv_PortletPreferences_SIGRender.java |  318 ++
 ...sEnv_PortletRequestDispatcher_SIGRender.java |  184 ++
 ...igTestsEnv_PortletSessionUtil_SIGRender.java |  164 +
 .../SigTestsEnv_PortletSession_SIGRender.java   |  537 ++++
 ..._PortletURLGenerationListener_SIGRender.java |  179 ++
 .../portlets/SigTestsEnv_Portlet_SIGRender.java |  201 ++
 ...TestsEnv_PreferencesValidator_SIGRender.java |  131 +
 .../SigTestsEnv_ProcessAction_SIGRender.java    |  137 +
 .../SigTestsEnv_ProcessEvent_SIGRender.java     |  159 +
 .../SigTestsEnv_RenderMode_SIGRender.java       |  137 +
 ...stsEnv_ResourceServingPortlet_SIGRender.java |  132 +
 .../SigTestsEnv_WindowState_SIGRender.java      |  206 ++
 .../resources/xml-resources/additionalTCs.xml   |  287 ++
 .../src/main/webapp/WEB-INF/portlet.xml         |  276 ++
 .../src/main/webapp/WEB-INF/web.xml             |   23 +
 portlet-tck_3.0/V2SigTestsEvent/pom.xml         |  127 +
 .../SigTestsEvent_EventRequest_SIGEvent.java    |  149 +
 ...gTestsEvent_EventRequest_SIGEvent_event.java |  163 +
 .../SigTestsEvent_EventResponse_SIGEvent.java   |  133 +
 ...TestsEvent_EventResponse_SIGEvent_event.java |  143 +
 .../portlets/SigTestsEvent_Event_SIGEvent.java  |  159 +
 .../SigTestsEvent_Event_SIGEvent_event.java     |  178 ++
 .../SigTestsEvent_PortletRequest_SIGEvent.java  |  955 ++++++
 ...estsEvent_PortletRequest_SIGEvent_event.java | 1099 +++++++
 .../SigTestsEvent_PortletResponse_SIGEvent.java |  240 ++
 ...stsEvent_PortletResponse_SIGEvent_event.java |  275 ++
 ...gTestsEvent_StateAwareResponse_SIGEvent.java |  330 ++
 ...Event_StateAwareResponse_SIGEvent_event.java |  380 +++
 .../resources/xml-resources/additionalTCs.xml   |  165 +
 .../src/main/webapp/WEB-INF/portlet.xml         |  251 ++
 .../src/main/webapp/WEB-INF/web.xml             |   23 +
 portlet-tck_3.0/V2SigTestsException/pom.xml     |  127 +
 ...stsException_PortletException_SIGRender.java |  155 +
 ...xception_PortletModeException_SIGRender.java |  168 +
 ...tion_PortletSecurityException_SIGRender.java |  145 +
 ...tsException_ReadOnlyException_SIGRender.java |  145 +
 ...xception_UnavailableException_SIGRender.java |  182 ++
 ...sException_ValidatorException_SIGRender.java |  168 +
 ...xception_WindowStateException_SIGRender.java |  168 +
 .../resources/xml-resources/additionalTCs.xml   |   61 +
 .../src/main/webapp/WEB-INF/portlet.xml         |  150 +
 .../src/main/webapp/WEB-INF/web.xml             |   23 +
 portlet-tck_3.0/V2SigTestsFilter/pom.xml        |  127 +
 .../SigTestsFilter_ActionFilter_SIGRender.java  |  140 +
 .../SigTestsFilter_EventFilter_SIGRender.java   |  140 +
 .../SigTestsFilter_FilterChain_SIGRender.java   |  172 +
 .../SigTestsFilter_FilterConfig_SIGRender.java  |  164 +
 .../SigTestsFilter_PortletFilter_SIGRender.java |  154 +
 .../SigTestsFilter_RenderFilter_SIGRender.java  |  140 +
 ...SigTestsFilter_ResourceFilter_SIGRender.java |  140 +
 .../resources/xml-resources/additionalTCs.xml   |   55 +
 .../src/main/webapp/WEB-INF/portlet.xml         |  150 +
 .../src/main/webapp/WEB-INF/web.xml             |   23 +
 portlet-tck_3.0/V2SigTestsRender/pom.xml        |  127 +
 .../SigTestsRender_MimeResponse_SIGRender.java  |  543 ++++
 ...r_PortletRequest$P3PUserInfos_SIGRender.java |  924 ++++++
 ...SigTestsRender_PortletRequest_SIGRender.java | 1097 +++++++
 ...igTestsRender_PortletResponse_SIGRender.java |  271 ++
 .../SigTestsRender_RenderRequest_SIGRender.java |  145 +
 ...SigTestsRender_RenderResponse_SIGRender.java |  184 ++
 .../resources/xml-resources/additionalTCs.xml   |  264 ++
 .../src/main/webapp/WEB-INF/portlet.xml         |  137 +
 .../src/main/webapp/WEB-INF/web.xml             |   23 +
 portlet-tck_3.0/V2SigTestsResource/pom.xml      |  127 +
 ...sResource_ClientDataRequest_SIGResource.java |  291 ++
 ...gTestsResource_MimeResponse_SIGResource.java |  560 ++++
 ...estsResource_PortletRequest_SIGResource.java | 1115 +++++++
 ...stsResource_PortletResponse_SIGResource.java |  287 ++
 ...stsResource_ResourceRequest_SIGResource.java |  276 ++
 ...tsResource_ResourceResponse_SIGResource.java |  281 ++
 .../resources/xml-resources/additionalTCs.xml   |  212 ++
 .../src/main/webapp/WEB-INF/portlet.xml         |  137 +
 .../src/main/webapp/WEB-INF/web.xml             |   23 +
 portlet-tck_3.0/V2SigTestsURL/pom.xml           |  127 +
 .../portlets/SigTestsURL_BaseURL_SIGRender.java |  336 ++
 .../SigTestsURL_PortletURL_SIGRender.java       |  231 ++
 .../SigTestsURL_ResourceURL_SIGRender.java      |  214 ++
 .../resources/xml-resources/additionalTCs.xml   |   65 +
 .../src/main/webapp/WEB-INF/portlet.xml         |   98 +
 .../src/main/webapp/WEB-INF/web.xml             |   23 +
 portlet-tck_3.0/V2SigTestsWrapper/pom.xml       |  127 +
 ...sWrapper_ActionRequestWrapper_SIGRender.java |  367 +++
 ...Wrapper_ActionResponseWrapper_SIGRender.java |  515 +++
 ...tsWrapper_EventRequestWrapper_SIGRender.java |  247 ++
 ...sWrapper_EventResponseWrapper_SIGRender.java |  491 +++
 ...Wrapper_PortletRequestWrapper_SIGRender.java | 1066 +++++++
 ...rapper_PortletResponseWrapper_SIGRender.java |  338 ++
 ...sWrapper_RenderRequestWrapper_SIGRender.java |  225 ++
 ...Wrapper_RenderResponseWrapper_SIGRender.java |  625 ++++
 ...rapper_ResourceRequestWrapper_SIGRender.java |  462 +++
 ...apper_ResourceResponseWrapper_SIGRender.java |  652 ++++
 .../resources/xml-resources/additionalTCs.xml   |  363 +++
 .../src/main/webapp/WEB-INF/portlet.xml         |  189 ++
 .../src/main/webapp/WEB-INF/web.xml             |   23 +
 .../beans/JSR286SignatureTestCaseDetails.java   | 2933 ++++++++++++++++++
 portlet-tck_3.0/deploy/pom.xml                  |   54 +
 portlet-tck_3.0/driver/pom.xml                  |   63 +
 .../main/resources/xml-resources/pageFiles.xml  |    9 +
 .../main/resources/xml-resources/testFiles.xml  |    9 +
 portlet-tck_3.0/pom.xml                         |    9 +
 118 files changed, 34527 insertions(+)
----------------------------------------------------------------------


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

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/834b222c/portlet-tck_3.0/V2SigTestsAction/src/main/java/javax/portlet/tck/portlets/SigTestsAction_ActionRequest_SIGAction.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2SigTestsAction/src/main/java/javax/portlet/tck/portlets/SigTestsAction_ActionRequest_SIGAction.java b/portlet-tck_3.0/V2SigTestsAction/src/main/java/javax/portlet/tck/portlets/SigTestsAction_ActionRequest_SIGAction.java
new file mode 100644
index 0000000..ba9c057
--- /dev/null
+++ b/portlet-tck_3.0/V2SigTestsAction/src/main/java/javax/portlet/tck/portlets/SigTestsAction_ActionRequest_SIGAction.java
@@ -0,0 +1,151 @@
+/*  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package javax.portlet.tck.portlets;
+
+import java.io.*;
+import java.util.*;
+import java.util.logging.*;
+import static java.util.logging.Logger.*;
+import javax.xml.namespace.QName;
+import javax.portlet.*;
+import javax.portlet.filter.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.portlet.tck.beans.*;
+import javax.portlet.tck.constants.*;
+import static javax.portlet.tck.beans.JSR286SignatureTestCaseDetails.*;
+import static javax.portlet.tck.constants.Constants.*;
+import static javax.portlet.PortletSession.*;
+import static javax.portlet.ResourceURL.*;
+
+/**
+ * This portlet implements several test cases for the JSR 362 TCK. The test case names
+ * are defined in the /src/main/resources/xml-resources/additionalTCs.xml
+ * file. The build process will integrate the test case names defined in the 
+ * additionalTCs.xml file into the complete list of test case names for execution by the driver.
+ *
+ * This is the main portlet for the test cases. If the test cases call for events, this portlet
+ * will initiate the events, but not process them. The processing is done in the companion 
+ * portlet SigTestsAction_ActionRequest_SIGAction_event
+ *
+ */
+public class SigTestsAction_ActionRequest_SIGAction implements Portlet, ResourceServingPortlet {
+   private static final String LOG_CLASS = 
+         SigTestsAction_ActionRequest_SIGAction.class.getName();
+   private final Logger LOGGER = Logger.getLogger(LOG_CLASS);
+   
+   private PortletConfig portletConfig = null;
+
+   @Override
+   public void init(PortletConfig config) throws PortletException {
+      this.portletConfig = config;
+   }
+
+   @Override
+   public void destroy() {
+   }
+
+   @Override
+   public void processAction(ActionRequest portletReq, ActionResponse portletResp)
+         throws PortletException, IOException {
+      LOGGER.entering(LOG_CLASS, "main portlet processAction entry");
+
+      portletResp.setRenderParameters(portletReq.getParameterMap());
+      long tid = Thread.currentThread().getId();
+      portletReq.setAttribute(THREADID_ATTR, tid);
+
+      StringWriter writer = new StringWriter();
+
+      JSR286SignatureTestCaseDetails tcd = new JSR286SignatureTestCaseDetails();
+
+      // Create result objects for the tests
+
+      ClassChecker cc = new ClassChecker(portletReq.getClass());
+
+      /* TestCase: V2SigTestsAction_ActionRequest_SIGAction_fieldACTION_NAME  */
+      /* Details: "ActionRequest has String field ACTION_NAME "               */
+      TestResult tr0 = tcd.getTestResultFailed(V2SIGTESTSACTION_ACTIONREQUEST_SIGACTION_FIELDACTION_NAME);
+      try {
+         tr0.setTcSuccess(cc.hasField("ACTION_NAME"));
+      } catch(Exception e) {tr0.appendTcDetail(e.toString());}
+      tr0.writeTo(writer);
+
+      /* TestCase: V2SigTestsAction_ActionRequest_SIGAction_implementsClientDataRequest */
+      /* Details: "ActionRequest implements ClientDataRequest "               */
+      TestResult tr1 = tcd.getTestResultFailed(V2SIGTESTSACTION_ACTIONREQUEST_SIGACTION_IMPLEMENTSCLIENTDATAREQUEST);
+      try {
+         tr1.setTcSuccess(cc.implementsInterface(ClientDataRequest.class));
+      } catch(Exception e) {tr1.appendTcDetail(e.toString());}
+      tr1.writeTo(writer);
+
+      portletReq.getPortletSession().setAttribute(
+                   Constants.RESULT_ATTR_PREFIX + "SigTestsAction_ActionRequest_SIGAction",
+                   writer.toString(), APPLICATION_SCOPE);
+   }
+
+   @Override
+   public void serveResource(ResourceRequest portletReq, ResourceResponse portletResp)
+         throws PortletException, IOException {
+      LOGGER.entering(LOG_CLASS, "main portlet serveResource entry");
+
+      long tid = Thread.currentThread().getId();
+      portletReq.setAttribute(THREADID_ATTR, tid);
+
+      PrintWriter writer = portletResp.getWriter();
+
+   }
+
+   @Override
+   public void render(RenderRequest portletReq, RenderResponse portletResp)
+         throws PortletException, IOException {
+      LOGGER.entering(LOG_CLASS, "main portlet render entry");
+
+      long tid = Thread.currentThread().getId();
+      portletReq.setAttribute(THREADID_ATTR, tid);
+
+      PrintWriter writer = portletResp.getWriter();
+
+      PortletSession ps = portletReq.getPortletSession();
+      String msg = (String) ps.getAttribute(RESULT_ATTR_PREFIX + "SigTestsAction_ActionRequest_SIGAction", APPLICATION_SCOPE);
+      if (msg != null) {
+         writer.write("<p>" + msg + "</p><br/>\n");
+         ps.removeAttribute(RESULT_ATTR_PREFIX + "SigTestsAction_ActionRequest_SIGAction", APPLICATION_SCOPE);
+      }
+
+      /* TestCase: V2SigTestsAction_ActionRequest_SIGAction_fieldACTION_NAME  */
+      /* Details: "ActionRequest has String field ACTION_NAME "               */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2SigTestsAction_ActionRequest_SIGAction_fieldACTION_NAME", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2SigTestsAction_ActionRequest_SIGAction_implementsClientDataRequest */
+      /* Details: "ActionRequest implements ClientDataRequest "               */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2SigTestsAction_ActionRequest_SIGAction_implementsClientDataRequest", aurl);
+         tb.writeTo(writer);
+      }
+
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/834b222c/portlet-tck_3.0/V2SigTestsAction/src/main/java/javax/portlet/tck/portlets/SigTestsAction_ActionResponse_SIGAction.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2SigTestsAction/src/main/java/javax/portlet/tck/portlets/SigTestsAction_ActionResponse_SIGAction.java b/portlet-tck_3.0/V2SigTestsAction/src/main/java/javax/portlet/tck/portlets/SigTestsAction_ActionResponse_SIGAction.java
new file mode 100644
index 0000000..7ca01b7
--- /dev/null
+++ b/portlet-tck_3.0/V2SigTestsAction/src/main/java/javax/portlet/tck/portlets/SigTestsAction_ActionResponse_SIGAction.java
@@ -0,0 +1,222 @@
+/*  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package javax.portlet.tck.portlets;
+
+import java.io.*;
+import java.util.*;
+import java.util.logging.*;
+import static java.util.logging.Logger.*;
+import javax.xml.namespace.QName;
+import javax.portlet.*;
+import javax.portlet.filter.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.portlet.tck.beans.*;
+import javax.portlet.tck.constants.*;
+import static javax.portlet.tck.beans.JSR286SignatureTestCaseDetails.*;
+import static javax.portlet.tck.constants.Constants.*;
+import static javax.portlet.PortletSession.*;
+import static javax.portlet.ResourceURL.*;
+
+/**
+ * This portlet implements several test cases for the JSR 362 TCK. The test case names
+ * are defined in the /src/main/resources/xml-resources/additionalTCs.xml
+ * file. The build process will integrate the test case names defined in the 
+ * additionalTCs.xml file into the complete list of test case names for execution by the driver.
+ *
+ * This is the main portlet for the test cases. If the test cases call for events, this portlet
+ * will initiate the events, but not process them. The processing is done in the companion 
+ * portlet SigTestsAction_ActionResponse_SIGAction_event
+ *
+ */
+public class SigTestsAction_ActionResponse_SIGAction implements Portlet, ResourceServingPortlet {
+   private static final String LOG_CLASS = 
+         SigTestsAction_ActionResponse_SIGAction.class.getName();
+   private final Logger LOGGER = Logger.getLogger(LOG_CLASS);
+   
+   private PortletConfig portletConfig = null;
+
+   @Override
+   public void init(PortletConfig config) throws PortletException {
+      this.portletConfig = config;
+   }
+
+   @Override
+   public void destroy() {
+   }
+
+   @Override
+   public void processAction(ActionRequest portletReq, ActionResponse portletResp)
+         throws PortletException, IOException {
+      LOGGER.entering(LOG_CLASS, "main portlet processAction entry");
+
+      portletResp.setRenderParameters(portletReq.getParameterMap());
+      long tid = Thread.currentThread().getId();
+      portletReq.setAttribute(THREADID_ATTR, tid);
+
+      StringWriter writer = new StringWriter();
+
+      JSR286SignatureTestCaseDetails tcd = new JSR286SignatureTestCaseDetails();
+
+      // Create result objects for the tests
+
+      ClassChecker cc = new ClassChecker(portletResp.getClass());
+
+      /* TestCase: V2SigTestsAction_ActionResponse_SIGAction_hasSendRedirect  */
+      /* Details: "ActionResponse has a sendRedirect(String) throws           */
+      /* java.io.IOException method "                                         */
+      TestResult tr0 = tcd.getTestResultFailed(V2SIGTESTSACTION_ACTIONRESPONSE_SIGACTION_HASSENDREDIRECT);
+      try {
+         String name = "sendRedirect";
+         Class<?>[] exceptions = {java.io.IOException.class};
+         Class<?>[] parms = {String.class};
+         tr0.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr0.appendTcDetail(e.toString());}
+      tr0.writeTo(writer);
+
+      /* TestCase: V2SigTestsAction_ActionResponse_SIGAction_hasSendRedirectA */
+      /* Details: "ActionResponse has a sendRedirect(String, String) throws   */
+      /* java.io.IOException method "                                         */
+      TestResult tr1 = tcd.getTestResultFailed(V2SIGTESTSACTION_ACTIONRESPONSE_SIGACTION_HASSENDREDIRECTA);
+      try {
+         String name = "sendRedirect";
+         Class<?>[] exceptions = {java.io.IOException.class};
+         Class<?>[] parms = {String.class, String.class};
+         tr1.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr1.appendTcDetail(e.toString());}
+      tr1.writeTo(writer);
+
+      /* TestCase: V2SigTestsAction_ActionResponse_SIGAction_hasSendRedirectReturns */
+      /* Details: "ActionResponse method sendRedirect(String) returns void    */
+      /* "                                                                    */
+      TestResult tr2 = tcd.getTestResultFailed(V2SIGTESTSACTION_ACTIONRESPONSE_SIGACTION_HASSENDREDIRECTRETURNS);
+      try {
+         String name = "sendRedirect";
+         Class<?> retType = void.class;
+         Class<?>[] parms = {String.class};
+         tr2.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr2.appendTcDetail(e.toString());}
+      tr2.writeTo(writer);
+
+      /* TestCase: V2SigTestsAction_ActionResponse_SIGAction_hasSendRedirectReturnsA */
+      /* Details: "ActionResponse method sendRedirect(String, String)         */
+      /* returns void "                                                       */
+      TestResult tr3 = tcd.getTestResultFailed(V2SIGTESTSACTION_ACTIONRESPONSE_SIGACTION_HASSENDREDIRECTRETURNSA);
+      try {
+         String name = "sendRedirect";
+         Class<?> retType = void.class;
+         Class<?>[] parms = {String.class, String.class};
+         tr3.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr3.appendTcDetail(e.toString());}
+      tr3.writeTo(writer);
+
+      /* TestCase: V2SigTestsAction_ActionResponse_SIGAction_implementsStateAwareResponse */
+      /* Details: "ActionResponse implements StateAwareResponse "             */
+      TestResult tr4 = tcd.getTestResultFailed(V2SIGTESTSACTION_ACTIONRESPONSE_SIGACTION_IMPLEMENTSSTATEAWARERESPONSE);
+      try {
+         tr4.setTcSuccess(cc.implementsInterface(StateAwareResponse.class));
+      } catch(Exception e) {tr4.appendTcDetail(e.toString());}
+      tr4.writeTo(writer);
+
+      portletReq.getPortletSession().setAttribute(
+                   Constants.RESULT_ATTR_PREFIX + "SigTestsAction_ActionResponse_SIGAction",
+                   writer.toString(), APPLICATION_SCOPE);
+   }
+
+   @Override
+   public void serveResource(ResourceRequest portletReq, ResourceResponse portletResp)
+         throws PortletException, IOException {
+      LOGGER.entering(LOG_CLASS, "main portlet serveResource entry");
+
+      long tid = Thread.currentThread().getId();
+      portletReq.setAttribute(THREADID_ATTR, tid);
+
+      PrintWriter writer = portletResp.getWriter();
+
+   }
+
+   @Override
+   public void render(RenderRequest portletReq, RenderResponse portletResp)
+         throws PortletException, IOException {
+      LOGGER.entering(LOG_CLASS, "main portlet render entry");
+
+      long tid = Thread.currentThread().getId();
+      portletReq.setAttribute(THREADID_ATTR, tid);
+
+      PrintWriter writer = portletResp.getWriter();
+
+      PortletSession ps = portletReq.getPortletSession();
+      String msg = (String) ps.getAttribute(RESULT_ATTR_PREFIX + "SigTestsAction_ActionResponse_SIGAction", APPLICATION_SCOPE);
+      if (msg != null) {
+         writer.write("<p>" + msg + "</p><br/>\n");
+         ps.removeAttribute(RESULT_ATTR_PREFIX + "SigTestsAction_ActionResponse_SIGAction", APPLICATION_SCOPE);
+      }
+
+      /* TestCase: V2SigTestsAction_ActionResponse_SIGAction_hasSendRedirect  */
+      /* Details: "ActionResponse has a sendRedirect(String) throws           */
+      /* java.io.IOException method "                                         */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2SigTestsAction_ActionResponse_SIGAction_hasSendRedirect", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2SigTestsAction_ActionResponse_SIGAction_hasSendRedirectA */
+      /* Details: "ActionResponse has a sendRedirect(String, String) throws   */
+      /* java.io.IOException method "                                         */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2SigTestsAction_ActionResponse_SIGAction_hasSendRedirectA", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2SigTestsAction_ActionResponse_SIGAction_hasSendRedirectReturns */
+      /* Details: "ActionResponse method sendRedirect(String) returns void    */
+      /* "                                                                    */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2SigTestsAction_ActionResponse_SIGAction_hasSendRedirectReturns", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2SigTestsAction_ActionResponse_SIGAction_hasSendRedirectReturnsA */
+      /* Details: "ActionResponse method sendRedirect(String, String)         */
+      /* returns void "                                                       */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2SigTestsAction_ActionResponse_SIGAction_hasSendRedirectReturnsA", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2SigTestsAction_ActionResponse_SIGAction_implementsStateAwareResponse */
+      /* Details: "ActionResponse implements StateAwareResponse "             */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2SigTestsAction_ActionResponse_SIGAction_implementsStateAwareResponse", aurl);
+         tb.writeTo(writer);
+      }
+
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/834b222c/portlet-tck_3.0/V2SigTestsAction/src/main/java/javax/portlet/tck/portlets/SigTestsAction_ClientDataRequest_SIGAction.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2SigTestsAction/src/main/java/javax/portlet/tck/portlets/SigTestsAction_ClientDataRequest_SIGAction.java b/portlet-tck_3.0/V2SigTestsAction/src/main/java/javax/portlet/tck/portlets/SigTestsAction_ClientDataRequest_SIGAction.java
new file mode 100644
index 0000000..bc1026a
--- /dev/null
+++ b/portlet-tck_3.0/V2SigTestsAction/src/main/java/javax/portlet/tck/portlets/SigTestsAction_ClientDataRequest_SIGAction.java
@@ -0,0 +1,428 @@
+/*  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package javax.portlet.tck.portlets;
+
+import java.io.*;
+import java.util.*;
+import java.util.logging.*;
+import static java.util.logging.Logger.*;
+import javax.xml.namespace.QName;
+import javax.portlet.*;
+import javax.portlet.filter.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.portlet.tck.beans.*;
+import javax.portlet.tck.constants.*;
+import static javax.portlet.tck.beans.JSR286SignatureTestCaseDetails.*;
+import static javax.portlet.tck.constants.Constants.*;
+import static javax.portlet.PortletSession.*;
+import static javax.portlet.ResourceURL.*;
+
+/**
+ * This portlet implements several test cases for the JSR 362 TCK. The test case names
+ * are defined in the /src/main/resources/xml-resources/additionalTCs.xml
+ * file. The build process will integrate the test case names defined in the 
+ * additionalTCs.xml file into the complete list of test case names for execution by the driver.
+ *
+ * This is the main portlet for the test cases. If the test cases call for events, this portlet
+ * will initiate the events, but not process them. The processing is done in the companion 
+ * portlet SigTestsAction_ClientDataRequest_SIGAction_event
+ *
+ */
+public class SigTestsAction_ClientDataRequest_SIGAction implements Portlet, ResourceServingPortlet {
+   private static final String LOG_CLASS = 
+         SigTestsAction_ClientDataRequest_SIGAction.class.getName();
+   private final Logger LOGGER = Logger.getLogger(LOG_CLASS);
+   
+   private PortletConfig portletConfig = null;
+
+   @Override
+   public void init(PortletConfig config) throws PortletException {
+      this.portletConfig = config;
+   }
+
+   @Override
+   public void destroy() {
+   }
+
+   @Override
+   public void processAction(ActionRequest portletReq, ActionResponse portletResp)
+         throws PortletException, IOException {
+      LOGGER.entering(LOG_CLASS, "main portlet processAction entry");
+
+      portletResp.setRenderParameters(portletReq.getParameterMap());
+      long tid = Thread.currentThread().getId();
+      portletReq.setAttribute(THREADID_ATTR, tid);
+
+      StringWriter writer = new StringWriter();
+
+      JSR286SignatureTestCaseDetails tcd = new JSR286SignatureTestCaseDetails();
+
+      // Create result objects for the tests
+
+      ClassChecker cc = new ClassChecker(portletReq.getClass());
+
+      /* TestCase: V2SigTestsAction_ClientDataRequest_SIGAction_hasGetCharacterEncoding */
+      /* Details: "ActionRequest has a getCharacterEncoding()  method "       */
+      TestResult tr0 = tcd.getTestResultFailed(V2SIGTESTSACTION_CLIENTDATAREQUEST_SIGACTION_HASGETCHARACTERENCODING);
+      try {
+         String name = "getCharacterEncoding";
+         Class<?>[] exceptions = null;
+         Class<?>[] parms = null;
+         tr0.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr0.appendTcDetail(e.toString());}
+      tr0.writeTo(writer);
+
+      /* TestCase: V2SigTestsAction_ClientDataRequest_SIGAction_hasGetCharacterEncodingReturns */
+      /* Details: "ActionRequest method getCharacterEncoding() returns        */
+      /* String "                                                             */
+      TestResult tr1 = tcd.getTestResultFailed(V2SIGTESTSACTION_CLIENTDATAREQUEST_SIGACTION_HASGETCHARACTERENCODINGRETURNS);
+      try {
+         String name = "getCharacterEncoding";
+         Class<?> retType = String.class;
+         Class<?>[] parms = null;
+         tr1.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr1.appendTcDetail(e.toString());}
+      tr1.writeTo(writer);
+
+      /* TestCase: V2SigTestsAction_ClientDataRequest_SIGAction_hasGetContentLength */
+      /* Details: "ActionRequest has a getContentLength()  method "           */
+      TestResult tr2 = tcd.getTestResultFailed(V2SIGTESTSACTION_CLIENTDATAREQUEST_SIGACTION_HASGETCONTENTLENGTH);
+      try {
+         String name = "getContentLength";
+         Class<?>[] exceptions = null;
+         Class<?>[] parms = null;
+         tr2.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr2.appendTcDetail(e.toString());}
+      tr2.writeTo(writer);
+
+      /* TestCase: V2SigTestsAction_ClientDataRequest_SIGAction_hasGetContentLengthReturns */
+      /* Details: "ActionRequest method getContentLength() returns int "      */
+      TestResult tr3 = tcd.getTestResultFailed(V2SIGTESTSACTION_CLIENTDATAREQUEST_SIGACTION_HASGETCONTENTLENGTHRETURNS);
+      try {
+         String name = "getContentLength";
+         Class<?> retType = int.class;
+         Class<?>[] parms = null;
+         tr3.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr3.appendTcDetail(e.toString());}
+      tr3.writeTo(writer);
+
+      /* TestCase: V2SigTestsAction_ClientDataRequest_SIGAction_hasGetContentType */
+      /* Details: "ActionRequest has a getContentType()  method "             */
+      TestResult tr4 = tcd.getTestResultFailed(V2SIGTESTSACTION_CLIENTDATAREQUEST_SIGACTION_HASGETCONTENTTYPE);
+      try {
+         String name = "getContentType";
+         Class<?>[] exceptions = null;
+         Class<?>[] parms = null;
+         tr4.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr4.appendTcDetail(e.toString());}
+      tr4.writeTo(writer);
+
+      /* TestCase: V2SigTestsAction_ClientDataRequest_SIGAction_hasGetContentTypeReturns */
+      /* Details: "ActionRequest method getContentType() returns String "     */
+      TestResult tr5 = tcd.getTestResultFailed(V2SIGTESTSACTION_CLIENTDATAREQUEST_SIGACTION_HASGETCONTENTTYPERETURNS);
+      try {
+         String name = "getContentType";
+         Class<?> retType = String.class;
+         Class<?>[] parms = null;
+         tr5.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr5.appendTcDetail(e.toString());}
+      tr5.writeTo(writer);
+
+      /* TestCase: V2SigTestsAction_ClientDataRequest_SIGAction_hasGetMethod  */
+      /* Details: "ActionRequest has a getMethod()  method "                  */
+      TestResult tr6 = tcd.getTestResultFailed(V2SIGTESTSACTION_CLIENTDATAREQUEST_SIGACTION_HASGETMETHOD);
+      try {
+         String name = "getMethod";
+         Class<?>[] exceptions = null;
+         Class<?>[] parms = null;
+         tr6.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr6.appendTcDetail(e.toString());}
+      tr6.writeTo(writer);
+
+      /* TestCase: V2SigTestsAction_ClientDataRequest_SIGAction_hasGetMethodReturns */
+      /* Details: "ActionRequest method getMethod() returns String "          */
+      TestResult tr7 = tcd.getTestResultFailed(V2SIGTESTSACTION_CLIENTDATAREQUEST_SIGACTION_HASGETMETHODRETURNS);
+      try {
+         String name = "getMethod";
+         Class<?> retType = String.class;
+         Class<?>[] parms = null;
+         tr7.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr7.appendTcDetail(e.toString());}
+      tr7.writeTo(writer);
+
+      /* TestCase: V2SigTestsAction_ClientDataRequest_SIGAction_hasGetPortletInputStream */
+      /* Details: "ActionRequest has a getPortletInputStream() throws         */
+      /* java.io.IOException method "                                         */
+      TestResult tr8 = tcd.getTestResultFailed(V2SIGTESTSACTION_CLIENTDATAREQUEST_SIGACTION_HASGETPORTLETINPUTSTREAM);
+      try {
+         String name = "getPortletInputStream";
+         Class<?>[] exceptions = {java.io.IOException.class};
+         Class<?>[] parms = null;
+         tr8.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr8.appendTcDetail(e.toString());}
+      tr8.writeTo(writer);
+
+      /* TestCase: V2SigTestsAction_ClientDataRequest_SIGAction_hasGetPortletInputStreamReturns */
+      /* Details: "ActionRequest method getPortletInputStream() returns       */
+      /* java.io.InputStream "                                                */
+      TestResult tr9 = tcd.getTestResultFailed(V2SIGTESTSACTION_CLIENTDATAREQUEST_SIGACTION_HASGETPORTLETINPUTSTREAMRETURNS);
+      try {
+         String name = "getPortletInputStream";
+         Class<?> retType = java.io.InputStream.class;
+         Class<?>[] parms = null;
+         tr9.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr9.appendTcDetail(e.toString());}
+      tr9.writeTo(writer);
+
+      /* TestCase: V2SigTestsAction_ClientDataRequest_SIGAction_hasGetReader  */
+      /* Details: "ActionRequest has a getReader() throws                     */
+      /* java.io.UnsupportedEncodingException, java.io.IOException method "   */
+      TestResult tr10 = tcd.getTestResultFailed(V2SIGTESTSACTION_CLIENTDATAREQUEST_SIGACTION_HASGETREADER);
+      try {
+         String name = "getReader";
+         Class<?>[] exceptions = {java.io.UnsupportedEncodingException.class, java.io.IOException.class};
+         Class<?>[] parms = null;
+         tr10.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr10.appendTcDetail(e.toString());}
+      tr10.writeTo(writer);
+
+      /* TestCase: V2SigTestsAction_ClientDataRequest_SIGAction_hasGetReaderReturns */
+      /* Details: "ActionRequest method getReader() returns                   */
+      /* java.io.BufferedReader "                                             */
+      TestResult tr11 = tcd.getTestResultFailed(V2SIGTESTSACTION_CLIENTDATAREQUEST_SIGACTION_HASGETREADERRETURNS);
+      try {
+         String name = "getReader";
+         Class<?> retType = java.io.BufferedReader.class;
+         Class<?>[] parms = null;
+         tr11.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr11.appendTcDetail(e.toString());}
+      tr11.writeTo(writer);
+
+      /* TestCase: V2SigTestsAction_ClientDataRequest_SIGAction_hasSetCharacterEncoding */
+      /* Details: "ActionRequest has a setCharacterEncoding(String) throws    */
+      /* java.io.UnsupportedEncodingException method "                        */
+      TestResult tr12 = tcd.getTestResultFailed(V2SIGTESTSACTION_CLIENTDATAREQUEST_SIGACTION_HASSETCHARACTERENCODING);
+      try {
+         String name = "setCharacterEncoding";
+         Class<?>[] exceptions = {java.io.UnsupportedEncodingException.class};
+         Class<?>[] parms = {String.class};
+         tr12.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr12.appendTcDetail(e.toString());}
+      tr12.writeTo(writer);
+
+      /* TestCase: V2SigTestsAction_ClientDataRequest_SIGAction_hasSetCharacterEncodingReturns */
+      /* Details: "ActionRequest method setCharacterEncoding(String)          */
+      /* returns void "                                                       */
+      TestResult tr13 = tcd.getTestResultFailed(V2SIGTESTSACTION_CLIENTDATAREQUEST_SIGACTION_HASSETCHARACTERENCODINGRETURNS);
+      try {
+         String name = "setCharacterEncoding";
+         Class<?> retType = void.class;
+         Class<?>[] parms = {String.class};
+         tr13.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr13.appendTcDetail(e.toString());}
+      tr13.writeTo(writer);
+
+      /* TestCase: V2SigTestsAction_ClientDataRequest_SIGAction_implementsPortletRequest */
+      /* Details: "ActionRequest implements PortletRequest "                  */
+      TestResult tr14 = tcd.getTestResultFailed(V2SIGTESTSACTION_CLIENTDATAREQUEST_SIGACTION_IMPLEMENTSPORTLETREQUEST);
+      try {
+         tr14.setTcSuccess(cc.implementsInterface(PortletRequest.class));
+      } catch(Exception e) {tr14.appendTcDetail(e.toString());}
+      tr14.writeTo(writer);
+
+      portletReq.getPortletSession().setAttribute(
+                   Constants.RESULT_ATTR_PREFIX + "SigTestsAction_ClientDataRequest_SIGAction",
+                   writer.toString(), APPLICATION_SCOPE);
+   }
+
+   @Override
+   public void serveResource(ResourceRequest portletReq, ResourceResponse portletResp)
+         throws PortletException, IOException {
+      LOGGER.entering(LOG_CLASS, "main portlet serveResource entry");
+
+      long tid = Thread.currentThread().getId();
+      portletReq.setAttribute(THREADID_ATTR, tid);
+
+      PrintWriter writer = portletResp.getWriter();
+
+   }
+
+   @Override
+   public void render(RenderRequest portletReq, RenderResponse portletResp)
+         throws PortletException, IOException {
+      LOGGER.entering(LOG_CLASS, "main portlet render entry");
+
+      long tid = Thread.currentThread().getId();
+      portletReq.setAttribute(THREADID_ATTR, tid);
+
+      PrintWriter writer = portletResp.getWriter();
+
+      PortletSession ps = portletReq.getPortletSession();
+      String msg = (String) ps.getAttribute(RESULT_ATTR_PREFIX + "SigTestsAction_ClientDataRequest_SIGAction", APPLICATION_SCOPE);
+      if (msg != null) {
+         writer.write("<p>" + msg + "</p><br/>\n");
+         ps.removeAttribute(RESULT_ATTR_PREFIX + "SigTestsAction_ClientDataRequest_SIGAction", APPLICATION_SCOPE);
+      }
+
+      /* TestCase: V2SigTestsAction_ClientDataRequest_SIGAction_hasGetCharacterEncoding */
+      /* Details: "ActionRequest has a getCharacterEncoding()  method "       */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2SigTestsAction_ClientDataRequest_SIGAction_hasGetCharacterEncoding", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2SigTestsAction_ClientDataRequest_SIGAction_hasGetCharacterEncodingReturns */
+      /* Details: "ActionRequest method getCharacterEncoding() returns        */
+      /* String "                                                             */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2SigTestsAction_ClientDataRequest_SIGAction_hasGetCharacterEncodingReturns", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2SigTestsAction_ClientDataRequest_SIGAction_hasGetContentLength */
+      /* Details: "ActionRequest has a getContentLength()  method "           */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2SigTestsAction_ClientDataRequest_SIGAction_hasGetContentLength", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2SigTestsAction_ClientDataRequest_SIGAction_hasGetContentLengthReturns */
+      /* Details: "ActionRequest method getContentLength() returns int "      */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2SigTestsAction_ClientDataRequest_SIGAction_hasGetContentLengthReturns", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2SigTestsAction_ClientDataRequest_SIGAction_hasGetContentType */
+      /* Details: "ActionRequest has a getContentType()  method "             */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2SigTestsAction_ClientDataRequest_SIGAction_hasGetContentType", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2SigTestsAction_ClientDataRequest_SIGAction_hasGetContentTypeReturns */
+      /* Details: "ActionRequest method getContentType() returns String "     */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2SigTestsAction_ClientDataRequest_SIGAction_hasGetContentTypeReturns", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2SigTestsAction_ClientDataRequest_SIGAction_hasGetMethod  */
+      /* Details: "ActionRequest has a getMethod()  method "                  */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2SigTestsAction_ClientDataRequest_SIGAction_hasGetMethod", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2SigTestsAction_ClientDataRequest_SIGAction_hasGetMethodReturns */
+      /* Details: "ActionRequest method getMethod() returns String "          */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2SigTestsAction_ClientDataRequest_SIGAction_hasGetMethodReturns", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2SigTestsAction_ClientDataRequest_SIGAction_hasGetPortletInputStream */
+      /* Details: "ActionRequest has a getPortletInputStream() throws         */
+      /* java.io.IOException method "                                         */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2SigTestsAction_ClientDataRequest_SIGAction_hasGetPortletInputStream", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2SigTestsAction_ClientDataRequest_SIGAction_hasGetPortletInputStreamReturns */
+      /* Details: "ActionRequest method getPortletInputStream() returns       */
+      /* java.io.InputStream "                                                */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2SigTestsAction_ClientDataRequest_SIGAction_hasGetPortletInputStreamReturns", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2SigTestsAction_ClientDataRequest_SIGAction_hasGetReader  */
+      /* Details: "ActionRequest has a getReader() throws                     */
+      /* java.io.UnsupportedEncodingException, java.io.IOException method "   */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2SigTestsAction_ClientDataRequest_SIGAction_hasGetReader", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2SigTestsAction_ClientDataRequest_SIGAction_hasGetReaderReturns */
+      /* Details: "ActionRequest method getReader() returns                   */
+      /* java.io.BufferedReader "                                             */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2SigTestsAction_ClientDataRequest_SIGAction_hasGetReaderReturns", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2SigTestsAction_ClientDataRequest_SIGAction_hasSetCharacterEncoding */
+      /* Details: "ActionRequest has a setCharacterEncoding(String) throws    */
+      /* java.io.UnsupportedEncodingException method "                        */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2SigTestsAction_ClientDataRequest_SIGAction_hasSetCharacterEncoding", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2SigTestsAction_ClientDataRequest_SIGAction_hasSetCharacterEncodingReturns */
+      /* Details: "ActionRequest method setCharacterEncoding(String)          */
+      /* returns void "                                                       */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2SigTestsAction_ClientDataRequest_SIGAction_hasSetCharacterEncodingReturns", aurl);
+         tb.writeTo(writer);
+      }
+
+      /* TestCase: V2SigTestsAction_ClientDataRequest_SIGAction_implementsPortletRequest */
+      /* Details: "ActionRequest implements PortletRequest "                  */
+      {
+         PortletURL aurl = portletResp.createActionURL();
+         aurl.setParameters(portletReq.getPrivateParameterMap());
+         TestButton tb = new TestButton("V2SigTestsAction_ClientDataRequest_SIGAction_implementsPortletRequest", aurl);
+         tb.writeTo(writer);
+      }
+
+   }
+
+}