Implemented all tests of HeaderPortletTests_SPEC3_6_4_HeaderPortlet. Removed the case of msg==null from other portlets as it will never occur.
diff --git a/portlet-tck_3.0/V3HeaderPortletTests/src/main/docs/ModuleAssertions.csv b/portlet-tck_3.0/V3HeaderPortletTests/src/main/docs/ModuleAssertions.csv
index 7456eac..8102738 100644
--- a/portlet-tck_3.0/V3HeaderPortletTests/src/main/docs/ModuleAssertions.csv
+++ b/portlet-tck_3.0/V3HeaderPortletTests/src/main/docs/ModuleAssertions.csv
@@ -2,8 +2,7 @@
Class / Section;Keywords;Name;Testable;Description
HeaderPortletTests;;;;
SPEC3_6_4;HeaderPortlet;renderHeaders;TRUE;renderHeaders() method is called before render() method if the portlet implements HeaderPortlet interface.
-SPEC3_6_4;HeaderPortlet;renderHeaders2;TRUE;If the portlet container runtime option javax.portlet.renderHeaders is set to TRUE and the portlet also implements HeaderPortlet interface, then renderHeaders() method is called first followed by render() method with the RENDER_PART attribute set to "RENDER_HEADERS".
-SPEC3_6_4;HeaderPortlet;renderHeaders3;TRUE;If the portlet container runtime option javax.portlet.renderHeaders is set to TRUE, then header written by renderHeaders() method could be overwritten by render() method.
+SPEC3_6_4;HeaderPortlet;renderHeaders2;TRUE;The container runtime option javax.portlet.renderHeaders is disregarded for version 3.0 or later.
SPEC7_14;RenderRequest;getETag;TRUE;Method getETag(): Returns null if there is no cached response.
SPEC14;Header Attr;attributes1;TRUE;The portlet can access a map with user information attributes via the request attribute PortletRequest.USER_INFO
SPEC14;Header Attr;attributes2;TRUE;The PortletRequest.CCPP_PROFILE request attribute must return a javax.ccpp.Profile based on the current portlet request
diff --git a/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC14_HeaderAttr.java b/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC14_HeaderAttr.java
index 658b723..f596d2c 100644
--- a/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC14_HeaderAttr.java
+++ b/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC14_HeaderAttr.java
@@ -77,7 +77,6 @@
String msg = (String) portletReq.getPortletSession().getAttribute(
RESULT_ATTR_PREFIX + "HeaderPortletTests_SPEC14_HeaderAttr",
APPLICATION_SCOPE);
- msg = (msg.equals("nullnull")) ? "Not ready. click test case link." : msg;
writer.write("<p>" + msg + "</p>\n");
portletReq.getPortletSession().removeAttribute(
RESULT_ATTR_PREFIX + "HeaderPortletTests_SPEC14_HeaderAttr",
diff --git a/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC14_RenderState_ApiHeader.java b/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC14_RenderState_ApiHeader.java
index 5935ec3..2049ca6 100644
--- a/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC14_RenderState_ApiHeader.java
+++ b/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC14_RenderState_ApiHeader.java
@@ -83,7 +83,6 @@
String msg = (String) portletReq.getPortletSession().getAttribute(
RESULT_ATTR_PREFIX + "HeaderPortletTests_SPEC14_RenderState_ApiHeader",
APPLICATION_SCOPE);
- msg = (msg.equals("nullnull")) ? "Not ready. click test case link." : msg;
writer.write("<p>" + msg + "</p>\n");
portletReq.getPortletSession().removeAttribute(
RESULT_ATTR_PREFIX + "HeaderPortletTests_SPEC14_RenderState_ApiHeader",
diff --git a/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC3_6_4_HeaderPortlet.java b/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC3_6_4_HeaderPortlet.java
index 9ae95d1..f13a8f7 100644
--- a/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC3_6_4_HeaderPortlet.java
+++ b/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC3_6_4_HeaderPortlet.java
@@ -18,40 +18,46 @@
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.annotations.*;
-import javax.portlet.filter.*;
-import javax.servlet.*;
-import javax.servlet.http.*;
-import javax.portlet.tck.beans.*;
-import javax.portlet.tck.constants.*;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.Map;
+
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.HeaderPortlet;
+import javax.portlet.HeaderRequest;
+import javax.portlet.HeaderResponse;
+import javax.portlet.Portlet;
+import javax.portlet.PortletConfig;
+import javax.portlet.PortletException;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+import javax.portlet.tck.beans.TestResult;
import javax.portlet.tck.util.ModuleTestCaseDetails;
-import static javax.portlet.tck.util.ModuleTestCaseDetails.*;
-import static javax.portlet.tck.constants.Constants.*;
-import static javax.portlet.PortletSession.*;
-import static javax.portlet.ResourceURL.*;
+
+import static javax.portlet.tck.util.ModuleTestCaseDetails.V3HEADERPORTLETTESTS_SPEC3_6_4_HEADERPORTLET_RENDERHEADERS;
+import static javax.portlet.tck.util.ModuleTestCaseDetails.V3HEADERPORTLETTESTS_SPEC3_6_4_HEADERPORTLET_RENDERHEADERS2;
+import static javax.portlet.tck.constants.Constants.RESULT_ATTR_PREFIX;
+import static javax.portlet.PortletSession.APPLICATION_SCOPE;
/**
- * 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 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.
*
*/
-@PortletConfiguration(portletName = "HeaderPortletTests_SPEC3_6_4_HeaderPortlet")
-public class HeaderPortletTests_SPEC3_6_4_HeaderPortlet implements Portlet {
-
+public class HeaderPortletTests_SPEC3_6_4_HeaderPortlet
+ implements Portlet, HeaderPortlet {
+ private boolean tr0_success = false;
private PortletConfig portletConfig = null;
@Override
public void init(PortletConfig config) throws PortletException {
- this.portletConfig = config;
+ // this.portletConfig = config;
}
@Override
@@ -59,49 +65,77 @@
}
@Override
- public void processAction(ActionRequest portletReq, ActionResponse portletResp) throws PortletException, IOException {
+ public void processAction(ActionRequest portletReq,
+ ActionResponse portletResp) throws PortletException, IOException {
}
@Override
- public void render(RenderRequest portletReq, RenderResponse portletResp) throws PortletException, IOException {
+ public void render(RenderRequest portletReq, RenderResponse portletResp)
+ throws PortletException, IOException {
PrintWriter writer = portletResp.getWriter();
ModuleTestCaseDetails tcd = new ModuleTestCaseDetails();
- /* TestCase: V3HeaderPortletTests_SPEC3_6_4_HeaderPortlet_renderHeaders */
- /* Details: "renderHeaders() method is called before render() method if the */
- /* portlet implements HeaderPortlet interface." */
+ /* TestCase: V3HeaderPortletTests_SPEC3_6_4_HeaderPortlet_renderHeaders */
+ /*
+ * Details: "renderHeaders() method is called before render() method if
+ * the portlet implements HeaderPortlet interface."
+ */
{
- TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC3_6_4_HEADERPORTLET_RENDERHEADERS);
- /* TODO: implement test */
- result.appendTcDetail("Not implemented.");
+ TestResult result = tcd.getTestResultFailed(
+ V3HEADERPORTLETTESTS_SPEC3_6_4_HEADERPORTLET_RENDERHEADERS);
+ result.setTcSuccess(tr0_success);
+ result.writeTo(writer);
+ tr0_success = false;
+ }
+
+ String msg = (String) portletReq.getPortletSession().getAttribute(
+ RESULT_ATTR_PREFIX + "HeaderPortletTests_SPEC3_6_4_HeaderPortlet",
+ APPLICATION_SCOPE);
+ writer.write("<p>" + msg + "</p>\n");
+ portletReq.getPortletSession().removeAttribute(
+ RESULT_ATTR_PREFIX + "HeaderPortletTests_SPEC3_6_4_HeaderPortlet",
+ APPLICATION_SCOPE);
+
+ }
+
+ @Override
+ public void renderHeaders(HeaderRequest portletReq,
+ HeaderResponse portletResp) throws PortletException, IOException {
+
+ StringWriter writer = new StringWriter();
+
+ ModuleTestCaseDetails tcd = new ModuleTestCaseDetails();
+
+ tr0_success = true;
+
+ /*
+ * TestCase: V3HeaderPortletTests_SPEC3_6_4_HeaderPortlet_renderHeaders2
+ */
+ /*
+ * Details: "The container runtime option javax.portlet.renderHeaders is
+ * disregarded for version 3.0 or later."
+ */
+ {
+ TestResult result = tcd.getTestResultFailed(
+ V3HEADERPORTLETTESTS_SPEC3_6_4_HEADERPORTLET_RENDERHEADERS2);
+ Map<String, String[]> runtimeOptions = portletConfig
+ .getContainerRuntimeOptions();
+ String[] renderHeaders = runtimeOptions
+ .get("javax.portlet.renderHeaders");
+ if (renderHeaders == null || renderHeaders.length == 0) {
+ result.setTcSuccess(true);
+ } else {
+ result.appendTcDetail(
+ "Failed because javax.portlet.renderHeaders is found equal to "
+ + renderHeaders[0]);
+ }
result.writeTo(writer);
}
- /* TestCase: V3HeaderPortletTests_SPEC3_6_4_HeaderPortlet_renderHeaders2 */
- /* Details: "If the portlet container runtime option */
- /* javax.portlet.renderHeaders is set to TRUE and the portlet also implements */
- /* HeaderPortlet interface, then renderHeaders() method is called first */
- /* followed by render() method with the RENDER_PART attribute set to */
- /* \"RENDER_HEADERS\"." */
- {
- TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC3_6_4_HEADERPORTLET_RENDERHEADERS2);
- /* TODO: implement test */
- result.appendTcDetail("Not implemented.");
- result.writeTo(writer);
- }
-
- /* TestCase: V3HeaderPortletTests_SPEC3_6_4_HeaderPortlet_renderHeaders3 */
- /* Details: "If the portlet container runtime option */
- /* javax.portlet.renderHeaders is set to TRUE, then header written by */
- /* renderHeaders() method could be overwritten by render() method." */
- {
- TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC3_6_4_HEADERPORTLET_RENDERHEADERS3);
- /* TODO: implement test */
- result.appendTcDetail("Not implemented.");
- result.writeTo(writer);
- }
-
+ portletReq.getPortletSession().setAttribute(
+ RESULT_ATTR_PREFIX + "HeaderPortletTests_SPEC3_6_4_HeaderPortlet",
+ writer.toString(), APPLICATION_SCOPE);
}
}
diff --git a/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC7_14_RenderRequest.java b/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC7_14_RenderRequest.java
index cc95dd7..a136fee 100644
--- a/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC7_14_RenderRequest.java
+++ b/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC7_14_RenderRequest.java
@@ -70,7 +70,6 @@
String msg = (String) portletReq.getPortletSession().getAttribute(
RESULT_ATTR_PREFIX + "HeaderPortletTests_SPEC7_14_RenderRequest",
APPLICATION_SCOPE);
- msg = (msg.equals("nullnull")) ? "Not ready. click test case link." : msg;
writer.write("<p>" + msg + "</p>\n");
portletReq.getPortletSession().removeAttribute(
RESULT_ATTR_PREFIX + "HeaderPortletTests_SPEC7_14_RenderRequest",
diff --git a/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/util/ModuleTestCaseDetails.java b/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/util/ModuleTestCaseDetails.java
index 642d59a..5c6905f 100644
--- a/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/util/ModuleTestCaseDetails.java
+++ b/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/util/ModuleTestCaseDetails.java
@@ -36,7 +36,6 @@
public final static String V3HEADERPORTLETTESTS_SPEC3_6_4_HEADERPORTLET_RENDERHEADERS = "V3HeaderPortletTests_SPEC3_6_4_HeaderPortlet_renderHeaders";
public final static String V3HEADERPORTLETTESTS_SPEC3_6_4_HEADERPORTLET_RENDERHEADERS2 = "V3HeaderPortletTests_SPEC3_6_4_HeaderPortlet_renderHeaders2";
- public final static String V3HEADERPORTLETTESTS_SPEC3_6_4_HEADERPORTLET_RENDERHEADERS3 = "V3HeaderPortletTests_SPEC3_6_4_HeaderPortlet_renderHeaders3";
public final static String V3HEADERPORTLETTESTS_SPEC7_14_RENDERREQUEST_GETETAG = "V3HeaderPortletTests_SPEC7_14_RenderRequest_getETag";
public final static String V3HEADERPORTLETTESTS_SPEC14_HEADERATTR_ATTRIBUTES1 = "V3HeaderPortletTests_SPEC14_HeaderAttr_attributes1";
public final static String V3HEADERPORTLETTESTS_SPEC14_HEADERATTR_ATTRIBUTES2 = "V3HeaderPortletTests_SPEC14_HeaderAttr_attributes2";
@@ -258,8 +257,7 @@
static {
tcd.put(V3HEADERPORTLETTESTS_SPEC3_6_4_HEADERPORTLET_RENDERHEADERS, "renderHeaders() method is called before render() method if the portlet implements HeaderPortlet interface.");
- tcd.put(V3HEADERPORTLETTESTS_SPEC3_6_4_HEADERPORTLET_RENDERHEADERS2, "If the portlet container runtime option javax.portlet.renderHeaders is set to TRUE and the portlet also implements HeaderPortlet interface, then renderHeaders() method is called first followed by render() method with the RENDER_PART attribute set to \"RENDER_HEADERS\".");
- tcd.put(V3HEADERPORTLETTESTS_SPEC3_6_4_HEADERPORTLET_RENDERHEADERS3, "If the portlet container runtime option javax.portlet.renderHeaders is set to TRUE, then header written by renderHeaders() method could be overwritten by render() method.");
+ tcd.put(V3HEADERPORTLETTESTS_SPEC3_6_4_HEADERPORTLET_RENDERHEADERS2, "The container runtime option javax.portlet.renderHeaders is disregarded for version 3.0 or later.");
tcd.put(V3HEADERPORTLETTESTS_SPEC7_14_RENDERREQUEST_GETETAG, "Method getETag(): Returns null if there is no cached response.");
tcd.put(V3HEADERPORTLETTESTS_SPEC14_HEADERATTR_ATTRIBUTES1, "The portlet can access a map with user information attributes via the request attribute PortletRequest.USER_INFO");
tcd.put(V3HEADERPORTLETTESTS_SPEC14_HEADERATTR_ATTRIBUTES2, "The PortletRequest.CCPP_PROFILE request attribute must return a javax.ccpp.Profile based on the current portlet request");
diff --git a/portlet-tck_3.0/V3HeaderPortletTests/src/main/resources/xml-resources/additionalTCs.xml b/portlet-tck_3.0/V3HeaderPortletTests/src/main/resources/xml-resources/additionalTCs.xml
index b184fea..ee077e3 100644
--- a/portlet-tck_3.0/V3HeaderPortletTests/src/main/resources/xml-resources/additionalTCs.xml
+++ b/portlet-tck_3.0/V3HeaderPortletTests/src/main/resources/xml-resources/additionalTCs.xml
@@ -22,7 +22,6 @@
<!-- JSR 362 API HeaderPortletTests test case names and page mappings -->
<entry key="V3HeaderPortletTests_SPEC3_6_4_HeaderPortlet_renderHeaders">V3HeaderPortletTests</entry>
<entry key="V3HeaderPortletTests_SPEC3_6_4_HeaderPortlet_renderHeaders2">V3HeaderPortletTests</entry>
-<entry key="V3HeaderPortletTests_SPEC3_6_4_HeaderPortlet_renderHeaders3">V3HeaderPortletTests</entry>
<entry key="V3HeaderPortletTests_SPEC7_14_RenderRequest_getETag">V3HeaderPortletTests</entry>
<entry key="V3HeaderPortletTests_SPEC14_HeaderAttr_attributes1">V3HeaderPortletTests</entry>
<entry key="V3HeaderPortletTests_SPEC14_HeaderAttr_attributes2">V3HeaderPortletTests</entry>
diff --git a/portlet-tck_3.0/V3HeaderPortletTests/src/main/webapp/WEB-INF/portlet.xml b/portlet-tck_3.0/V3HeaderPortletTests/src/main/webapp/WEB-INF/portlet.xml
new file mode 100644
index 0000000..c61f2d6
--- /dev/null
+++ b/portlet-tck_3.0/V3HeaderPortletTests/src/main/webapp/WEB-INF/portlet.xml
@@ -0,0 +1,43 @@
+<!--
+ 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://xmlns.jcp.org/xml/ns/portlet"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:rp="http://www.apache.org/portals/pluto/pub-render-params/ResourcePortlet"
+ xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/portlet http://xmlns.jcp.org/xml/ns/portlet/portlet-app_3_0.xsd"
+ version="3.0"
+ id="V3HeaderPortletTests">
+
+ <portlet>
+ <portlet-name>HeaderPortletTests_SPEC3_6_4_HeaderPortlet</portlet-name>
+ <portlet-class>javax.portlet.tck.portlets.HeaderPortletTests_SPEC3_6_4_HeaderPortlet</portlet-class>
+ <expiration-cache>0</expiration-cache>
+ <supports>
+ <mime-type>text/html</mime-type>
+ </supports>
+ <supported-locale>en_US</supported-locale>
+ <portlet-info>
+ <title>HeaderPortletTests_SPEC3_6_4_HeaderPortlet</title>
+ </portlet-info>
+ <container-runtime-option>
+ <name>javax.portlet.renderHeaders</name>
+ <value>true</value>
+ </container-runtime-option>
+ </portlet>
+
+</portlet-app>