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

[10/32] Moved the signature tests to separate modules and implemented more of them.

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/834b222c/portlet-tck_3.0/V2SigTestsResource/src/main/java/javax/portlet/tck/portlets/SigTestsResource_ResourceRequest_SIGResource.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2SigTestsResource/src/main/java/javax/portlet/tck/portlets/SigTestsResource_ResourceRequest_SIGResource.java b/portlet-tck_3.0/V2SigTestsResource/src/main/java/javax/portlet/tck/portlets/SigTestsResource_ResourceRequest_SIGResource.java
new file mode 100644
index 0000000..1a7ef98
--- /dev/null
+++ b/portlet-tck_3.0/V2SigTestsResource/src/main/java/javax/portlet/tck/portlets/SigTestsResource_ResourceRequest_SIGResource.java
@@ -0,0 +1,276 @@
+/*  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 SigTestsResource_ResourceRequest_SIGResource_event
+ *
+ */
+public class SigTestsResource_ResourceRequest_SIGResource implements Portlet, ResourceServingPortlet {
+   private static final String LOG_CLASS = 
+         SigTestsResource_ResourceRequest_SIGResource.class.getName();
+   private final Logger LOGGER = Logger.getLogger(LOG_CLASS);
+   
+   private PortletConfig portletConfig = null;
+
+   @Override
+   public void init(PortletConfig config) throws PortletException {
+      this.portletConfig = config;
+   }
+
+   @Override
+   public void destroy() {
+   }
+
+   @Override
+   public void processAction(ActionRequest portletReq, ActionResponse portletResp)
+         throws PortletException, IOException {
+      LOGGER.entering(LOG_CLASS, "main portlet processAction entry");
+
+      portletResp.setRenderParameters(portletReq.getParameterMap());
+      long tid = Thread.currentThread().getId();
+      portletReq.setAttribute(THREADID_ATTR, tid);
+
+      StringWriter writer = new StringWriter();
+
+   }
+
+   @Override
+   public void serveResource(ResourceRequest portletReq, ResourceResponse portletResp)
+         throws PortletException, IOException {
+      LOGGER.entering(LOG_CLASS, "main portlet serveResource entry");
+
+      long tid = Thread.currentThread().getId();
+      portletReq.setAttribute(THREADID_ATTR, tid);
+
+      PrintWriter writer = portletResp.getWriter();
+
+      JSR286SignatureTestCaseDetails tcd = new JSR286SignatureTestCaseDetails();
+
+      // Create result objects for the tests
+
+      ClassChecker cc = new ClassChecker(portletReq.getClass());
+
+      /* TestCase: V2SigTestsResource_ResourceRequest_SIGResource_fieldETAG   */
+      /* Details: "ResourceRequest has String field ETAG "                    */
+      TestResult tr0 = tcd.getTestResultFailed(V2SIGTESTSRESOURCE_RESOURCEREQUEST_SIGRESOURCE_FIELDETAG);
+      try {
+         tr0.setTcSuccess(cc.hasField("ETAG"));
+      } catch(Exception e) {tr0.appendTcDetail(e.toString());}
+      tr0.writeTo(writer);
+
+      /* TestCase: V2SigTestsResource_ResourceRequest_SIGResource_hasGetCacheability */
+      /* Details: "ResourceRequest has a getCacheability()  method "          */
+      TestResult tr1 = tcd.getTestResultFailed(V2SIGTESTSRESOURCE_RESOURCEREQUEST_SIGRESOURCE_HASGETCACHEABILITY);
+      try {
+         String name = "getCacheability";
+         Class<?>[] exceptions = null;
+         Class<?>[] parms = null;
+         tr1.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr1.appendTcDetail(e.toString());}
+      tr1.writeTo(writer);
+
+      /* TestCase: V2SigTestsResource_ResourceRequest_SIGResource_hasGetCacheabilityReturns */
+      /* Details: "ResourceRequest method getCacheability() returns String    */
+      /* "                                                                    */
+      TestResult tr2 = tcd.getTestResultFailed(V2SIGTESTSRESOURCE_RESOURCEREQUEST_SIGRESOURCE_HASGETCACHEABILITYRETURNS);
+      try {
+         String name = "getCacheability";
+         Class<?> retType = String.class;
+         Class<?>[] parms = null;
+         tr2.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr2.appendTcDetail(e.toString());}
+      tr2.writeTo(writer);
+
+      /* TestCase: V2SigTestsResource_ResourceRequest_SIGResource_hasGetETag  */
+      /* Details: "ResourceRequest has a getETag()  method "                  */
+      TestResult tr3 = tcd.getTestResultFailed(V2SIGTESTSRESOURCE_RESOURCEREQUEST_SIGRESOURCE_HASGETETAG);
+      try {
+         String name = "getETag";
+         Class<?>[] exceptions = null;
+         Class<?>[] parms = null;
+         tr3.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr3.appendTcDetail(e.toString());}
+      tr3.writeTo(writer);
+
+      /* TestCase: V2SigTestsResource_ResourceRequest_SIGResource_hasGetETagReturns */
+      /* Details: "ResourceRequest method getETag() returns String "          */
+      TestResult tr4 = tcd.getTestResultFailed(V2SIGTESTSRESOURCE_RESOURCEREQUEST_SIGRESOURCE_HASGETETAGRETURNS);
+      try {
+         String name = "getETag";
+         Class<?> retType = String.class;
+         Class<?>[] parms = null;
+         tr4.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr4.appendTcDetail(e.toString());}
+      tr4.writeTo(writer);
+
+      /* TestCase: V2SigTestsResource_ResourceRequest_SIGResource_hasGetPrivateRenderParameterMap */
+      /* Details: "ResourceRequest has a getPrivateRenderParameterMap()       */
+      /* method "                                                             */
+      TestResult tr5 = tcd.getTestResultFailed(V2SIGTESTSRESOURCE_RESOURCEREQUEST_SIGRESOURCE_HASGETPRIVATERENDERPARAMETERMAP);
+      try {
+         String name = "getPrivateRenderParameterMap";
+         Class<?>[] exceptions = null;
+         Class<?>[] parms = null;
+         tr5.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr5.appendTcDetail(e.toString());}
+      tr5.writeTo(writer);
+
+      /* TestCase: V2SigTestsResource_ResourceRequest_SIGResource_hasGetPrivateRenderParameterMapReturns */
+      /* Details: "ResourceRequest method getPrivateRenderParameterMap()      */
+      /* returns java.util.Map "                                              */
+      TestResult tr6 = tcd.getTestResultFailed(V2SIGTESTSRESOURCE_RESOURCEREQUEST_SIGRESOURCE_HASGETPRIVATERENDERPARAMETERMAPRETURNS);
+      try {
+         String name = "getPrivateRenderParameterMap";
+         Class<?> retType = java.util.Map.class;
+         Class<?>[] parms = null;
+         tr6.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr6.appendTcDetail(e.toString());}
+      tr6.writeTo(writer);
+
+      /* TestCase: V2SigTestsResource_ResourceRequest_SIGResource_hasGetResourceID */
+      /* Details: "ResourceRequest has a getResourceID()  method "            */
+      TestResult tr7 = tcd.getTestResultFailed(V2SIGTESTSRESOURCE_RESOURCEREQUEST_SIGRESOURCE_HASGETRESOURCEID);
+      try {
+         String name = "getResourceID";
+         Class<?>[] exceptions = null;
+         Class<?>[] parms = null;
+         tr7.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr7.appendTcDetail(e.toString());}
+      tr7.writeTo(writer);
+
+      /* TestCase: V2SigTestsResource_ResourceRequest_SIGResource_hasGetResourceIDReturns */
+      /* Details: "ResourceRequest method getResourceID() returns String "    */
+      TestResult tr8 = tcd.getTestResultFailed(V2SIGTESTSRESOURCE_RESOURCEREQUEST_SIGRESOURCE_HASGETRESOURCEIDRETURNS);
+      try {
+         String name = "getResourceID";
+         Class<?> retType = String.class;
+         Class<?>[] parms = null;
+         tr8.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr8.appendTcDetail(e.toString());}
+      tr8.writeTo(writer);
+
+      /* TestCase: V2SigTestsResource_ResourceRequest_SIGResource_hasGetResponseContentType */
+      /* Details: "ResourceRequest has a getResponseContentType()  method "   */
+      TestResult tr9 = tcd.getTestResultFailed(V2SIGTESTSRESOURCE_RESOURCEREQUEST_SIGRESOURCE_HASGETRESPONSECONTENTTYPE);
+      try {
+         String name = "getResponseContentType";
+         Class<?>[] exceptions = null;
+         Class<?>[] parms = null;
+         tr9.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr9.appendTcDetail(e.toString());}
+      tr9.writeTo(writer);
+
+      /* TestCase: V2SigTestsResource_ResourceRequest_SIGResource_hasGetResponseContentTypeReturns */
+      /* Details: "ResourceRequest method getResponseContentType() returns    */
+      /* String "                                                             */
+      TestResult tr10 = tcd.getTestResultFailed(V2SIGTESTSRESOURCE_RESOURCEREQUEST_SIGRESOURCE_HASGETRESPONSECONTENTTYPERETURNS);
+      try {
+         String name = "getResponseContentType";
+         Class<?> retType = String.class;
+         Class<?>[] parms = null;
+         tr10.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr10.appendTcDetail(e.toString());}
+      tr10.writeTo(writer);
+
+      /* TestCase: V2SigTestsResource_ResourceRequest_SIGResource_hasGetResponseContentTypes */
+      /* Details: "ResourceRequest has a getResponseContentTypes()  method    */
+      /* "                                                                    */
+      TestResult tr11 = tcd.getTestResultFailed(V2SIGTESTSRESOURCE_RESOURCEREQUEST_SIGRESOURCE_HASGETRESPONSECONTENTTYPES);
+      try {
+         String name = "getResponseContentTypes";
+         Class<?>[] exceptions = null;
+         Class<?>[] parms = null;
+         tr11.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr11.appendTcDetail(e.toString());}
+      tr11.writeTo(writer);
+
+      /* TestCase: V2SigTestsResource_ResourceRequest_SIGResource_hasGetResponseContentTypesReturns */
+      /* Details: "ResourceRequest method getResponseContentTypes() returns   */
+      /* java.util.Enumeration "                                              */
+      TestResult tr12 = tcd.getTestResultFailed(V2SIGTESTSRESOURCE_RESOURCEREQUEST_SIGRESOURCE_HASGETRESPONSECONTENTTYPESRETURNS);
+      try {
+         String name = "getResponseContentTypes";
+         Class<?> retType = java.util.Enumeration.class;
+         Class<?>[] parms = null;
+         tr12.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr12.appendTcDetail(e.toString());}
+      tr12.writeTo(writer);
+
+      /* TestCase: V2SigTestsResource_ResourceRequest_SIGResource_implementsClientDataRequest */
+      /* Details: "ResourceRequest implements ClientDataRequest "             */
+      TestResult tr13 = tcd.getTestResultFailed(V2SIGTESTSRESOURCE_RESOURCEREQUEST_SIGRESOURCE_IMPLEMENTSCLIENTDATAREQUEST);
+      try {
+         tr13.setTcSuccess(cc.implementsInterface(ClientDataRequest.class));
+      } catch(Exception e) {tr13.appendTcDetail(e.toString());}
+      tr13.writeTo(writer);
+
+   }
+
+   @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();
+
+      writer.write("<div id=\"SigTestsResource_ResourceRequest_SIGResource\">no resource output.</div>\n");
+      ResourceURL resurl = portletResp.createResourceURL();
+      resurl.setCacheability(PAGE);
+      writer.write("<script>\n");
+      writer.write("(function () {\n");
+      writer.write("   var xhr = new XMLHttpRequest();\n");
+      writer.write("   xhr.onreadystatechange=function() {\n");
+      writer.write("      if (xhr.readyState==4 && xhr.status==200) {\n");
+      writer.write("         document.getElementById(\"SigTestsResource_ResourceRequest_SIGResource\").innerHTML=xhr.responseText;\n");
+      writer.write("      }\n");
+      writer.write("   };\n");
+      writer.write("   xhr.open(\"GET\",\"" + resurl.toString() + "\",true);\n");
+      writer.write("   xhr.send();\n");
+      writer.write("})();\n");
+      writer.write("</script>\n");
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/834b222c/portlet-tck_3.0/V2SigTestsResource/src/main/java/javax/portlet/tck/portlets/SigTestsResource_ResourceResponse_SIGResource.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2SigTestsResource/src/main/java/javax/portlet/tck/portlets/SigTestsResource_ResourceResponse_SIGResource.java b/portlet-tck_3.0/V2SigTestsResource/src/main/java/javax/portlet/tck/portlets/SigTestsResource_ResourceResponse_SIGResource.java
new file mode 100644
index 0000000..09b29ae
--- /dev/null
+++ b/portlet-tck_3.0/V2SigTestsResource/src/main/java/javax/portlet/tck/portlets/SigTestsResource_ResourceResponse_SIGResource.java
@@ -0,0 +1,281 @@
+/*  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 SigTestsResource_ResourceResponse_SIGResource_event
+ *
+ */
+public class SigTestsResource_ResourceResponse_SIGResource implements Portlet, ResourceServingPortlet {
+   private static final String LOG_CLASS = 
+         SigTestsResource_ResourceResponse_SIGResource.class.getName();
+   private final Logger LOGGER = Logger.getLogger(LOG_CLASS);
+   
+   private PortletConfig portletConfig = null;
+
+   @Override
+   public void init(PortletConfig config) throws PortletException {
+      this.portletConfig = config;
+   }
+
+   @Override
+   public void destroy() {
+   }
+
+   @Override
+   public void processAction(ActionRequest portletReq, ActionResponse portletResp)
+         throws PortletException, IOException {
+      LOGGER.entering(LOG_CLASS, "main portlet processAction entry");
+
+      portletResp.setRenderParameters(portletReq.getParameterMap());
+      long tid = Thread.currentThread().getId();
+      portletReq.setAttribute(THREADID_ATTR, tid);
+
+      StringWriter writer = new StringWriter();
+
+   }
+
+   @Override
+   public void serveResource(ResourceRequest portletReq, ResourceResponse portletResp)
+         throws PortletException, IOException {
+      LOGGER.entering(LOG_CLASS, "main portlet serveResource entry");
+
+      long tid = Thread.currentThread().getId();
+      portletReq.setAttribute(THREADID_ATTR, tid);
+
+      PrintWriter writer = portletResp.getWriter();
+
+      JSR286SignatureTestCaseDetails tcd = new JSR286SignatureTestCaseDetails();
+
+      // Create result objects for the tests
+
+      ClassChecker cc = new ClassChecker(portletResp.getClass());
+
+      /* TestCase: V2SigTestsResource_ResourceResponse_SIGResource_fieldHTTP_STATUS_CODE */
+      /* Details: "ResourceResponse has String field HTTP_STATUS_CODE "       */
+      TestResult tr0 = tcd.getTestResultFailed(V2SIGTESTSRESOURCE_RESOURCERESPONSE_SIGRESOURCE_FIELDHTTP_STATUS_CODE);
+      try {
+         tr0.setTcSuccess(cc.hasField("HTTP_STATUS_CODE"));
+      } catch(Exception e) {tr0.appendTcDetail(e.toString());}
+      tr0.writeTo(writer);
+
+      /* TestCase: V2SigTestsResource_ResourceResponse_SIGResource_hasCreateActionURL */
+      /* Details: "ResourceResponse has a createActionURL() throws            */
+      /* IllegalStateException method "                                       */
+      TestResult tr1 = tcd.getTestResultFailed(V2SIGTESTSRESOURCE_RESOURCERESPONSE_SIGRESOURCE_HASCREATEACTIONURL);
+      try {
+         String name = "createActionURL";
+         Class<?>[] exceptions = {IllegalStateException.class};
+         Class<?>[] parms = null;
+         tr1.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr1.appendTcDetail(e.toString());}
+      tr1.writeTo(writer);
+
+      /* TestCase: V2SigTestsResource_ResourceResponse_SIGResource_hasCreateActionURLReturns */
+      /* Details: "ResourceResponse method createActionURL() returns          */
+      /* PortletURL "                                                         */
+      TestResult tr2 = tcd.getTestResultFailed(V2SIGTESTSRESOURCE_RESOURCERESPONSE_SIGRESOURCE_HASCREATEACTIONURLRETURNS);
+      try {
+         String name = "createActionURL";
+         Class<?> retType = PortletURL.class;
+         Class<?>[] parms = null;
+         tr2.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr2.appendTcDetail(e.toString());}
+      tr2.writeTo(writer);
+
+      /* TestCase: V2SigTestsResource_ResourceResponse_SIGResource_hasCreateRenderURL */
+      /* Details: "ResourceResponse has a createRenderURL() throws            */
+      /* IllegalStateException method "                                       */
+      TestResult tr3 = tcd.getTestResultFailed(V2SIGTESTSRESOURCE_RESOURCERESPONSE_SIGRESOURCE_HASCREATERENDERURL);
+      try {
+         String name = "createRenderURL";
+         Class<?>[] exceptions = {IllegalStateException.class};
+         Class<?>[] parms = null;
+         tr3.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr3.appendTcDetail(e.toString());}
+      tr3.writeTo(writer);
+
+      /* TestCase: V2SigTestsResource_ResourceResponse_SIGResource_hasCreateRenderURLReturns */
+      /* Details: "ResourceResponse method createRenderURL() returns          */
+      /* PortletURL "                                                         */
+      TestResult tr4 = tcd.getTestResultFailed(V2SIGTESTSRESOURCE_RESOURCERESPONSE_SIGRESOURCE_HASCREATERENDERURLRETURNS);
+      try {
+         String name = "createRenderURL";
+         Class<?> retType = PortletURL.class;
+         Class<?>[] parms = null;
+         tr4.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr4.appendTcDetail(e.toString());}
+      tr4.writeTo(writer);
+
+      /* TestCase: V2SigTestsResource_ResourceResponse_SIGResource_hasCreateResourceURL */
+      /* Details: "ResourceResponse has a createResourceURL() throws          */
+      /* IllegalStateException method "                                       */
+      TestResult tr5 = tcd.getTestResultFailed(V2SIGTESTSRESOURCE_RESOURCERESPONSE_SIGRESOURCE_HASCREATERESOURCEURL);
+      try {
+         String name = "createResourceURL";
+         Class<?>[] exceptions = {IllegalStateException.class};
+         Class<?>[] parms = null;
+         tr5.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr5.appendTcDetail(e.toString());}
+      tr5.writeTo(writer);
+
+      /* TestCase: V2SigTestsResource_ResourceResponse_SIGResource_hasCreateResourceURLReturns */
+      /* Details: "ResourceResponse method createResourceURL() returns        */
+      /* ResourceURL "                                                        */
+      TestResult tr6 = tcd.getTestResultFailed(V2SIGTESTSRESOURCE_RESOURCERESPONSE_SIGRESOURCE_HASCREATERESOURCEURLRETURNS);
+      try {
+         String name = "createResourceURL";
+         Class<?> retType = ResourceURL.class;
+         Class<?>[] parms = null;
+         tr6.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr6.appendTcDetail(e.toString());}
+      tr6.writeTo(writer);
+
+      /* TestCase: V2SigTestsResource_ResourceResponse_SIGResource_hasSetCharacterEncoding */
+      /* Details: "ResourceResponse has a setCharacterEncoding(String)        */
+      /* method "                                                             */
+      TestResult tr7 = tcd.getTestResultFailed(V2SIGTESTSRESOURCE_RESOURCERESPONSE_SIGRESOURCE_HASSETCHARACTERENCODING);
+      try {
+         String name = "setCharacterEncoding";
+         Class<?>[] exceptions = null;
+         Class<?>[] parms = {String.class};
+         tr7.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr7.appendTcDetail(e.toString());}
+      tr7.writeTo(writer);
+
+      /* TestCase: V2SigTestsResource_ResourceResponse_SIGResource_hasSetCharacterEncodingReturns */
+      /* Details: "ResourceResponse method setCharacterEncoding(String)       */
+      /* returns void "                                                       */
+      TestResult tr8 = tcd.getTestResultFailed(V2SIGTESTSRESOURCE_RESOURCERESPONSE_SIGRESOURCE_HASSETCHARACTERENCODINGRETURNS);
+      try {
+         String name = "setCharacterEncoding";
+         Class<?> retType = void.class;
+         Class<?>[] parms = {String.class};
+         tr8.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr8.appendTcDetail(e.toString());}
+      tr8.writeTo(writer);
+
+      /* TestCase: V2SigTestsResource_ResourceResponse_SIGResource_hasSetContentLength */
+      /* Details: "ResourceResponse has a setContentLength(int)  method "     */
+      TestResult tr9 = tcd.getTestResultFailed(V2SIGTESTSRESOURCE_RESOURCERESPONSE_SIGRESOURCE_HASSETCONTENTLENGTH);
+      try {
+         String name = "setContentLength";
+         Class<?>[] exceptions = null;
+         Class<?>[] parms = {int.class};
+         tr9.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr9.appendTcDetail(e.toString());}
+      tr9.writeTo(writer);
+
+      /* TestCase: V2SigTestsResource_ResourceResponse_SIGResource_hasSetContentLengthReturns */
+      /* Details: "ResourceResponse method setContentLength(int) returns      */
+      /* void "                                                               */
+      TestResult tr10 = tcd.getTestResultFailed(V2SIGTESTSRESOURCE_RESOURCERESPONSE_SIGRESOURCE_HASSETCONTENTLENGTHRETURNS);
+      try {
+         String name = "setContentLength";
+         Class<?> retType = void.class;
+         Class<?>[] parms = {int.class};
+         tr10.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr10.appendTcDetail(e.toString());}
+      tr10.writeTo(writer);
+
+      /* TestCase: V2SigTestsResource_ResourceResponse_SIGResource_hasSetLocale */
+      /* Details: "ResourceResponse has a setLocale(java.util.Locale)         */
+      /* method "                                                             */
+      TestResult tr11 = tcd.getTestResultFailed(V2SIGTESTSRESOURCE_RESOURCERESPONSE_SIGRESOURCE_HASSETLOCALE);
+      try {
+         String name = "setLocale";
+         Class<?>[] exceptions = null;
+         Class<?>[] parms = {java.util.Locale.class};
+         tr11.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr11.appendTcDetail(e.toString());}
+      tr11.writeTo(writer);
+
+      /* TestCase: V2SigTestsResource_ResourceResponse_SIGResource_hasSetLocaleReturns */
+      /* Details: "ResourceResponse method setLocale(java.util.Locale)        */
+      /* returns void "                                                       */
+      TestResult tr12 = tcd.getTestResultFailed(V2SIGTESTSRESOURCE_RESOURCERESPONSE_SIGRESOURCE_HASSETLOCALERETURNS);
+      try {
+         String name = "setLocale";
+         Class<?> retType = void.class;
+         Class<?>[] parms = {java.util.Locale.class};
+         tr12.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr12.appendTcDetail(e.toString());}
+      tr12.writeTo(writer);
+
+      /* TestCase: V2SigTestsResource_ResourceResponse_SIGResource_implementsMimeResponse */
+      /* Details: "ResourceResponse implements MimeResponse "                 */
+      TestResult tr13 = tcd.getTestResultFailed(V2SIGTESTSRESOURCE_RESOURCERESPONSE_SIGRESOURCE_IMPLEMENTSMIMERESPONSE);
+      try {
+         tr13.setTcSuccess(cc.implementsInterface(MimeResponse.class));
+      } catch(Exception e) {tr13.appendTcDetail(e.toString());}
+      tr13.writeTo(writer);
+
+   }
+
+   @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();
+
+      writer.write("<div id=\"SigTestsResource_ResourceResponse_SIGResource\">no resource output.</div>\n");
+      ResourceURL resurl = portletResp.createResourceURL();
+      resurl.setCacheability(PAGE);
+      writer.write("<script>\n");
+      writer.write("(function () {\n");
+      writer.write("   var xhr = new XMLHttpRequest();\n");
+      writer.write("   xhr.onreadystatechange=function() {\n");
+      writer.write("      if (xhr.readyState==4 && xhr.status==200) {\n");
+      writer.write("         document.getElementById(\"SigTestsResource_ResourceResponse_SIGResource\").innerHTML=xhr.responseText;\n");
+      writer.write("      }\n");
+      writer.write("   };\n");
+      writer.write("   xhr.open(\"GET\",\"" + resurl.toString() + "\",true);\n");
+      writer.write("   xhr.send();\n");
+      writer.write("})();\n");
+      writer.write("</script>\n");
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/834b222c/portlet-tck_3.0/V2SigTestsResource/src/main/resources/xml-resources/additionalTCs.xml
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2SigTestsResource/src/main/resources/xml-resources/additionalTCs.xml b/portlet-tck_3.0/V2SigTestsResource/src/main/resources/xml-resources/additionalTCs.xml
new file mode 100644
index 0000000..f80a598
--- /dev/null
+++ b/portlet-tck_3.0/V2SigTestsResource/src/main/resources/xml-resources/additionalTCs.xml
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.     
+-->
+<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
+<properties>
+<!-- JSR 286 API SigTestsResource test case names and page mappings -->
+<entry key="V2SigTestsResource_ClientDataRequest_SIGResource_hasGetCharacterEncoding">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ClientDataRequest_SIGResource_hasGetCharacterEncodingReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ClientDataRequest_SIGResource_hasGetContentLength">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ClientDataRequest_SIGResource_hasGetContentLengthReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ClientDataRequest_SIGResource_hasGetContentType">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ClientDataRequest_SIGResource_hasGetContentTypeReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ClientDataRequest_SIGResource_hasGetMethod">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ClientDataRequest_SIGResource_hasGetMethodReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ClientDataRequest_SIGResource_hasGetPortletInputStream">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ClientDataRequest_SIGResource_hasGetPortletInputStreamReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ClientDataRequest_SIGResource_hasGetReader">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ClientDataRequest_SIGResource_hasGetReaderReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ClientDataRequest_SIGResource_hasSetCharacterEncoding">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ClientDataRequest_SIGResource_hasSetCharacterEncodingReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ClientDataRequest_SIGResource_implementsPortletRequest">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_fieldCACHE_SCOPE">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_fieldETAG">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_fieldEXPIRATION_CACHE">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_fieldMARKUP_HEAD_ELEMENT">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_fieldNAMESPACED_RESPONSE">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_fieldPRIVATE_SCOPE">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_fieldPUBLIC_SCOPE">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_fieldUSE_CACHED_CONTENT">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasCreateActionURL">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasCreateActionURLReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasCreateRenderURL">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasCreateRenderURLReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasCreateResourceURL">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasCreateResourceURLReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasFlushBuffer">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasFlushBufferReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasGetBufferSize">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasGetBufferSizeReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasGetCacheControl">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasGetCacheControlReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasGetCharacterEncoding">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasGetCharacterEncodingReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasGetContentType">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasGetContentTypeReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasGetLocale">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasGetLocaleReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasGetPortletOutputStream">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasGetPortletOutputStreamReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasGetWriter">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasGetWriterReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasIsCommitted">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasIsCommittedReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasReset">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasResetBuffer">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasResetBufferReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasResetReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasSetBufferSize">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasSetBufferSizeReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasSetContentType">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_hasSetContentTypeReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_MimeResponse_SIGResource_implementsPortletResponse">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_fieldACTION_PHASE">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_fieldACTION_SCOPE_ID">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_fieldBASIC_AUTH">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_fieldCCPP_PROFILE">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_fieldCLIENT_CERT_AUTH">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_fieldDIGEST_AUTH">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_fieldEVENT_PHASE">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_fieldFORM_AUTH">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_fieldLIFECYCLE_PHASE">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_fieldRENDER_HEADERS">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_fieldRENDER_MARKUP">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_fieldRENDER_PART">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_fieldRENDER_PHASE">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_fieldRESOURCE_PHASE">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_fieldUSER_INFO">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetAttribute">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetAttributeNames">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetAttributeNamesReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetAttributeReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetAuthType">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetAuthTypeReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetContextPath">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetContextPathReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetCookies">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetCookiesReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetLocale">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetLocaleReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetLocales">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetLocalesReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetParameter">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetParameterMap">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetParameterMapReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetParameterNames">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetParameterNamesReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetParameterReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetParameterValues">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetParameterValuesReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetPortalContext">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetPortalContextReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetPortletMode">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetPortletModeReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetPortletSession">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetPortletSessionA">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetPortletSessionReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetPortletSessionReturnsA">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetPreferences">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetPreferencesReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetPrivateParameterMap">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetPrivateParameterMapReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetProperties">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetPropertiesReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetProperty">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetPropertyNames">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetPropertyNamesReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetPropertyReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetPublicParameterMap">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetPublicParameterMapReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetRemoteUser">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetRemoteUserReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetRequestedSessionId">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetRequestedSessionIdReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetResponseContentType">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetResponseContentTypeReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetResponseContentTypes">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetResponseContentTypesReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetScheme">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetSchemeReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetServerName">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetServerNameReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetServerPort">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetServerPortReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetUserPrincipal">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetUserPrincipalReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetWindowID">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetWindowIDReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetWindowState">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasGetWindowStateReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasIsPortletModeAllowed">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasIsPortletModeAllowedReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasIsRequestedSessionIdValid">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasIsRequestedSessionIdValidReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasIsSecure">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasIsSecureReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasIsUserInRole">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasIsUserInRoleReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasIsWindowStateAllowed">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasIsWindowStateAllowedReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasRemoveAttribute">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasRemoveAttributeReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasSetAttribute">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletRequest_SIGResource_hasSetAttributeReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletResponse_SIGResource_hasAddProperty">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletResponse_SIGResource_hasAddPropertyA">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletResponse_SIGResource_hasAddPropertyB">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletResponse_SIGResource_hasAddPropertyReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletResponse_SIGResource_hasAddPropertyReturnsA">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletResponse_SIGResource_hasAddPropertyReturnsB">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletResponse_SIGResource_hasCreateElement">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletResponse_SIGResource_hasCreateElementReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletResponse_SIGResource_hasEncodeURL">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletResponse_SIGResource_hasEncodeURLReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletResponse_SIGResource_hasGetNamespace">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletResponse_SIGResource_hasGetNamespaceReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletResponse_SIGResource_hasSetProperty">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_PortletResponse_SIGResource_hasSetPropertyReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ResourceRequest_SIGResource_fieldETAG">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ResourceRequest_SIGResource_hasGetCacheability">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ResourceRequest_SIGResource_hasGetCacheabilityReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ResourceRequest_SIGResource_hasGetETag">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ResourceRequest_SIGResource_hasGetETagReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ResourceRequest_SIGResource_hasGetPrivateRenderParameterMap">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ResourceRequest_SIGResource_hasGetPrivateRenderParameterMapReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ResourceRequest_SIGResource_hasGetResourceID">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ResourceRequest_SIGResource_hasGetResourceIDReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ResourceRequest_SIGResource_hasGetResponseContentType">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ResourceRequest_SIGResource_hasGetResponseContentTypeReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ResourceRequest_SIGResource_hasGetResponseContentTypes">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ResourceRequest_SIGResource_hasGetResponseContentTypesReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ResourceRequest_SIGResource_implementsClientDataRequest">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ResourceResponse_SIGResource_fieldHTTP_STATUS_CODE">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ResourceResponse_SIGResource_hasCreateActionURL">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ResourceResponse_SIGResource_hasCreateActionURLReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ResourceResponse_SIGResource_hasCreateRenderURL">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ResourceResponse_SIGResource_hasCreateRenderURLReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ResourceResponse_SIGResource_hasCreateResourceURL">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ResourceResponse_SIGResource_hasCreateResourceURLReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ResourceResponse_SIGResource_hasSetCharacterEncoding">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ResourceResponse_SIGResource_hasSetCharacterEncodingReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ResourceResponse_SIGResource_hasSetContentLength">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ResourceResponse_SIGResource_hasSetContentLengthReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ResourceResponse_SIGResource_hasSetLocale">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ResourceResponse_SIGResource_hasSetLocaleReturns">V2SigTestsResource</entry>
+<entry key="V2SigTestsResource_ResourceResponse_SIGResource_implementsMimeResponse">V2SigTestsResource</entry>
+</properties>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/834b222c/portlet-tck_3.0/V2SigTestsResource/src/main/webapp/WEB-INF/portlet.xml
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2SigTestsResource/src/main/webapp/WEB-INF/portlet.xml b/portlet-tck_3.0/V2SigTestsResource/src/main/webapp/WEB-INF/portlet.xml
new file mode 100644
index 0000000..ed5fefd
--- /dev/null
+++ b/portlet-tck_3.0/V2SigTestsResource/src/main/webapp/WEB-INF/portlet.xml
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.     
+-->
+<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
+   xmlns:tck="http://www.apache.org/portals/pluto/portlet-tck_3.0"
+   version="2.0" id="V2SigTestsResource">
+   <portlet>
+      <portlet-name>SigTestsResource_ClientDataRequest_SIGResource</portlet-name>
+      <portlet-class>javax.portlet.tck.portlets.SigTestsResource_ClientDataRequest_SIGResource</portlet-class>
+      <expiration-cache>0</expiration-cache>
+      <supports>
+         <mime-type>text/html</mime-type>
+      </supports>
+      <supported-locale>en_US</supported-locale>
+      <portlet-info>
+         <title>SigTestsResource_ClientDataRequest_SIGResource</title>
+      </portlet-info>
+   </portlet>
+
+   <portlet>
+      <portlet-name>SigTestsResource_MimeResponse_SIGResource</portlet-name>
+      <portlet-class>javax.portlet.tck.portlets.SigTestsResource_MimeResponse_SIGResource</portlet-class>
+      <expiration-cache>0</expiration-cache>
+      <supports>
+         <mime-type>text/html</mime-type>
+      </supports>
+      <supported-locale>en_US</supported-locale>
+      <portlet-info>
+         <title>SigTestsResource_MimeResponse_SIGResource</title>
+      </portlet-info>
+   </portlet>
+
+   <portlet>
+      <portlet-name>SigTestsResource_PortletRequest_SIGResource</portlet-name>
+      <portlet-class>javax.portlet.tck.portlets.SigTestsResource_PortletRequest_SIGResource</portlet-class>
+      <expiration-cache>0</expiration-cache>
+      <supports>
+         <mime-type>text/html</mime-type>
+      </supports>
+      <supported-locale>en_US</supported-locale>
+      <portlet-info>
+         <title>SigTestsResource_PortletRequest_SIGResource</title>
+      </portlet-info>
+   </portlet>
+
+   <portlet>
+      <portlet-name>SigTestsResource_PortletResponse_SIGResource</portlet-name>
+      <portlet-class>javax.portlet.tck.portlets.SigTestsResource_PortletResponse_SIGResource</portlet-class>
+      <expiration-cache>0</expiration-cache>
+      <supports>
+         <mime-type>text/html</mime-type>
+      </supports>
+      <supported-locale>en_US</supported-locale>
+      <portlet-info>
+         <title>SigTestsResource_PortletResponse_SIGResource</title>
+      </portlet-info>
+   </portlet>
+
+   <portlet>
+      <portlet-name>SigTestsResource_ResourceRequest_SIGResource</portlet-name>
+      <portlet-class>javax.portlet.tck.portlets.SigTestsResource_ResourceRequest_SIGResource</portlet-class>
+      <expiration-cache>0</expiration-cache>
+      <supports>
+         <mime-type>text/html</mime-type>
+      </supports>
+      <supported-locale>en_US</supported-locale>
+      <portlet-info>
+         <title>SigTestsResource_ResourceRequest_SIGResource</title>
+      </portlet-info>
+   </portlet>
+
+   <portlet>
+      <portlet-name>SigTestsResource_ResourceResponse_SIGResource</portlet-name>
+      <portlet-class>javax.portlet.tck.portlets.SigTestsResource_ResourceResponse_SIGResource</portlet-class>
+      <expiration-cache>0</expiration-cache>
+      <supports>
+         <mime-type>text/html</mime-type>
+      </supports>
+      <supported-locale>en_US</supported-locale>
+      <portlet-info>
+         <title>SigTestsResource_ResourceResponse_SIGResource</title>
+      </portlet-info>
+   </portlet>
+
+   <event-definition>
+      <qname>tck:SigTestsEvent_Event_SIGEvent</qname>
+      <value-type>java.lang.String</value-type>
+   </event-definition>
+
+   <event-definition>
+      <qname>tck:SigTestsEvent_EventRequest_SIGEvent</qname>
+      <value-type>java.lang.String</value-type>
+   </event-definition>
+
+   <event-definition>
+      <qname>tck:SigTestsEvent_EventResponse_SIGEvent</qname>
+      <value-type>java.lang.String</value-type>
+   </event-definition>
+
+   <event-definition>
+      <qname>tck:SigTestsEvent_PortletRequest_SIGEvent</qname>
+      <value-type>java.lang.String</value-type>
+   </event-definition>
+
+   <event-definition>
+      <qname>tck:SigTestsEvent_PortletResponse_SIGEvent</qname>
+      <value-type>java.lang.String</value-type>
+   </event-definition>
+
+   <event-definition>
+      <qname>tck:SigTestsEvent_StateAwareResponse_SIGEvent</qname>
+      <value-type>java.lang.String</value-type>
+   </event-definition>
+
+   <public-render-parameter>
+      <identifier>tckPRP1</identifier>
+      <qname>tck:tckPRP1</qname>
+   </public-render-parameter>
+</portlet-app>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/834b222c/portlet-tck_3.0/V2SigTestsResource/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2SigTestsResource/src/main/webapp/WEB-INF/web.xml b/portlet-tck_3.0/V2SigTestsResource/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..d23226c
--- /dev/null
+++ b/portlet-tck_3.0/V2SigTestsResource/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.     
+-->
+<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
+   <display-name>javax.portlet-tck-SigTestsResource</display-name>
+
+</web-app>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/834b222c/portlet-tck_3.0/V2SigTestsURL/pom.xml
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2SigTestsURL/pom.xml b/portlet-tck_3.0/V2SigTestsURL/pom.xml
new file mode 100644
index 0000000..6a444be
--- /dev/null
+++ b/portlet-tck_3.0/V2SigTestsURL/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-V2SigTestsURL</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/V2SigTestsURL/src/main/java/javax/portlet/tck/portlets/SigTestsURL_BaseURL_SIGRender.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2SigTestsURL/src/main/java/javax/portlet/tck/portlets/SigTestsURL_BaseURL_SIGRender.java b/portlet-tck_3.0/V2SigTestsURL/src/main/java/javax/portlet/tck/portlets/SigTestsURL_BaseURL_SIGRender.java
new file mode 100644
index 0000000..ec6f2ed
--- /dev/null
+++ b/portlet-tck_3.0/V2SigTestsURL/src/main/java/javax/portlet/tck/portlets/SigTestsURL_BaseURL_SIGRender.java
@@ -0,0 +1,336 @@
+/*  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 SigTestsURL_BaseURL_SIGRender_event
+ *
+ */
+public class SigTestsURL_BaseURL_SIGRender implements Portlet, ResourceServingPortlet {
+   private static final String LOG_CLASS = 
+         SigTestsURL_BaseURL_SIGRender.class.getName();
+   private final Logger LOGGER = Logger.getLogger(LOG_CLASS);
+   
+   private PortletConfig portletConfig = null;
+
+   @Override
+   public void init(PortletConfig config) throws PortletException {
+      this.portletConfig = config;
+   }
+
+   @Override
+   public void destroy() {
+   }
+
+   @Override
+   public void processAction(ActionRequest portletReq, ActionResponse portletResp)
+         throws PortletException, IOException {
+      LOGGER.entering(LOG_CLASS, "main portlet processAction entry");
+
+      portletResp.setRenderParameters(portletReq.getParameterMap());
+      long tid = Thread.currentThread().getId();
+      portletReq.setAttribute(THREADID_ATTR, tid);
+
+      StringWriter writer = new StringWriter();
+
+   }
+
+   @Override
+   public void serveResource(ResourceRequest portletReq, ResourceResponse portletResp)
+         throws PortletException, IOException {
+      LOGGER.entering(LOG_CLASS, "main portlet serveResource entry");
+
+      long tid = Thread.currentThread().getId();
+      portletReq.setAttribute(THREADID_ATTR, tid);
+
+      PrintWriter writer = portletResp.getWriter();
+
+   }
+
+   @Override
+   public void render(RenderRequest portletReq, RenderResponse portletResp)
+         throws PortletException, IOException {
+      LOGGER.entering(LOG_CLASS, "main portlet render entry");
+
+      long tid = Thread.currentThread().getId();
+      portletReq.setAttribute(THREADID_ATTR, tid);
+
+      PrintWriter writer = portletResp.getWriter();
+
+      JSR286SignatureTestCaseDetails tcd = new JSR286SignatureTestCaseDetails();
+
+      // Create result objects for the tests
+
+      PortletURL url = portletResp.createRenderURL();      ClassChecker cc = new ClassChecker(url.getClass());
+
+      /* TestCase: V2SigTestsURL_BaseURL_SIGRender_hasAddProperty             */
+      /* Details: "BaseURL has a addProperty(String, String)  method "        */
+      TestResult tr0 = tcd.getTestResultFailed(V2SIGTESTSURL_BASEURL_SIGRENDER_HASADDPROPERTY);
+      try {
+         String name = "addProperty";
+         Class<?>[] exceptions = null;
+         Class<?>[] parms = {String.class, String.class};
+         tr0.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr0.appendTcDetail(e.toString());}
+      tr0.writeTo(writer);
+
+      /* TestCase: V2SigTestsURL_BaseURL_SIGRender_hasAddPropertyReturns      */
+      /* Details: "BaseURL method addProperty(String, String) returns void    */
+      /* "                                                                    */
+      TestResult tr1 = tcd.getTestResultFailed(V2SIGTESTSURL_BASEURL_SIGRENDER_HASADDPROPERTYRETURNS);
+      try {
+         String name = "addProperty";
+         Class<?> retType = void.class;
+         Class<?>[] parms = {String.class, String.class};
+         tr1.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr1.appendTcDetail(e.toString());}
+      tr1.writeTo(writer);
+
+      /* TestCase: V2SigTestsURL_BaseURL_SIGRender_hasGetParameterMap         */
+      /* Details: "BaseURL has a getParameterMap()  method "                  */
+      TestResult tr2 = tcd.getTestResultFailed(V2SIGTESTSURL_BASEURL_SIGRENDER_HASGETPARAMETERMAP);
+      try {
+         String name = "getParameterMap";
+         Class<?>[] exceptions = null;
+         Class<?>[] parms = null;
+         tr2.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr2.appendTcDetail(e.toString());}
+      tr2.writeTo(writer);
+
+      /* TestCase: V2SigTestsURL_BaseURL_SIGRender_hasGetParameterMapReturns  */
+      /* Details: "BaseURL method getParameterMap() returns java.util.Map "   */
+      TestResult tr3 = tcd.getTestResultFailed(V2SIGTESTSURL_BASEURL_SIGRENDER_HASGETPARAMETERMAPRETURNS);
+      try {
+         String name = "getParameterMap";
+         Class<?> retType = java.util.Map.class;
+         Class<?>[] parms = null;
+         tr3.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr3.appendTcDetail(e.toString());}
+      tr3.writeTo(writer);
+
+      /* TestCase: V2SigTestsURL_BaseURL_SIGRender_hasSetParameter            */
+      /* Details: "BaseURL has a setParameter(String, String)  method "       */
+      TestResult tr4 = tcd.getTestResultFailed(V2SIGTESTSURL_BASEURL_SIGRENDER_HASSETPARAMETER);
+      try {
+         String name = "setParameter";
+         Class<?>[] exceptions = null;
+         Class<?>[] parms = {String.class, String.class};
+         tr4.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr4.appendTcDetail(e.toString());}
+      tr4.writeTo(writer);
+
+      /* TestCase: V2SigTestsURL_BaseURL_SIGRender_hasSetParameterA           */
+      /* Details: "BaseURL has a setParameter(String, String[])  method "     */
+      TestResult tr5 = tcd.getTestResultFailed(V2SIGTESTSURL_BASEURL_SIGRENDER_HASSETPARAMETERA);
+      try {
+         String name = "setParameter";
+         Class<?>[] exceptions = null;
+         Class<?>[] parms = {String.class, String[].class};
+         tr5.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr5.appendTcDetail(e.toString());}
+      tr5.writeTo(writer);
+
+      /* TestCase: V2SigTestsURL_BaseURL_SIGRender_hasSetParameterReturns     */
+      /* Details: "BaseURL method setParameter(String, String) returns void   */
+      /* "                                                                    */
+      TestResult tr6 = tcd.getTestResultFailed(V2SIGTESTSURL_BASEURL_SIGRENDER_HASSETPARAMETERRETURNS);
+      try {
+         String name = "setParameter";
+         Class<?> retType = void.class;
+         Class<?>[] parms = {String.class, String.class};
+         tr6.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr6.appendTcDetail(e.toString());}
+      tr6.writeTo(writer);
+
+      /* TestCase: V2SigTestsURL_BaseURL_SIGRender_hasSetParameterReturnsA    */
+      /* Details: "BaseURL method setParameter(String, String[]) returns      */
+      /* void "                                                               */
+      TestResult tr7 = tcd.getTestResultFailed(V2SIGTESTSURL_BASEURL_SIGRENDER_HASSETPARAMETERRETURNSA);
+      try {
+         String name = "setParameter";
+         Class<?> retType = void.class;
+         Class<?>[] parms = {String.class, String[].class};
+         tr7.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr7.appendTcDetail(e.toString());}
+      tr7.writeTo(writer);
+
+      /* TestCase: V2SigTestsURL_BaseURL_SIGRender_hasSetParameters           */
+      /* Details: "BaseURL has a setParameters(java.util.Map)  method "       */
+      TestResult tr8 = tcd.getTestResultFailed(V2SIGTESTSURL_BASEURL_SIGRENDER_HASSETPARAMETERS);
+      try {
+         String name = "setParameters";
+         Class<?>[] exceptions = null;
+         Class<?>[] parms = {java.util.Map.class};
+         tr8.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr8.appendTcDetail(e.toString());}
+      tr8.writeTo(writer);
+
+      /* TestCase: V2SigTestsURL_BaseURL_SIGRender_hasSetParametersReturns    */
+      /* Details: "BaseURL method setParameters(java.util.Map) returns void   */
+      /* "                                                                    */
+      TestResult tr9 = tcd.getTestResultFailed(V2SIGTESTSURL_BASEURL_SIGRENDER_HASSETPARAMETERSRETURNS);
+      try {
+         String name = "setParameters";
+         Class<?> retType = void.class;
+         Class<?>[] parms = {java.util.Map.class};
+         tr9.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr9.appendTcDetail(e.toString());}
+      tr9.writeTo(writer);
+
+      /* TestCase: V2SigTestsURL_BaseURL_SIGRender_hasSetProperty             */
+      /* Details: "BaseURL has a setProperty(String, String)  method "        */
+      TestResult tr10 = tcd.getTestResultFailed(V2SIGTESTSURL_BASEURL_SIGRENDER_HASSETPROPERTY);
+      try {
+         String name = "setProperty";
+         Class<?>[] exceptions = null;
+         Class<?>[] parms = {String.class, String.class};
+         tr10.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr10.appendTcDetail(e.toString());}
+      tr10.writeTo(writer);
+
+      /* TestCase: V2SigTestsURL_BaseURL_SIGRender_hasSetPropertyReturns      */
+      /* Details: "BaseURL method setProperty(String, String) returns void    */
+      /* "                                                                    */
+      TestResult tr11 = tcd.getTestResultFailed(V2SIGTESTSURL_BASEURL_SIGRENDER_HASSETPROPERTYRETURNS);
+      try {
+         String name = "setProperty";
+         Class<?> retType = void.class;
+         Class<?>[] parms = {String.class, String.class};
+         tr11.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr11.appendTcDetail(e.toString());}
+      tr11.writeTo(writer);
+
+      /* TestCase: V2SigTestsURL_BaseURL_SIGRender_hasSetSecure               */
+      /* Details: "BaseURL has a setSecure(boolean) throws                    */
+      /* PortletSecurityException method "                                    */
+      TestResult tr12 = tcd.getTestResultFailed(V2SIGTESTSURL_BASEURL_SIGRENDER_HASSETSECURE);
+      try {
+         String name = "setSecure";
+         Class<?>[] exceptions = {PortletSecurityException.class};
+         Class<?>[] parms = {boolean.class};
+         tr12.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr12.appendTcDetail(e.toString());}
+      tr12.writeTo(writer);
+
+      /* TestCase: V2SigTestsURL_BaseURL_SIGRender_hasSetSecureReturns        */
+      /* Details: "BaseURL method setSecure(boolean) returns void "           */
+      TestResult tr13 = tcd.getTestResultFailed(V2SIGTESTSURL_BASEURL_SIGRENDER_HASSETSECURERETURNS);
+      try {
+         String name = "setSecure";
+         Class<?> retType = void.class;
+         Class<?>[] parms = {boolean.class};
+         tr13.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr13.appendTcDetail(e.toString());}
+      tr13.writeTo(writer);
+
+      /* TestCase: V2SigTestsURL_BaseURL_SIGRender_hasToString                */
+      /* Details: "BaseURL has a toString()  method "                         */
+      TestResult tr14 = tcd.getTestResultFailed(V2SIGTESTSURL_BASEURL_SIGRENDER_HASTOSTRING);
+      try {
+         String name = "toString";
+         Class<?>[] exceptions = null;
+         Class<?>[] parms = null;
+         tr14.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr14.appendTcDetail(e.toString());}
+      tr14.writeTo(writer);
+
+      /* TestCase: V2SigTestsURL_BaseURL_SIGRender_hasToStringReturns         */
+      /* Details: "BaseURL method toString() returns String "                 */
+      TestResult tr15 = tcd.getTestResultFailed(V2SIGTESTSURL_BASEURL_SIGRENDER_HASTOSTRINGRETURNS);
+      try {
+         String name = "toString";
+         Class<?> retType = String.class;
+         Class<?>[] parms = null;
+         tr15.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr15.appendTcDetail(e.toString());}
+      tr15.writeTo(writer);
+
+      /* TestCase: V2SigTestsURL_BaseURL_SIGRender_hasWrite                   */
+      /* Details: "BaseURL has a write(java.io.Writer) throws                 */
+      /* java.io.IOException method "                                         */
+      TestResult tr16 = tcd.getTestResultFailed(V2SIGTESTSURL_BASEURL_SIGRENDER_HASWRITE);
+      try {
+         String name = "write";
+         Class<?>[] exceptions = {java.io.IOException.class};
+         Class<?>[] parms = {java.io.Writer.class};
+         tr16.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr16.appendTcDetail(e.toString());}
+      tr16.writeTo(writer);
+
+      /* TestCase: V2SigTestsURL_BaseURL_SIGRender_hasWriteA                  */
+      /* Details: "BaseURL has a write(java.io.Writer, boolean) throws        */
+      /* java.io.IOException method "                                         */
+      TestResult tr17 = tcd.getTestResultFailed(V2SIGTESTSURL_BASEURL_SIGRENDER_HASWRITEA);
+      try {
+         String name = "write";
+         Class<?>[] exceptions = {java.io.IOException.class};
+         Class<?>[] parms = {java.io.Writer.class, boolean.class};
+         tr17.setTcSuccess(cc.hasMethod(name, parms, exceptions));
+      } catch(Exception e) {tr17.appendTcDetail(e.toString());}
+      tr17.writeTo(writer);
+
+      /* TestCase: V2SigTestsURL_BaseURL_SIGRender_hasWriteReturns            */
+      /* Details: "BaseURL method write(java.io.Writer) returns void "        */
+      TestResult tr18 = tcd.getTestResultFailed(V2SIGTESTSURL_BASEURL_SIGRENDER_HASWRITERETURNS);
+      try {
+         String name = "write";
+         Class<?> retType = void.class;
+         Class<?>[] parms = {java.io.Writer.class};
+         tr18.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr18.appendTcDetail(e.toString());}
+      tr18.writeTo(writer);
+
+      /* TestCase: V2SigTestsURL_BaseURL_SIGRender_hasWriteReturnsA           */
+      /* Details: "BaseURL method write(java.io.Writer, boolean) returns      */
+      /* void "                                                               */
+      TestResult tr19 = tcd.getTestResultFailed(V2SIGTESTSURL_BASEURL_SIGRENDER_HASWRITERETURNSA);
+      try {
+         String name = "write";
+         Class<?> retType = void.class;
+         Class<?>[] parms = {java.io.Writer.class, boolean.class};
+         tr19.setTcSuccess(cc.methodHasReturnType(name, retType, parms));
+      } catch(Exception e) {tr19.appendTcDetail(e.toString());}
+      tr19.writeTo(writer);
+
+   }
+
+}