Made new module V3HeaderPortletTests to test HeaderPortlet, HeaderRequest and HeaderResponse Interface.
diff --git a/portlet-tck_3.0/V3HeaderPortletTests/pom.xml b/portlet-tck_3.0/V3HeaderPortletTests/pom.xml
new file mode 100644
index 0000000..f4589cd
--- /dev/null
+++ b/portlet-tck_3.0/V3HeaderPortletTests/pom.xml
@@ -0,0 +1,134 @@
+<?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.     
+--><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>portlet-tck</artifactId>
+      <version>3.0-SNAPSHOT</version>
+   </parent>
+
+   <artifactId>tck-V3HeaderPortletTests</artifactId>
+   <packaging>war</packaging>
+
+   <dependencies>
+      <dependency>
+         <groupId>org.apache.portals.pluto</groupId>
+         <artifactId>portlet-api</artifactId>
+      </dependency>
+      <dependency>
+         <groupId>org.apache.tomcat</groupId>
+         <artifactId>tomcat-servlet-api</artifactId>
+      </dependency>
+      <dependency>
+         <groupId>javax.portlet</groupId>
+         <artifactId>tck-common</artifactId>
+         <version>${project.version}</version>
+         <scope>compile</scope>
+      </dependency>
+
+      <!-- for tooling purposes -->
+      <dependency>
+         <groupId>org.apache.tomcat</groupId>
+         <artifactId>tomcat-jsp-api</artifactId>
+         <scope>provided</scope>
+      </dependency>
+      <dependency>
+         <groupId>org.apache.tomcat</groupId>
+         <artifactId>tomcat-el-api</artifactId>
+         <scope>provided</scope>
+      </dependency>
+      <dependency>
+         <groupId>org.apache.taglibs</groupId>
+         <artifactId>taglibs-standard-spec</artifactId>
+         <scope>provided</scope>
+      </dependency>
+      <dependency>
+         <groupId>org.apache.taglibs</groupId>
+         <artifactId>taglibs-standard-impl</artifactId>
+         <scope>provided</scope>
+      </dependency>
+      <dependency>
+         <groupId>org.apache.taglibs</groupId>
+         <artifactId>taglibs-standard-jstlel</artifactId>
+         <scope>provided</scope>
+      </dependency>
+      <dependency>
+         <groupId>org.apache.portals.pluto</groupId>
+         <artifactId>pluto-taglib</artifactId>
+         <scope>provided</scope>
+      </dependency>
+   </dependencies>
+
+   <properties>
+      <!-- This module defines all test cases in a file (TCs are not generated from the portlet.xml) -->
+      <additional.testcases.only>true</additional.testcases.only>
+
+      <!-- This module places the portlets on the page through a file. (Page is not generated from the portlet.xml) -->
+      <additional.pagefile.only>true</additional.pagefile.only>
+   </properties>
+
+   <build>
+      <finalName>${project.artifactId}</finalName>
+      
+      <plugins>
+         <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-compiler-plugin</artifactId>
+         </plugin>
+         <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-war-plugin</artifactId>
+         </plugin>
+         
+         <!-- copy page & test case files, renaming properly -->
+         <plugin>
+            <groupId>com.coderplus.maven.plugins</groupId>
+            <artifactId>copy-rename-maven-plugin</artifactId>
+         </plugin>
+      </plugins>
+   </build>
+
+
+   <profiles>
+      <profile>
+         <id>pluto</id>
+
+         <dependencies>
+            <dependency>
+               <groupId>org.apache.taglibs</groupId>
+               <artifactId>taglibs-standard-spec</artifactId>
+               <scope>compile</scope>
+            </dependency>
+            <dependency>
+               <groupId>org.apache.taglibs</groupId>
+               <artifactId>taglibs-standard-impl</artifactId>
+               <scope>compile</scope>
+            </dependency>
+            <dependency>
+               <groupId>org.apache.taglibs</groupId>
+               <artifactId>taglibs-standard-jstlel</artifactId>
+               <scope>compile</scope>
+            </dependency>
+         </dependencies>
+        
+      </profile>
+   </profiles>
+
+</project>
\ No newline at end of file
diff --git a/portlet-tck_3.0/V3HeaderPortletTests/src/main/docs/ModuleAssertions.csv b/portlet-tck_3.0/V3HeaderPortletTests/src/main/docs/ModuleAssertions.csv
new file mode 100644
index 0000000..7456eac
--- /dev/null
+++ b/portlet-tck_3.0/V3HeaderPortletTests/src/main/docs/ModuleAssertions.csv
@@ -0,0 +1,229 @@
+PARMS outputPath=C:\Users\IBM_ADMIN\Downloads\TCKTool
+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.
+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
+SPEC14;Header Attr;attributes3;TRUE;During header processing, the LIFECYCLE_PHASE ("javax.portlet.lifecycle_phase") attribute will contain the string "HEADER_PHASE"
+SPEC14;Header Req;contentType1;TRUE;The getResponseContentType method returns a String representing the default content type the portlet container assumes for the output
+SPEC14;Header Req;contentType2;TRUE;The getResponseContentTypes method returns an Enumeration of String elements representing the acceptable content types for the output in order of preference
+SPEC14;Header Req;contentType3;TRUE;The first element of the Enumeration returned by the getResponseContentTypes method must equal the value returned by the getResponseContentType method
+SPEC14;Header Req;contentType4;TRUE;If a portlet defines support for all content types using a wildcard and the portlet container supports all content types, the getResponseContentType may return the wildcard
+SPEC14;Header Req;contentType5;TRUE;If a portlet defines support for all content types using a wildcard and the portlet container supports all content types, the getResponseContentType may return the preferred content type
+SPEC14;Header Req;windowId1;TRUE;The getWindowID method returns a String representing the current window ID
+SPEC14;Header Req;windowId2;FALSE;The string returned by getWindowID method is unique for this portlet window
+SPEC14;Header Req;windowId3;FALSE;The string returned by getWindowID method is constant over the lifetime of the portlet window
+SPEC14;Header Req;windowId4;TRUE;The string returned by getWindowID method must be the same ID used for scoping portlet-scope session attributes
+SPEC14;Header Req;contentType10;TRUE;Within the header method, the content type must include only the MIME type, not the character set
+SPEC14;Header Req;contentType11;TRUE;Within the header method, the getResponseContentTypes method must return only the content types supported by the current portlet mode
+SPEC14;Header Req;contentType13;TRUE;The character set of the response can be retrieved via the HeaderResponse.getCharacterEncoding method
+SPEC14;RenderState_ApiHeader;getPortletMode;TRUE;Method getPortletMode(): Returns current PortletMode 
+SPEC14;RenderState_ApiHeader;getWindowState;TRUE;Method getWindowState(): Returns current WindowState
+SPEC14;RenderState_ApiHeader;getRenderParameters;TRUE;Method getRenderParameters(): Returns an immutable RenderParameters object representing the private and public render parameters
+SPEC14;PortletRequest_ApiHeader;fieldUSER_INFO;TRUE;Has String field USER_INFO with value of "javax.portlet.userinfo" 
+SPEC14;PortletRequest_ApiHeader;fieldCCPP_PROFILE;TRUE;Has String field CCPP_PROFILE with value of "javax.portlet.ccpp" 
+SPEC14;PortletRequest_ApiHeader;fieldBASIC_AUTH;TRUE;Has String field BASIC_AUTH with value of "BASIC" 
+SPEC14;PortletRequest_ApiHeader;fieldFORM_AUTH;TRUE;Has String field FORM_AUTH with value of "FORM" 
+SPEC14;PortletRequest_ApiHeader;fieldCLIENT_CERT_AUTH;TRUE;Has String field CLIENT_CERT_AUTH with value of "CLIENT_CERT" 
+SPEC14;PortletRequest_ApiHeader;fieldDIGEST_AUTH;TRUE;Has String field DIGEST_AUTH with value of "DIGEST" 
+SPEC14;PortletRequest_ApiHeader;fieldACTION_PHASE;TRUE;Has String field ACTION_PHASE with value of "ACTION_PHASE" 
+SPEC14;PortletRequest_ApiHeader;fieldEVENT_PHASE;TRUE;Has String field EVENT_PHASE with value of "EVENT_PHASE" 
+SPEC14;PortletRequest_ApiHeader;fieldRENDER_PHASE;TRUE;Has String field RENDER_PHASE with value of "RENDER_PHASE" 
+SPEC14;PortletRequest_ApiHeader;fieldRESOURCE_PHASE;TRUE;Has String field RESOURCE_PHASE with value of "RESOURCE_PHASE" 
+SPEC14;PortletRequest_ApiHeader;fieldHEADER_PHASE;TRUE;Has String field HEADER_PHASE with value of "HEADER_PHASE" 
+SPEC14;PortletRequest_ApiHeader;fieldLIFECYCLE_PHASE;TRUE;Has String field LIFECYCLE_PHASE with value of "javax.portlet.lifecycle_phase" 
+SPEC14;PortletRequest_ApiHeader;fieldRENDER_PART;TRUE;Has String field RENDER_PART with value of "javax.portlet.render_part" 
+SPEC14;PortletRequest_ApiHeader;fieldRENDER_HEADERS;TRUE;Has String field RENDER_HEADERS with value of "RENDER_HEADERS" 
+SPEC14;PortletRequest_ApiHeader;fieldRENDER_MARKUP;TRUE;Has String field RENDER_MARKUP with value of "RENDER_MARKUP" 
+SPEC14;PortletRequest_ApiHeader;fieldACTION_SCOPE_ID;TRUE;Has String field ACTION_SCOPE_ID with value of "javax.portlet.as" 
+SPEC14;PortletRequest_ApiHeader;isWindowStateAllowed1;TRUE;Method isWindowStateAllowed(WindowState): Returns true if the specified WindowState is allowed
+SPEC14;PortletRequest_ApiHeader;isWindowStateAllowed2;TRUE;Method isWindowStateAllowed(WindowState): Returns false if the specified WindowState is not allowed
+SPEC14;PortletRequest_ApiHeader;isPortletModeAllowed1;TRUE;Method isPortletModeAllowed(PortletMode): Returns true if the specified PortletMode is allowed
+SPEC14;PortletRequest_ApiHeader;isPortletModeAllowed2;TRUE;Method isPortletModeAllowed(PortletMode): Returns false if the specified PortletMode is not allowed
+SPEC14;PortletRequest_ApiHeader;getPreferences;TRUE;Method getPreferences(): Returns the PortletPreferences object associated with the portlet
+SPEC14;PortletRequest_ApiHeader;getPortletSessionA1;TRUE;Method getPortletSession(): Returns current PortletSession if one already exists
+SPEC14;PortletRequest_ApiHeader;getPortletSessionA2;TRUE;Method getPortletSession(): Returns new PortletSession if one does not already exist
+SPEC14;PortletRequest_ApiHeader;getPortletSessionB1;TRUE;Method getPortletSession(boolean): If input flag is true, returns current PortletSession if one already exists
+SPEC14;PortletRequest_ApiHeader;getPortletSessionB2;TRUE;Method getPortletSession(boolean): If input flag is true, returns new PortletSession if one does not already exist
+SPEC14;PortletRequest_ApiHeader;getPortletSessionB3;TRUE;Method getPortletSession(boolean): If input flag is false, returns current PortletSession if one already exists
+SPEC14;PortletRequest_ApiHeader;getPortletSessionB4;TRUE;Method getPortletSession(boolean): If input flag is false, returns null if one does not already exist
+SPEC14;PortletRequest_ApiHeader;getProperty1;TRUE;Method getProperty(String): If specified request property exists, returns its value 
+SPEC14;PortletRequest_ApiHeader;getProperty2;TRUE;Method getProperty(String): If specified request property does not exist, returns null
+SPEC14;PortletRequest_ApiHeader;getProperty3;TRUE;Method getProperty(String): Throws IllegalArgumentException if the name is null
+SPEC14;PortletRequest_ApiHeader;getProperties1;TRUE;Method getProperties(String): If specified request property exists, returns its values as an Enumeration 
+SPEC14;PortletRequest_ApiHeader;getProperties2;TRUE;Method getProperties(String): If specified request property does not exist, returns an empty Enumeration
+SPEC14;PortletRequest_ApiHeader;getProperties3;TRUE;Method getProperties(String): Throws IllegalArgumentException if the name is null
+SPEC14;PortletRequest_ApiHeader;getPropertyNames1;TRUE;Method getPropertyNames(): Returns an Enumeration of all request property names
+SPEC14;PortletRequest_ApiHeader;getPropertyNames2;TRUE;Method getPropertyNames(): Returns an empty Enumeration if there are no request properties defined
+SPEC14;PortletRequest_ApiHeader;getPortalContext;TRUE;Method getPortalContext(): Returns the context of the portal
+SPEC14;PortletRequest_ApiHeader;getAuthType1;TRUE;Method getAuthType(): Returns a String indicating the authentication type if the request was authenticated
+SPEC14;PortletRequest_ApiHeader;getAuthType2;TRUE;Method getAuthType(): Returns null if the request was not authenticated
+SPEC14;PortletRequest_ApiHeader;getContextPath1;TRUE;Method getContextPath(): Returns a String representing the context path associated with the portlet
+SPEC14;PortletRequest_ApiHeader;getContextPath2;TRUE;Method getContextPath(): Returns an empty String if the portlet is deployed in the default context
+SPEC14;PortletRequest_ApiHeader;getContextPath3;TRUE;Method getContextPath(): If the context path is not empty, it must start with "/" and may not end with "/"
+SPEC14;PortletRequest_ApiHeader;getRemoteUser1;TRUE;Method getRemoteUser(): Returns a String representing the login of the user if the request is authenticated
+SPEC14;PortletRequest_ApiHeader;getRemoteUser2;TRUE;Method getRemoteUser(): Returns null if the request has not been authenticated
+SPEC14;PortletRequest_ApiHeader;getUserPrincipal1;TRUE;Method getUserPrincipal(): Returns a java.security.Principal object representing the user if the request has been authenticated
+SPEC14;PortletRequest_ApiHeader;getUserPrincipal2;TRUE;Method getUserPrincipal(): Returns null if the request has not been authenticated
+SPEC14;PortletRequest_ApiHeader;isUserInRole1;TRUE;Method isUserInRole(): Returns true if the authenticated user is in the specified role
+SPEC14;PortletRequest_ApiHeader;isUserInRole2;TRUE;Method isUserInRole(): Returns false if the authenticated user is not in the specified role
+SPEC14;PortletRequest_ApiHeader;isUserInRole3;TRUE;Method isUserInRole(): Returns false if the user is not authenticated
+SPEC14;PortletRequest_ApiHeader;getAttribute1;TRUE;Method getAttribute(String): Returns a java.lang.Object for the specified attribute name
+SPEC14;PortletRequest_ApiHeader;getAttribute2;TRUE;Method getAttribute(String): Returns null if no attribute with the specified name exists
+SPEC14;PortletRequest_ApiHeader;getAttribute3;TRUE;Method getAttribute(String): Throws IllegalArgumentException if the name is null
+SPEC14;PortletRequest_ApiHeader;getAttributeNames1;TRUE;Method getAttributeNames(): Returns a java.util.Enumeration<java.lang.String> of the available attribute names
+SPEC14;PortletRequest_ApiHeader;getAttributeNames2;TRUE;Method getAttributeNames(): Returns an empty Enumeration if there are no attributes available
+SPEC14;PortletRequest_ApiHeader;getParameter1;TRUE;Method getParameter(String): Returns String value of parameter specified by the name
+SPEC14;PortletRequest_ApiHeader;getParameter2;TRUE;Method getParameter(String): Returns String value of a public render parameter specified by the name
+SPEC14;PortletRequest_ApiHeader;getParameter3;TRUE;Method getParameter(String): Returns null if no parameter exists for the specified name
+SPEC14;PortletRequest_ApiHeader;getParameter4;TRUE;Method getParameter(String): Returns first String value from values array if use with a multivalued parameter
+SPEC14;PortletRequest_ApiHeader;getParameter5;TRUE;Method getParameter(String): Throws IllegalArgumentException if the name is null
+SPEC14;PortletRequest_ApiHeader;getParameterNames1;TRUE;Method getParameterNames(): Returns a java.util.Enumeration<java.lang.String> of the available parameter names
+SPEC14;PortletRequest_ApiHeader;getParameterNames2;TRUE;Method getParameterNames(): Returns an empty Enumeration if there are no parameters available
+SPEC14;PortletRequest_ApiHeader;getParameterValues1;TRUE;Method getParameterValues(String): Returns String[] value of parameter specified by the name
+SPEC14;PortletRequest_ApiHeader;getParameterValues2;TRUE;Method getParameterValues(String): Returns String[] value of a public render parameter specified by the name
+SPEC14;PortletRequest_ApiHeader;getParameterValues3;TRUE;Method getParameterValues(String): Returns null if no parameter exists for the specified name
+SPEC14;PortletRequest_ApiHeader;getParameterValues4;TRUE;Method getParameterValues(String): Throws IllegalArgumentException if the name is null
+SPEC14;PortletRequest_ApiHeader;getParameterMap1;TRUE;Method getParameterMap(): Returns an java.util.Map<java.lang.String,java.lang.String[]> object for the parameter names and values if parameters are available
+SPEC14;PortletRequest_ApiHeader;getParameterMap2;TRUE;Method getParameterMap(): The returned map contains all public and private parameters for the request
+SPEC14;PortletRequest_ApiHeader;getParameterMap3;TRUE;Method getParameterMap(): Returns an empty map if no parameters exist
+SPEC14;PortletRequest_ApiHeader;isSecure1;TRUE;Method isSecure(): Returns true if the request was made through a secure channel
+SPEC14;PortletRequest_ApiHeader;isSecure2;TRUE;Method isSecure(): Returns false if the request was not made through a secure channel
+SPEC14;PortletRequest_ApiHeader;setAttribute1;TRUE;Method setAttribute(String, Object): Stores an attribute object under the specified name in the request
+SPEC14;PortletRequest_ApiHeader;setAttribute2;TRUE;Method setAttribute(String, Object): Removes the attribute by the specified name if the object is null
+SPEC14;PortletRequest_ApiHeader;setAttribute3;TRUE;Method setAttribute(String, Object): Throws IllegalArgumentException if the name is null
+SPEC14;PortletRequest_ApiHeader;removeAttribute1;TRUE;Method removeAttribute(String): Removes the attribute specified by the name from the request
+SPEC14;PortletRequest_ApiHeader;removeAttribute2;TRUE;Method removeAttribute(String): Throws IllegalArgumentException if the name is null
+SPEC14;PortletRequest_ApiHeader;getRequestedSessionId1;TRUE;Method getRequestedSessionId(): Returns the session ID indicated in the client request
+SPEC14;PortletRequest_ApiHeader;getRequestedSessionId2;TRUE;Method getRequestedSessionId(): Returns null if no session ID was indicated in the client request
+SPEC14;PortletRequest_ApiHeader;isRequestedSessionIdValid1;TRUE;Method isRequestedSessionIdValid(): Returns true if the session ID is valid
+SPEC14;PortletRequest_ApiHeader;isRequestedSessionIdValid2;TRUE;Method isRequestedSessionIdValid(): Returns false if the session ID is not valid
+SPEC14;PortletRequest_ApiHeader;getResponseContentType1;TRUE;Method getResponseContentType(): Returns a String representing the portal preferred content type for the response if the content type is defined in the portlet descriptor  
+SPEC14;PortletRequest_ApiHeader;getResponseContentType2;TRUE;Method getResponseContentType(): Returns an empty Enumeration if the content type is not defined in the portlet descriptor
+SPEC14;PortletRequest_ApiHeader;getResponseContentTypes1;TRUE;Method getResponseContentTypes(): Returns an java.util.Enumeration<java.lang.String> object representing the portal preferred content types for the response if the content types are defined in the portlet descriptor
+SPEC14;PortletRequest_ApiHeader;getResponseContentTypes2;TRUE;Method getResponseContentTypes(): Returns an empty Enumeration if the content types are not defined in the portlet descriptor
+SPEC14;PortletRequest_ApiHeader;getLocale;TRUE;Method getLocale(): Returns an java.util.Locale object representing the preferred Locale for the response
+SPEC14;PortletRequest_ApiHeader;getLocales;TRUE;Method getLocales(): Returns an java.util.Enumeration<java.util.Locale> of the Locales in which the portal will accept content
+SPEC14;PortletRequest_ApiHeader;getScheme;TRUE;Method getScheme(): Returns a String value representing the scheme name for the request
+SPEC14;PortletRequest_ApiHeader;getServerName;TRUE;Method getServerName(): Returns a String value representing the host name for the request
+SPEC14;PortletRequest_ApiHeader;getServerPort;TRUE;Method getServerPort(): Returns an int value representing the port number for the request
+SPEC14;PortletRequest_ApiHeader;getWindowID;TRUE;Method getWindowID(): Returns a String value representing the portlet window ID
+SPEC14;PortletRequest_ApiHeader;getCookies1;TRUE;Method getCookies(): Returns a javax.servlet.http.Cookie[] array containing the cookies for this request
+SPEC14;PortletRequest_ApiHeader;getCookies2;TRUE;Method getCookies(): Returns null if no cookies are present
+SPEC14;PortletRequest_ApiHeader;getPrivateParameterMap1;TRUE;Method getPrivateParameterMap(): Returns an java.util.Map<java.lang.String,java.lang.String[]> object for the private parameter names and values if available
+SPEC14;PortletRequest_ApiHeader;getPrivateParameterMap2;TRUE;Method getPrivateParameterMap(): The returned map is immutable
+SPEC14;PortletRequest_ApiHeader;getPrivateParameterMap3;TRUE;Method getPrivateParameterMap(): Returns an empty map if no private parameters exist
+SPEC14;PortletRequest_ApiHeader;getPublicParameterMap1;TRUE;Method getPublicParameterMap(): Returns an java.util.Map<java.lang.String,java.lang.String[]> object for the public parameter names and values if available
+SPEC14;PortletRequest_ApiHeader;getPublicParameterMap2;TRUE;Method getPublicParameterMap(): The returned map is immutable
+SPEC14;PortletRequest_ApiHeader;getPublicParameterMap3;TRUE;Method getPublicParameterMap(): Returns an empty map if no public parameters exist
+SPEC14;PortletRequest_ApiHeader;exists;TRUE;The P3PUserInfos exists as a public static enum
+SPEC15;PortletResponse_ApiHeader;addPropertyA1;TRUE;Method addProperty(javax.servlet.http.Cookie): Adds the specified cookie property to the response
+SPEC15;PortletResponse_ApiHeader;addPropertyA2;TRUE;Method addProperty(javax.servlet.http.Cookie): Throws IllegalArgumentException if the specified cookie is null
+SPEC15;PortletResponse_ApiHeader;addPropertyB1;TRUE;Method addProperty(String, org.w3c.dom.Element): Adds an XML DOM Element to the response for the specified key
+SPEC15;PortletResponse_ApiHeader;addPropertyB2;TRUE;Method addProperty(String, org.w3c.dom.Element): If a DOM Element for the specified key already exists, the new element is added in addition to the existing element
+SPEC15;PortletResponse_ApiHeader;addPropertyB3;TRUE;Method addProperty(String, org.w3c.dom.Element): If the specified DOM Element value is null, the key is removed from the response
+SPEC15;PortletResponse_ApiHeader;addPropertyB4;TRUE;Method addProperty(String, org.w3c.dom.Element): Throws IllegalArgumentException if the specified key is null
+SPEC15;PortletResponse_ApiHeader;addPropertyC1;TRUE;Method addProperty(String, String): Adds a property value to an existing key to allow the key to have multiple values
+SPEC15;PortletResponse_ApiHeader;addPropertyC2;TRUE;Method addProperty(String, String): Throws IllegalArgumentException if the specified key is null
+SPEC15;PortletResponse_ApiHeader;setProperty1;TRUE;Method setProperty(String, String): Sets a property value for the specified key
+SPEC15;PortletResponse_ApiHeader;setProperty2;TRUE;Method setProperty(String, String): Resets any existing property values for the specified key
+SPEC15;PortletResponse_ApiHeader;setProperty3;TRUE;Method setProperty(String, String): Throws IllegalArgumentException if the specified key is null
+SPEC15;PortletResponse_ApiHeader;encodeURL1;TRUE;Method encodeURL(String): Returns a String representing the encoded URL
+SPEC15;PortletResponse_ApiHeader;encodeURL2;TRUE;Method encodeURL(String): Throws IllegalArgumentException if the input string is not an absolute URL and does not start with at "/" character
+SPEC15;PortletResponse_ApiHeader;getNamespace1;TRUE;Method getNamespace(): Returns a String containing the namespace value
+SPEC15;PortletResponse_ApiHeader;getNamespace2;FALSE;Method getNamespace(): The returned namespace is constant for the lifetime of the portlet window
+SPEC15;PortletResponse_ApiHeader;createElement1;TRUE;Method createElement(String): Returns an org.w3c.dom.Element object for the specified tag name
+SPEC15;PortletResponse_ApiHeader;createElement2;TRUE;Method createElement(String): The returned Element has nodeName set to the the specified tag name 
+SPEC15;PortletResponse_ApiHeader;createElement3;TRUE;Method createElement(String): The returned Element has localName set to null
+SPEC15;PortletResponse_ApiHeader;createElement4;TRUE;Method createElement(String): The returned Element has prefix set to null
+SPEC15;PortletResponse_ApiHeader;createElement5;TRUE;Method createElement(String): The returned Element has namespaceURI set to null
+SPEC15;PortletResponse_ApiHeader;createElement6;TRUE;Method createElement(String): Throws org.w3c.dom.DOMException - INVALID_CHARACTER_ERR if the specified name contains an illegal character. 
+SPEC15;MimeResponse_ApiHeader;fieldEXPIRATION_CACHE ;TRUE;Has String field EXPIRATION_CACHE with value of "portlet.expiration-cache"
+SPEC15;MimeResponse_ApiHeader;fieldCACHE_SCOPE ;TRUE;Has String field CACHE_SCOPE with value of "portlet.cache-scope"
+SPEC15;MimeResponse_ApiHeader;fieldPUBLIC_SCOPE ;TRUE;Has String field PUBLIC_SCOPE with value of "portlet.public-scope"
+SPEC15;MimeResponse_ApiHeader;fieldPRIVATE_SCOPE ;TRUE;Has String field PRIVATE_SCOPE with value of "portlet.private-scope"
+SPEC15;MimeResponse_ApiHeader;fieldETAG ;TRUE;Has String field ETAG with value of "portlet.ETag"
+SPEC15;MimeResponse_ApiHeader;fieldUSE_CACHED_CONTENT ;TRUE;Has String field USE_CACHED_CONTENT with value of "portlet.use-cached-content"
+SPEC15;MimeResponse_ApiHeader;fieldNAMESPACED_RESPONSE;TRUE;Has String field NAMESPACED_RESPONSE with value of "X-JAVAX-PORTLET-NAMESPACED-RESPONSE"
+SPEC15;MimeResponse_ApiHeader;fieldMARKUP_HEAD_ELEMENT;TRUE;Has String field MARKUP_HEAD_ELEMENT with value of "javax.portlet.markup.head.element"
+SPEC15;MimeResponse_ApiHeader;getContentType1;TRUE;Method getContentType(): Returns a String containing the MIME type that can be used with the response
+SPEC15;MimeResponse_ApiHeader;getContentType2;TRUE;Method getContentType(): Returns null if no content type is set
+SPEC15;MimeResponse_ApiHeader;setContentType1;TRUE;Method setContentType(String): Sets the MIME type for the response
+SPEC15;MimeResponse_ApiHeader;setContentType2;TRUE;Method setContentType(String): Has no effect if called after the getWriter method has been called
+SPEC15;MimeResponse_ApiHeader;setContentType3;TRUE;Method setContentType(String): Has no effect if called after the getPortletOutputStream method has been called
+SPEC15;MimeResponse_ApiHeader;setContentType4;TRUE;Method setContentType(String): Throws IllegalArgumentException if the specified MIME type is invalid
+SPEC15;MimeResponse_ApiHeader;getCharacterEncoding;TRUE;Method getCharacterEncoding(): Returns a String containing the name of the charset used for the response body
+SPEC15;MimeResponse_ApiHeader;getWriter1;TRUE;Method getWriter(): Returns a PrintWriter object
+SPEC15;MimeResponse_ApiHeader;getWriter2;TRUE;Method getWriter(): Throws IllegalStateException if called after the getPortletOutputStream method has been called
+SPEC15;MimeResponse_ApiHeader;getWriter3;FALSE;Method getWriter(): Throws IOException if an I/O error occurs
+SPEC15;MimeResponse_ApiHeader;getLocale;TRUE;Method getLocale(): Returns an java.util.Locale representing the locale assigned to the response
+SPEC15;MimeResponse_ApiHeader;setBufferSize1;TRUE;Method setBufferSize(int): Sets the preferred buffer size for the response body
+SPEC15;MimeResponse_ApiHeader;setBufferSize2;TRUE;Method setBufferSize(int): Throws IllegalStateException if called after content has been written
+SPEC15;MimeResponse_ApiHeader;getBufferSize1;TRUE;Method getBufferSize(): Returns an int designating the actual buffer size used for the response
+SPEC15;MimeResponse_ApiHeader;getBufferSize2;TRUE;Method getBufferSize(): Returns null if buffering is not used
+SPEC15;MimeResponse_ApiHeader;flushBuffer1;TRUE;Method flushBuffer(): Returns void and flushes buffer to OutputStream
+SPEC15;MimeResponse_ApiHeader;flushBuffer2;FALSE;Method flushBuffer(): Throws IOException if an I/O error occurs
+SPEC15;MimeResponse_ApiHeader;resetBuffer1;TRUE;Method resetBuffer(): Returns void and clears and data and properties from the buffer
+SPEC15;MimeResponse_ApiHeader;resetBuffer2;TRUE;Method resetBuffer(): Throws IllegalStateException if called after the response has been committed
+SPEC15;MimeResponse_ApiHeader;isCommitted1;TRUE;Method isCommitted(): Returns true if the response has been committed
+SPEC15;MimeResponse_ApiHeader;isCommitted2;TRUE;Method isCommitted(): Returns false if the response has not been committed
+SPEC15;MimeResponse_ApiHeader;reset1;TRUE;Method reset(): Returns void and clears and data and properties from the buffer
+SPEC15;MimeResponse_ApiHeader;reset2;TRUE;Method reset(): Throws IllegalStateException if called after the response has been committed
+SPEC15;MimeResponse_ApiHeader;getPortletOutputStream1;TRUE;Method getPortletOutputStream(): Returns a PortletOutputStream object
+SPEC15;MimeResponse_ApiHeader;getPortletOutputStream2;TRUE;Method getPortletOutputStream(): Throws IllegalStateException if called after the getWriter method has been called
+SPEC15;MimeResponse_ApiHeader;getPortletOutputStream3;FALSE;Method getPortletOutputStream(): Throws IOException if an I/O error occurs
+SPEC15;MimeResponse_ApiHeader;createRenderURL;TRUE;Method createRenderURL(): Returns a PortletURL object representing a render URL targeting the portlet
+SPEC15;MimeResponse_ApiHeader;createActionURL;TRUE;Method createActionURL(): Returns a PortletURL object representing an action URL targeting the portlet
+SPEC15;MimeResponse_ApiHeader;createResourceURL;TRUE;Method createResourceURL(): Returns a ResourceURL object targeting the portlet
+SPEC15;MimeResponse_ApiHeader;getCacheControl;TRUE;Method getCacheControl(): Returns a CacheControl object
+SPEC15;Header;parameters10;TRUE;The portlet-container must not propagate parameters received in an action or event request to subsequent header requests of the portlet
+SPEC15;Header;parameters11;TRUE;If a portlet receives a render request that is the result of a client request targeted to another portlet in the portal page, the parameters should be the same parameters as of the previous render request from this client
+SPEC15;Header;parameters13;TRUE;If a portlet receives a render request that is the result of invoking a render URL targeting this portlet the render parameters received with the render request must be the parameters set on the render URL
+SPEC15;Header;parameters14;FALSE;Client requests triggered by portal-generated URLs for changing portlet mode or window state must be treated as render URLs and the existing render parameters must be preserved
+SPEC15;Header;parameters15;TRUE;Render parameters get automatically cleared if the portlet receives a processAction or processEvent call
+SPEC15;Header;properties1;TRUE;The portlet can use the getProperty method to access single portal property and optionally-available HTTP header values
+SPEC15;Header;properties2;TRUE;The portlet can use the getProperties method to access multiple portal property and optionally-available HTTP header values by the same property name
+SPEC15;Header;properties3;TRUE;The portlet can use the getPropertyNames method to obtain an Enumeration of all available property names
+SPEC15;Header;properties4;TRUE;The portlet can access cookies provided by the current request using the getCookies method
+SPEC15;Header;parameters1;TRUE;If a portlet receives a request from a client request targeted to the portlet itself, the parameters must be the string parameters encoded in the URL (added when creating the PortletURL) and the string parameters sent by the client to the portlet as part of the client request
+SPEC15;Header;parameters2;TRUE;The parameters the header object returns must be "x-www-form-urlencoded" decoded
+SPEC15;Header;parameters3;TRUE;The getParameterValues method returns an array of String objects containing all the parameter values associated with a parameter name
+SPEC15;Header;parameters4;TRUE;The value returned from the getParameter method must be the first value in the array of String objects returned by getParameterValues
+SPEC15;Header;parameters6;TRUE;The getParameterMap method must return an unmodifiable Map object
+SPEC15;Header;parameters7;TRUE;If the request does not have any parameters, the getParameterMap must return an empty Map object
+SPEC15;Header;publicRenderParameters14;TRUE;Portlets can access a merged set of public and private parameters via the getParameter methods
+SPEC15;Header;publicRenderParameters15;TRUE;A map of private parameters can be obtained through the getPrivateParameterMap method
+SPEC15;Header;publicRenderParameters16;TRUE;A map of public parameters can be obtained through the getPublicParameterMap method
+SPEC15;Header;publicRenderParameters17;FALSE;Extra request parameters added to a portlet URL by the portal/portlet-container must be invisible to the portlets receiving the request
+SPEC15;Header;publicRenderParameters6;TRUE;Public render parameters are available in the header method
+SPEC15;Header;publicRenderParameters13a;TRUE;A public render parameter can be deleted using the removePublicRenderParameter method on the PortletURL
+SPEC15;Header;cookie8;TRUE;Cookies set during the Header phase should be available to the portlet during the Resource phase
+SPEC15;Header;cookie9;TRUE;Cookies set during the Header phase should be available to the portlet during a subsequent Action phase
+SPEC15;Header;cookie10;TRUE;Cookies set during the Header phase should be available to the portlet during a subsequent Render phase
+SPEC15;Header;cookie11;TRUE;Cookies set during the Header phase should be available to the portlet during a subsequent request triggered by a URL
+SPEC15;Header;cookie12;TRUE;Cookies set during the Header phase after the response has been committed are ignored
+SPEC15;Header;contentType5;TRUE;If the setContentType method is not called before the getWriter or getPortletOutputStream method is used, the portlet container uses the content type returned by getResponseContentType
+SPEC15;Header;characterEncoding2;TRUE;The character encoding can be set via the setLocale method and a locale-encoding-mapping-list mapping in the web.xml deployment descriptor
+SPEC15;Header;characterEncoding3;TRUE;The character encoding can be set via the setContentType method if the given content type string provides a value for the charset attribute
+SPEC15;Header;characterEncoding4;TRUE;If the portlet does not set the character encoding, the portlet container uses UTF-8 as the default character encoding
+SPEC15;HeaderResponse;setTitle;TRUE;This method sets the title of the portlet.
+SPEC15;HeaderResponse;setTitle2;TRUE;Test for empty string.
+SPEC15;HeaderResponse;setTitle3;TRUE;Test for null string.
+SPEC15;HeaderResponse;setContentType;TRUE;The portlet container will ignore any character encoding specified as part of the content type for render calls.
+SPEC15;HeaderResponse;getWriter;TRUE;Data written to the HeaderResponse writer is added to the aggregated portal document HEAD section.
+SPEC15;HeaderResponse;getPortletOutputStream;TRUE;Data written to the HeaderResponse writer is added to the aggregated portal document HEAD section.
+SPEC15;HeaderResponse;addDependency;TRUE;Method addDependency(String name, String scope, String version) - Adds a dependency on a page-level resource that is managed by the portal.
+SPEC15;HeaderResponse;addDependency2;TRUE;Method addDependency(String name, String scope, String version) - The dependency added by this method can be shared with other portlets.
+SPEC15;HeaderResponse;addDependency3;TRUE;Method addDependency(String name, String scope, String version) - The dependency added dynamically through this method is added to the statically declared dependencies for the portlet for the current rendering cycle only.
+SPEC15;HeaderResponse;addDependency4;TRUE;Method addDependency(String name, String scope, String version) - Conflicting case when the dependency is added with this method and also with addProperty method?
+SPEC15;HeaderResponse;addDependency5;TRUE;Method addDependency(String name, String scope, String version) - Throws IllegalArgumentException - if name is null.
+SPEC15;HeaderResponse;addDependency6;TRUE;Method addDependency(String name, String scope, String version) - Throws IllegalArgumentException - if name is empty.
+SPEC15;HeaderResponse;addDependency7;TRUE;Method addDependency(String name, String scope, String version, String markup) - Adds a dependency on a page-level resource that is managed by the portal and adds a resource for addition to the page for the dependency.
+SPEC15;HeaderResponse;addDependency8;TRUE;Method addDependency(String name, String scope, String version, String markup) - The portal may choose to include the later version of the resource on the page if 2 same dependencies with different version are declared.
+SPEC15;HeaderResponse;addDependency9;TRUE;Method addDependency(String name, String scope, String version, String markup) - Conflicting case when the dependency is added with this method and also with addProperty method?
+SPEC15;HeaderResponse;addDependency10;TRUE;Method addDependency(String name, String scope, String version, String markup) - Throws IllegalArgumentException - if name is null.
+SPEC15;HeaderResponse;addDependency11;TRUE;Method addDependency(String name, String scope, String version, String markup) - Throws IllegalArgumentException - if name is empty.
+SPEC15;HeaderResponse;addDependency12;TRUE;Method addDependency(String name, String scope, String version, String markup) - Throws IllegalArgumentException - if markup does not contain valid tags for the document HEAD section.
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
new file mode 100644
index 0000000..5167f0c
--- /dev/null
+++ b/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC14_HeaderAttr.java
@@ -0,0 +1,104 @@
+/*  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.annotations.*;
+import javax.portlet.filter.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.portlet.tck.beans.*;
+import javax.portlet.tck.constants.*;
+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.*;
+
+/**
+ * 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_SPEC14_HeaderAttr")
+public class HeaderPortletTests_SPEC14_HeaderAttr implements Portlet {
+   
+   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 {
+   }
+
+   @Override
+   public void render(RenderRequest portletReq, RenderResponse portletResp) throws PortletException, IOException {
+
+      PrintWriter writer = portletResp.getWriter();
+      ModuleTestCaseDetails tcd = new ModuleTestCaseDetails();
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_HeaderAttr_attributes1               */
+      /* Details: "The portlet can access a map with user information attributes    */
+      /* via the request attribute PortletRequest.USER_INFO"                        */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_HEADERATTR_ATTRIBUTES1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_HeaderAttr_attributes2               */
+      /* Details: "The PortletRequest.CCPP_PROFILE request attribute must return a  */
+      /* javax.ccpp.Profile based on the current portlet request"                   */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_HEADERATTR_ATTRIBUTES2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_HeaderAttr_attributes3               */
+      /* Details: "During header processing, the LIFECYCLE_PHASE                    */
+      /* (\"javax.portlet.lifecycle_phase\") attribute will contain the string      */
+      /* \"HEADER_PHASE\""                                                          */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_HEADERATTR_ATTRIBUTES3);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+   }
+
+}
diff --git a/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC14_HeaderReq.java b/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC14_HeaderReq.java
new file mode 100644
index 0000000..af4afa2
--- /dev/null
+++ b/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC14_HeaderReq.java
@@ -0,0 +1,177 @@
+/*  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.annotations.*;
+import javax.portlet.filter.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.portlet.tck.beans.*;
+import javax.portlet.tck.constants.*;
+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.*;
+
+/**
+ * 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_SPEC14_HeaderReq")
+public class HeaderPortletTests_SPEC14_HeaderReq implements Portlet {
+   
+   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 {
+   }
+
+   @Override
+   public void render(RenderRequest portletReq, RenderResponse portletResp) throws PortletException, IOException {
+
+      PrintWriter writer = portletResp.getWriter();
+      ModuleTestCaseDetails tcd = new ModuleTestCaseDetails();
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_HeaderReq_contentType1               */
+      /* Details: "The getResponseContentType method returns a String representing  */
+      /* the default content type the portlet container assumes for the output"     */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_HEADERREQ_CONTENTTYPE1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_HeaderReq_contentType2               */
+      /* Details: "The getResponseContentTypes method returns an Enumeration of     */
+      /* String elements representing the acceptable content types for the output   */
+      /* in order of preference"                                                    */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_HEADERREQ_CONTENTTYPE2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_HeaderReq_contentType3               */
+      /* Details: "The first element of the Enumeration returned by the             */
+      /* getResponseContentTypes method must equal the value returned by the        */
+      /* getResponseContentType method"                                             */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_HEADERREQ_CONTENTTYPE3);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_HeaderReq_contentType4               */
+      /* Details: "If a portlet defines support for all content types using a       */
+      /* wildcard and the portlet container supports all content types, the         */
+      /* getResponseContentType may return the wildcard"                            */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_HEADERREQ_CONTENTTYPE4);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_HeaderReq_contentType5               */
+      /* Details: "If a portlet defines support for all content types using a       */
+      /* wildcard and the portlet container supports all content types, the         */
+      /* getResponseContentType may return the preferred content type"              */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_HEADERREQ_CONTENTTYPE5);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_HeaderReq_windowId1                  */
+      /* Details: "The getWindowID method returns a String representing the current */
+      /* window ID"                                                                 */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_HEADERREQ_WINDOWID1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_HeaderReq_windowId4                  */
+      /* Details: "The string returned by getWindowID method must be the same ID    */
+      /* used for scoping portlet-scope session attributes"                         */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_HEADERREQ_WINDOWID4);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_HeaderReq_contentType10              */
+      /* Details: "Within the header method, the content type must include only the */
+      /* MIME type, not the character set"                                          */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_HEADERREQ_CONTENTTYPE10);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_HeaderReq_contentType11              */
+      /* Details: "Within the header method, the getResponseContentTypes method     */
+      /* must return only the content types supported by the current portlet mode"  */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_HEADERREQ_CONTENTTYPE11);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_HeaderReq_contentType13              */
+      /* Details: "The character set of the response can be retrieved via the       */
+      /* HeaderResponse.getCharacterEncoding method"                                */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_HEADERREQ_CONTENTTYPE13);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+   }
+
+}
diff --git a/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC14_PortletRequest_ApiHeader.java b/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC14_PortletRequest_ApiHeader.java
new file mode 100644
index 0000000..0eecbf5
--- /dev/null
+++ b/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC14_PortletRequest_ApiHeader.java
@@ -0,0 +1,1039 @@
+/*  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.annotations.*;
+import javax.portlet.filter.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.portlet.tck.beans.*;
+import javax.portlet.tck.constants.*;
+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.*;
+
+/**
+ * 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_SPEC14_PortletRequest_ApiHeader")
+public class HeaderPortletTests_SPEC14_PortletRequest_ApiHeader implements Portlet {
+   
+   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 {
+   }
+
+   @Override
+   public void render(RenderRequest portletReq, RenderResponse portletResp) throws PortletException, IOException {
+
+      PrintWriter writer = portletResp.getWriter();
+      ModuleTestCaseDetails tcd = new ModuleTestCaseDetails();
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldUSER_INFO */
+      /* Details: "Has String field USER_INFO with value of                         */
+      /* \"javax.portlet.userinfo\" "                                               */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDUSER_INFO);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldCCPP_PROFILE */
+      /* Details: "Has String field CCPP_PROFILE with value of                      */
+      /* \"javax.portlet.ccpp\" "                                                   */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDCCPP_PROFILE);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldBASIC_AUTH */
+      /* Details: "Has String field BASIC_AUTH with value of \"BASIC\" "            */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDBASIC_AUTH);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldFORM_AUTH */
+      /* Details: "Has String field FORM_AUTH with value of \"FORM\" "              */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDFORM_AUTH);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldCLIENT_CERT_AUTH */
+      /* Details: "Has String field CLIENT_CERT_AUTH with value of \"CLIENT_CERT\"  */
+      /* "                                                                          */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDCLIENT_CERT_AUTH);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldDIGEST_AUTH */
+      /* Details: "Has String field DIGEST_AUTH with value of \"DIGEST\" "          */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDDIGEST_AUTH);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldACTION_PHASE */
+      /* Details: "Has String field ACTION_PHASE with value of \"ACTION_PHASE\" "   */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDACTION_PHASE);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldEVENT_PHASE */
+      /* Details: "Has String field EVENT_PHASE with value of \"EVENT_PHASE\" "     */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDEVENT_PHASE);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldRENDER_PHASE */
+      /* Details: "Has String field RENDER_PHASE with value of \"RENDER_PHASE\" "   */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDRENDER_PHASE);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldRESOURCE_PHASE */
+      /* Details: "Has String field RESOURCE_PHASE with value of \"RESOURCE_PHASE\" */
+      /* "                                                                          */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDRESOURCE_PHASE);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldHEADER_PHASE */
+      /* Details: "Has String field HEADER_PHASE with value of \"HEADER_PHASE\" "   */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDHEADER_PHASE);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldLIFECYCLE_PHASE */
+      /* Details: "Has String field LIFECYCLE_PHASE with value of                   */
+      /* \"javax.portlet.lifecycle_phase\" "                                        */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDLIFECYCLE_PHASE);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldRENDER_PART */
+      /* Details: "Has String field RENDER_PART with value of                       */
+      /* \"javax.portlet.render_part\" "                                            */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDRENDER_PART);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldRENDER_HEADERS */
+      /* Details: "Has String field RENDER_HEADERS with value of \"RENDER_HEADERS\" */
+      /* "                                                                          */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDRENDER_HEADERS);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldRENDER_MARKUP */
+      /* Details: "Has String field RENDER_MARKUP with value of \"RENDER_MARKUP\" " */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDRENDER_MARKUP);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldACTION_SCOPE_ID */
+      /* Details: "Has String field ACTION_SCOPE_ID with value of                   */
+      /* \"javax.portlet.as\" "                                                     */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDACTION_SCOPE_ID);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isWindowStateAllowed1 */
+      /* Details: "Method isWindowStateAllowed(WindowState): Returns true if the    */
+      /* specified WindowState is allowed"                                          */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISWINDOWSTATEALLOWED1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isWindowStateAllowed2 */
+      /* Details: "Method isWindowStateAllowed(WindowState): Returns false if the   */
+      /* specified WindowState is not allowed"                                      */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISWINDOWSTATEALLOWED2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isPortletModeAllowed1 */
+      /* Details: "Method isPortletModeAllowed(PortletMode): Returns true if the    */
+      /* specified PortletMode is allowed"                                          */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISPORTLETMODEALLOWED1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isPortletModeAllowed2 */
+      /* Details: "Method isPortletModeAllowed(PortletMode): Returns false if the   */
+      /* specified PortletMode is not allowed"                                      */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISPORTLETMODEALLOWED2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPreferences */
+      /* Details: "Method getPreferences(): Returns the PortletPreferences object   */
+      /* associated with the portlet"                                               */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPREFERENCES);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPortletSessionA1 */
+      /* Details: "Method getPortletSession(): Returns current PortletSession if    */
+      /* one already exists"                                                        */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPORTLETSESSIONA1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPortletSessionA2 */
+      /* Details: "Method getPortletSession(): Returns new PortletSession if one    */
+      /* does not already exist"                                                    */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPORTLETSESSIONA2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPortletSessionB1 */
+      /* Details: "Method getPortletSession(boolean): If input flag is true,        */
+      /* returns current PortletSession if one already exists"                      */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPORTLETSESSIONB1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPortletSessionB2 */
+      /* Details: "Method getPortletSession(boolean): If input flag is true,        */
+      /* returns new PortletSession if one does not already exist"                  */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPORTLETSESSIONB2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPortletSessionB3 */
+      /* Details: "Method getPortletSession(boolean): If input flag is false,       */
+      /* returns current PortletSession if one already exists"                      */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPORTLETSESSIONB3);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPortletSessionB4 */
+      /* Details: "Method getPortletSession(boolean): If input flag is false,       */
+      /* returns null if one does not already exist"                                */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPORTLETSESSIONB4);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getProperty1 */
+      /* Details: "Method getProperty(String): If specified request property        */
+      /* exists, returns its value "                                                */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPROPERTY1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getProperty2 */
+      /* Details: "Method getProperty(String): If specified request property does   */
+      /* not exist, returns null"                                                   */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPROPERTY2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getProperty3 */
+      /* Details: "Method getProperty(String): Throws IllegalArgumentException if   */
+      /* the name is null"                                                          */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPROPERTY3);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getProperties1 */
+      /* Details: "Method getProperties(String): If specified request property      */
+      /* exists, returns its values as an Enumeration "                             */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPROPERTIES1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getProperties2 */
+      /* Details: "Method getProperties(String): If specified request property does */
+      /* not exist, returns an empty Enumeration"                                   */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPROPERTIES2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getProperties3 */
+      /* Details: "Method getProperties(String): Throws IllegalArgumentException if */
+      /* the name is null"                                                          */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPROPERTIES3);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPropertyNames1 */
+      /* Details: "Method getPropertyNames(): Returns an Enumeration of all request */
+      /* property names"                                                            */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPROPERTYNAMES1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPropertyNames2 */
+      /* Details: "Method getPropertyNames(): Returns an empty Enumeration if there */
+      /* are no request properties defined"                                         */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPROPERTYNAMES2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPortalContext */
+      /* Details: "Method getPortalContext(): Returns the context of the portal"    */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPORTALCONTEXT);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getAuthType1 */
+      /* Details: "Method getAuthType(): Returns a String indicating the            */
+      /* authentication type if the request was authenticated"                      */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETAUTHTYPE1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getAuthType2 */
+      /* Details: "Method getAuthType(): Returns null if the request was not        */
+      /* authenticated"                                                             */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETAUTHTYPE2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getContextPath1 */
+      /* Details: "Method getContextPath(): Returns a String representing the       */
+      /* context path associated with the portlet"                                  */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETCONTEXTPATH1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getContextPath2 */
+      /* Details: "Method getContextPath(): Returns an empty String if the portlet  */
+      /* is deployed in the default context"                                        */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETCONTEXTPATH2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getContextPath3 */
+      /* Details: "Method getContextPath(): If the context path is not empty, it    */
+      /* must start with \"/\" and may not end with \"/\""                          */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETCONTEXTPATH3);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getRemoteUser1 */
+      /* Details: "Method getRemoteUser(): Returns a String representing the login  */
+      /* of the user if the request is authenticated"                               */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETREMOTEUSER1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getRemoteUser2 */
+      /* Details: "Method getRemoteUser(): Returns null if the request has not been */
+      /* authenticated"                                                             */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETREMOTEUSER2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getUserPrincipal1 */
+      /* Details: "Method getUserPrincipal(): Returns a java.security.Principal     */
+      /* object representing the user if the request has been authenticated"        */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETUSERPRINCIPAL1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getUserPrincipal2 */
+      /* Details: "Method getUserPrincipal(): Returns null if the request has not   */
+      /* been authenticated"                                                        */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETUSERPRINCIPAL2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isUserInRole1 */
+      /* Details: "Method isUserInRole(): Returns true if the authenticated user is */
+      /* in the specified role"                                                     */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISUSERINROLE1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isUserInRole2 */
+      /* Details: "Method isUserInRole(): Returns false if the authenticated user   */
+      /* is not in the specified role"                                              */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISUSERINROLE2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isUserInRole3 */
+      /* Details: "Method isUserInRole(): Returns false if the user is not          */
+      /* authenticated"                                                             */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISUSERINROLE3);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getAttribute1 */
+      /* Details: "Method getAttribute(String): Returns a java.lang.Object for the  */
+      /* specified attribute name"                                                  */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETATTRIBUTE1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getAttribute2 */
+      /* Details: "Method getAttribute(String): Returns null if no attribute with   */
+      /* the specified name exists"                                                 */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETATTRIBUTE2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getAttribute3 */
+      /* Details: "Method getAttribute(String): Throws IllegalArgumentException if  */
+      /* the name is null"                                                          */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETATTRIBUTE3);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getAttributeNames1 */
+      /* Details: "Method getAttributeNames(): Returns a                            */
+      /* java.util.Enumeration&lt;java.lang.String&gt; of the available attribute   */
+      /* names"                                                                     */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETATTRIBUTENAMES1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getAttributeNames2 */
+      /* Details: "Method getAttributeNames(): Returns an empty Enumeration if      */
+      /* there are no attributes available"                                         */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETATTRIBUTENAMES2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameter1 */
+      /* Details: "Method getParameter(String): Returns String value of parameter   */
+      /* specified by the name"                                                     */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETER1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameter2 */
+      /* Details: "Method getParameter(String): Returns String value of a public    */
+      /* render parameter specified by the name"                                    */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETER2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameter3 */
+      /* Details: "Method getParameter(String): Returns null if no parameter exists */
+      /* for the specified name"                                                    */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETER3);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameter4 */
+      /* Details: "Method getParameter(String): Returns first String value from     */
+      /* values array if use with a multivalued parameter"                          */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETER4);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameter5 */
+      /* Details: "Method getParameter(String): Throws IllegalArgumentException if  */
+      /* the name is null"                                                          */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETER5);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameterNames1 */
+      /* Details: "Method getParameterNames(): Returns a                            */
+      /* java.util.Enumeration&lt;java.lang.String&gt; of the available parameter   */
+      /* names"                                                                     */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETERNAMES1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameterNames2 */
+      /* Details: "Method getParameterNames(): Returns an empty Enumeration if      */
+      /* there are no parameters available"                                         */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETERNAMES2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameterValues1 */
+      /* Details: "Method getParameterValues(String): Returns String[] value of     */
+      /* parameter specified by the name"                                           */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETERVALUES1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameterValues2 */
+      /* Details: "Method getParameterValues(String): Returns String[] value of a   */
+      /* public render parameter specified by the name"                             */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETERVALUES2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameterValues3 */
+      /* Details: "Method getParameterValues(String): Returns null if no parameter  */
+      /* exists for the specified name"                                             */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETERVALUES3);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameterValues4 */
+      /* Details: "Method getParameterValues(String): Throws                        */
+      /* IllegalArgumentException if the name is null"                              */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETERVALUES4);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameterMap1 */
+      /* Details: "Method getParameterMap(): Returns an                             */
+      /* java.util.Map&lt;java.lang.String,java.lang.String[]&gt; object for the    */
+      /* parameter names and values if parameters are available"                    */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETERMAP1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameterMap2 */
+      /* Details: "Method getParameterMap(): The returned map contains all public   */
+      /* and private parameters for the request"                                    */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETERMAP2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameterMap3 */
+      /* Details: "Method getParameterMap(): Returns an empty map if no parameters  */
+      /* exist"                                                                     */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETERMAP3);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isSecure1   */
+      /* Details: "Method isSecure(): Returns true if the request was made through  */
+      /* a secure channel"                                                          */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISSECURE1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isSecure2   */
+      /* Details: "Method isSecure(): Returns false if the request was not made     */
+      /* through a secure channel"                                                  */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISSECURE2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_setAttribute1 */
+      /* Details: "Method setAttribute(String, Object): Stores an attribute object  */
+      /* under the specified name in the request"                                   */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_SETATTRIBUTE1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_setAttribute2 */
+      /* Details: "Method setAttribute(String, Object): Removes the attribute by    */
+      /* the specified name if the object is null"                                  */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_SETATTRIBUTE2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_setAttribute3 */
+      /* Details: "Method setAttribute(String, Object): Throws                      */
+      /* IllegalArgumentException if the name is null"                              */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_SETATTRIBUTE3);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_removeAttribute1 */
+      /* Details: "Method removeAttribute(String): Removes the attribute specified  */
+      /* by the name from the request"                                              */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_REMOVEATTRIBUTE1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_removeAttribute2 */
+      /* Details: "Method removeAttribute(String): Throws IllegalArgumentException  */
+      /* if the name is null"                                                       */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_REMOVEATTRIBUTE2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getRequestedSessionId1 */
+      /* Details: "Method getRequestedSessionId(): Returns the session ID indicated */
+      /* in the client request"                                                     */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETREQUESTEDSESSIONID1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getRequestedSessionId2 */
+      /* Details: "Method getRequestedSessionId(): Returns null if no session ID    */
+      /* was indicated in the client request"                                       */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETREQUESTEDSESSIONID2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isRequestedSessionIdValid1 */
+      /* Details: "Method isRequestedSessionIdValid(): Returns true if the session  */
+      /* ID is valid"                                                               */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISREQUESTEDSESSIONIDVALID1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isRequestedSessionIdValid2 */
+      /* Details: "Method isRequestedSessionIdValid(): Returns false if the session */
+      /* ID is not valid"                                                           */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISREQUESTEDSESSIONIDVALID2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getResponseContentType1 */
+      /* Details: "Method getResponseContentType(): Returns a String representing   */
+      /* the portal preferred content type for the response if the content type is  */
+      /* defined in the portlet descriptor "                                        */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETRESPONSECONTENTTYPE1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getResponseContentType2 */
+      /* Details: "Method getResponseContentType(): Returns an empty Enumeration if */
+      /* the content type is not defined in the portlet descriptor"                 */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETRESPONSECONTENTTYPE2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getResponseContentTypes1 */
+      /* Details: "Method getResponseContentTypes(): Returns an                     */
+      /* java.util.Enumeration&lt;java.lang.String&gt; object representing the      */
+      /* portal preferred content types for the response if the content types are   */
+      /* defined in the portlet descriptor"                                         */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETRESPONSECONTENTTYPES1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getResponseContentTypes2 */
+      /* Details: "Method getResponseContentTypes(): Returns an empty Enumeration   */
+      /* if the content types are not defined in the portlet descriptor"            */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETRESPONSECONTENTTYPES2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getLocale   */
+      /* Details: "Method getLocale(): Returns an java.util.Locale object           */
+      /* representing the preferred Locale for the response"                        */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETLOCALE);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getLocales  */
+      /* Details: "Method getLocales(): Returns an                                  */
+      /* java.util.Enumeration&lt;java.util.Locale&gt; of the Locales in which the  */
+      /* portal will accept content"                                                */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETLOCALES);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getScheme   */
+      /* Details: "Method getScheme(): Returns a String value representing the      */
+      /* scheme name for the request"                                               */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETSCHEME);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getServerName */
+      /* Details: "Method getServerName(): Returns a String value representing the  */
+      /* host name for the request"                                                 */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETSERVERNAME);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getServerPort */
+      /* Details: "Method getServerPort(): Returns an int value representing the    */
+      /* port number for the request"                                               */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETSERVERPORT);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getWindowID */
+      /* Details: "Method getWindowID(): Returns a String value representing the    */
+      /* portlet window ID"                                                         */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETWINDOWID);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getCookies1 */
+      /* Details: "Method getCookies(): Returns a javax.servlet.http.Cookie[] array */
+      /* containing the cookies for this request"                                   */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETCOOKIES1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getCookies2 */
+      /* Details: "Method getCookies(): Returns null if no cookies are present"     */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETCOOKIES2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPrivateParameterMap1 */
+      /* Details: "Method getPrivateParameterMap(): Returns an                      */
+      /* java.util.Map&lt;java.lang.String,java.lang.String[]&gt; object for the    */
+      /* private parameter names and values if available"                           */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPRIVATEPARAMETERMAP1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPrivateParameterMap2 */
+      /* Details: "Method getPrivateParameterMap(): The returned map is immutable"  */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPRIVATEPARAMETERMAP2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPrivateParameterMap3 */
+      /* Details: "Method getPrivateParameterMap(): Returns an empty map if no      */
+      /* private parameters exist"                                                  */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPRIVATEPARAMETERMAP3);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPublicParameterMap1 */
+      /* Details: "Method getPublicParameterMap(): Returns an                       */
+      /* java.util.Map&lt;java.lang.String,java.lang.String[]&gt; object for the    */
+      /* public parameter names and values if available"                            */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPUBLICPARAMETERMAP1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPublicParameterMap2 */
+      /* Details: "Method getPublicParameterMap(): The returned map is immutable"   */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPUBLICPARAMETERMAP2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPublicParameterMap3 */
+      /* Details: "Method getPublicParameterMap(): Returns an empty map if no       */
+      /* public parameters exist"                                                   */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPUBLICPARAMETERMAP3);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_exists      */
+      /* Details: "The P3PUserInfos exists as a public static enum"                 */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_EXISTS);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+   }
+
+}
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
new file mode 100644
index 0000000..7a0719b
--- /dev/null
+++ b/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC14_RenderState_ApiHeader.java
@@ -0,0 +1,102 @@
+/*  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.annotations.*;
+import javax.portlet.filter.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.portlet.tck.beans.*;
+import javax.portlet.tck.constants.*;
+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.*;
+
+/**
+ * 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_SPEC14_RenderState_ApiHeader")
+public class HeaderPortletTests_SPEC14_RenderState_ApiHeader implements Portlet {
+   
+   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 {
+   }
+
+   @Override
+   public void render(RenderRequest portletReq, RenderResponse portletResp) throws PortletException, IOException {
+
+      PrintWriter writer = portletResp.getWriter();
+      ModuleTestCaseDetails tcd = new ModuleTestCaseDetails();
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_RenderState_ApiHeader_getPortletMode */
+      /* Details: "Method getPortletMode(): Returns current PortletMode "           */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_RENDERSTATE_APIHEADER_GETPORTLETMODE);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_RenderState_ApiHeader_getWindowState */
+      /* Details: "Method getWindowState(): Returns current WindowState"            */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_RENDERSTATE_APIHEADER_GETWINDOWSTATE);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC14_RenderState_ApiHeader_getRenderParameters */
+      /* Details: "Method getRenderParameters(): Returns an immutable               */
+      /* RenderParameters object representing the private and public render         */
+      /* parameters"                                                                */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC14_RENDERSTATE_APIHEADER_GETRENDERPARAMETERS);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+   }
+
+}
diff --git a/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC15_Header.java b/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC15_Header.java
new file mode 100644
index 0000000..e97fef6
--- /dev/null
+++ b/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC15_Header.java
@@ -0,0 +1,362 @@
+/*  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.annotations.*;
+import javax.portlet.filter.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.portlet.tck.beans.*;
+import javax.portlet.tck.constants.*;
+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.*;
+
+/**
+ * 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_SPEC15_Header")
+public class HeaderPortletTests_SPEC15_Header implements Portlet {
+   
+   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 {
+   }
+
+   @Override
+   public void render(RenderRequest portletReq, RenderResponse portletResp) throws PortletException, IOException {
+
+      PrintWriter writer = portletResp.getWriter();
+      ModuleTestCaseDetails tcd = new ModuleTestCaseDetails();
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_Header_parameters10                  */
+      /* Details: "The portlet-container must not propagate parameters received in  */
+      /* an action or event request to subsequent header requests of the portlet"   */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS10);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_Header_parameters11                  */
+      /* Details: "If a portlet receives a render request that is the result of a   */
+      /* client request targeted to another portlet in the portal page, the         */
+      /* parameters should be the same parameters as of the previous render request */
+      /* from this client"                                                          */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS11);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_Header_parameters13                  */
+      /* Details: "If a portlet receives a render request that is the result of     */
+      /* invoking a render URL targeting this portlet the render parameters         */
+      /* received with the render request must be the parameters set on the render  */
+      /* URL"                                                                       */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS13);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_Header_parameters15                  */
+      /* Details: "Render parameters get automatically cleared if the portlet       */
+      /* receives a processAction or processEvent call"                             */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS15);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_Header_properties1                   */
+      /* Details: "The portlet can use the getProperty method to access single      */
+      /* portal property and optionally-available HTTP header values"               */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADER_PROPERTIES1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_Header_properties2                   */
+      /* Details: "The portlet can use the getProperties method to access multiple  */
+      /* portal property and optionally-available HTTP header values by the same    */
+      /* property name"                                                             */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADER_PROPERTIES2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_Header_properties3                   */
+      /* Details: "The portlet can use the getPropertyNames method to obtain an     */
+      /* Enumeration of all available property names"                               */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADER_PROPERTIES3);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_Header_properties4                   */
+      /* Details: "The portlet can access cookies provided by the current request   */
+      /* using the getCookies method"                                               */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADER_PROPERTIES4);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_Header_parameters1                   */
+      /* Details: "If a portlet receives a request from a client request targeted   */
+      /* to the portlet itself, the parameters must be the string parameters        */
+      /* encoded in the URL (added when creating the PortletURL) and the string     */
+      /* parameters sent by the client to the portlet as part of the client         */
+      /* request"                                                                   */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_Header_parameters2                   */
+      /* Details: "The parameters the header object returns must be                 */
+      /* \"x-www-form-urlencoded\" decoded"                                         */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_Header_parameters3                   */
+      /* Details: "The getParameterValues method returns an array of String objects */
+      /* containing all the parameter values associated with a parameter name"      */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS3);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_Header_parameters4                   */
+      /* Details: "The value returned from the getParameter method must be the      */
+      /* first value in the array of String objects returned by getParameterValues" */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS4);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_Header_parameters6                   */
+      /* Details: "The getParameterMap method must return an unmodifiable Map       */
+      /* object"                                                                    */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS6);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_Header_parameters7                   */
+      /* Details: "If the request does not have any parameters, the getParameterMap */
+      /* must return an empty Map object"                                           */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS7);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_Header_publicRenderParameters14      */
+      /* Details: "Portlets can access a merged set of public and private           */
+      /* parameters via the getParameter methods"                                   */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADER_PUBLICRENDERPARAMETERS14);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_Header_publicRenderParameters15      */
+      /* Details: "A map of private parameters can be obtained through the          */
+      /* getPrivateParameterMap method"                                             */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADER_PUBLICRENDERPARAMETERS15);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_Header_publicRenderParameters16      */
+      /* Details: "A map of public parameters can be obtained through the           */
+      /* getPublicParameterMap method"                                              */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADER_PUBLICRENDERPARAMETERS16);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_Header_publicRenderParameters6       */
+      /* Details: "Public render parameters are available in the header method"     */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADER_PUBLICRENDERPARAMETERS6);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_Header_publicRenderParameters13a     */
+      /* Details: "A public render parameter can be deleted using the               */
+      /* removePublicRenderParameter method on the PortletURL"                      */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADER_PUBLICRENDERPARAMETERS13A);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_Header_cookie8                       */
+      /* Details: "Cookies set during the Header phase should be available to the   */
+      /* portlet during the Resource phase"                                         */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADER_COOKIE8);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_Header_cookie9                       */
+      /* Details: "Cookies set during the Header phase should be available to the   */
+      /* portlet during a subsequent Action phase"                                  */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADER_COOKIE9);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_Header_cookie10                      */
+      /* Details: "Cookies set during the Header phase should be available to the   */
+      /* portlet during a subsequent Render phase"                                  */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADER_COOKIE10);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_Header_cookie11                      */
+      /* Details: "Cookies set during the Header phase should be available to the   */
+      /* portlet during a subsequent request triggered by a URL"                    */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADER_COOKIE11);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_Header_cookie12                      */
+      /* Details: "Cookies set during the Header phase after the response has been  */
+      /* committed are ignored"                                                     */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADER_COOKIE12);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_Header_contentType5                  */
+      /* Details: "If the setContentType method is not called before the getWriter  */
+      /* or getPortletOutputStream method is used, the portlet container uses the   */
+      /* content type returned by getResponseContentType"                           */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADER_CONTENTTYPE5);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_Header_characterEncoding2            */
+      /* Details: "The character encoding can be set via the setLocale method and a */
+      /* locale-encoding-mapping-list mapping in the web.xml deployment descriptor" */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADER_CHARACTERENCODING2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_Header_characterEncoding3            */
+      /* Details: "The character encoding can be set via the setContentType method  */
+      /* if the given content type string provides a value for the charset          */
+      /* attribute"                                                                 */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADER_CHARACTERENCODING3);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_Header_characterEncoding4            */
+      /* Details: "If the portlet does not set the character encoding, the portlet  */
+      /* container uses UTF-8 as the default character encoding"                    */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADER_CHARACTERENCODING4);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+   }
+
+}
diff --git a/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC15_HeaderResponse.java b/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC15_HeaderResponse.java
new file mode 100644
index 0000000..9355302
--- /dev/null
+++ b/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC15_HeaderResponse.java
@@ -0,0 +1,260 @@
+/*  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.annotations.*;
+import javax.portlet.filter.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.portlet.tck.beans.*;
+import javax.portlet.tck.constants.*;
+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.*;
+
+/**
+ * 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_SPEC15_HeaderResponse")
+public class HeaderPortletTests_SPEC15_HeaderResponse implements Portlet {
+   
+   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 {
+   }
+
+   @Override
+   public void render(RenderRequest portletReq, RenderResponse portletResp) throws PortletException, IOException {
+
+      PrintWriter writer = portletResp.getWriter();
+      ModuleTestCaseDetails tcd = new ModuleTestCaseDetails();
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_HeaderResponse_setTitle              */
+      /* Details: "This method sets the title of the portlet."                      */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_SETTITLE);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_HeaderResponse_setTitle2             */
+      /* Details: "Test for empty string."                                          */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_SETTITLE2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_HeaderResponse_setTitle3             */
+      /* Details: "Test for null string."                                           */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_SETTITLE3);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_HeaderResponse_setContentType        */
+      /* Details: "The portlet container will ignore any character encoding         */
+      /* specified as part of the content type for render calls."                   */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_SETCONTENTTYPE);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_HeaderResponse_getWriter             */
+      /* Details: "Data written to the HeaderResponse writer is added to the        */
+      /* aggregated portal document HEAD section."                                  */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_GETWRITER);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_HeaderResponse_getPortletOutputStream */
+      /* Details: "Data written to the HeaderResponse writer is added to the        */
+      /* aggregated portal document HEAD section."                                  */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_GETPORTLETOUTPUTSTREAM);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency         */
+      /* Details: "Method addDependency(String name, String scope, String version)  */
+      /* - Adds a dependency on a page-level resource that is managed by the        */
+      /* portal."                                                                   */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency2        */
+      /* Details: "Method addDependency(String name, String scope, String version)  */
+      /* - The dependency added by this method can be shared with other portlets."  */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency3        */
+      /* Details: "Method addDependency(String name, String scope, String version)  */
+      /* - The dependency added dynamically through this method is added to the     */
+      /* statically declared dependencies for the portlet for the current rendering */
+      /* cycle only."                                                               */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY3);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency4        */
+      /* Details: "Method addDependency(String name, String scope, String version)  */
+      /* - Conflicting case when the dependency is added with this method and also  */
+      /* with addProperty method?"                                                  */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY4);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency5        */
+      /* Details: "Method addDependency(String name, String scope, String version)  */
+      /* - Throws IllegalArgumentException - if name is null."                      */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY5);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency6        */
+      /* Details: "Method addDependency(String name, String scope, String version)  */
+      /* - Throws IllegalArgumentException - if name is empty."                     */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY6);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency7        */
+      /* Details: "Method addDependency(String name, String scope, String version,  */
+      /* String markup) - Adds a dependency on a page-level resource that is        */
+      /* managed by the portal and adds a resource for addition to the page for the */
+      /* dependency."                                                               */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY7);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency8        */
+      /* Details: "Method addDependency(String name, String scope, String version,  */
+      /* String markup) - The portal may choose to include the later version of the */
+      /* resource on the page if 2 same dependencies with different version are     */
+      /* declared."                                                                 */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY8);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency9        */
+      /* Details: "Method addDependency(String name, String scope, String version,  */
+      /* String markup) - Conflicting case when the dependency is added with this   */
+      /* method and also with addProperty method?"                                  */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY9);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency10       */
+      /* Details: "Method addDependency(String name, String scope, String version,  */
+      /* String markup) - Throws IllegalArgumentException - if name is null."       */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY10);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency11       */
+      /* Details: "Method addDependency(String name, String scope, String version,  */
+      /* String markup) - Throws IllegalArgumentException - if name is empty."      */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY11);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency12       */
+      /* Details: "Method addDependency(String name, String scope, String version,  */
+      /* String markup) - Throws IllegalArgumentException - if markup does not      */
+      /* contain valid tags for the document HEAD section."                         */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY12);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+   }
+
+}
diff --git a/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC15_MimeResponse_ApiHeader.java b/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC15_MimeResponse_ApiHeader.java
new file mode 100644
index 0000000..13a2c4c
--- /dev/null
+++ b/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC15_MimeResponse_ApiHeader.java
@@ -0,0 +1,418 @@
+/*  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.annotations.*;
+import javax.portlet.filter.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.portlet.tck.beans.*;
+import javax.portlet.tck.constants.*;
+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.*;
+
+/**
+ * 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_SPEC15_MimeResponse_ApiHeader")
+public class HeaderPortletTests_SPEC15_MimeResponse_ApiHeader implements Portlet {
+   
+   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 {
+   }
+
+   @Override
+   public void render(RenderRequest portletReq, RenderResponse portletResp) throws PortletException, IOException {
+
+      PrintWriter writer = portletResp.getWriter();
+      ModuleTestCaseDetails tcd = new ModuleTestCaseDetails();
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_fieldEXPIRATION_CACHE  */
+      /* Details: "Has String field EXPIRATION_CACHE with value of                  */
+      /* \"portlet.expiration-cache\""                                              */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_FIELDEXPIRATION_CACHE );
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_fieldCACHE_SCOPE  */
+      /* Details: "Has String field CACHE_SCOPE with value of                       */
+      /* \"portlet.cache-scope\""                                                   */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_FIELDCACHE_SCOPE );
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_fieldPUBLIC_SCOPE  */
+      /* Details: "Has String field PUBLIC_SCOPE with value of                      */
+      /* \"portlet.public-scope\""                                                  */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_FIELDPUBLIC_SCOPE );
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_fieldPRIVATE_SCOPE  */
+      /* Details: "Has String field PRIVATE_SCOPE with value of                     */
+      /* \"portlet.private-scope\""                                                 */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_FIELDPRIVATE_SCOPE );
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_fieldETAG     */
+      /* Details: "Has String field ETAG with value of \"portlet.ETag\""            */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_FIELDETAG );
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_fieldUSE_CACHED_CONTENT  */
+      /* Details: "Has String field USE_CACHED_CONTENT with value of                */
+      /* \"portlet.use-cached-content\""                                            */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_FIELDUSE_CACHED_CONTENT );
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_fieldNAMESPACED_RESPONSE */
+      /* Details: "Has String field NAMESPACED_RESPONSE with value of               */
+      /* \"X-JAVAX-PORTLET-NAMESPACED-RESPONSE\""                                   */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_FIELDNAMESPACED_RESPONSE);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_fieldMARKUP_HEAD_ELEMENT */
+      /* Details: "Has String field MARKUP_HEAD_ELEMENT with value of               */
+      /* \"javax.portlet.markup.head.element\""                                     */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_FIELDMARKUP_HEAD_ELEMENT);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getContentType1 */
+      /* Details: "Method getContentType(): Returns a String containing the MIME    */
+      /* type that can be used with the response"                                   */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETCONTENTTYPE1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getContentType2 */
+      /* Details: "Method getContentType(): Returns null if no content type is set" */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETCONTENTTYPE2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_setContentType1 */
+      /* Details: "Method setContentType(String): Sets the MIME type for the        */
+      /* response"                                                                  */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_SETCONTENTTYPE1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_setContentType2 */
+      /* Details: "Method setContentType(String): Has no effect if called after the */
+      /* getWriter method has been called"                                          */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_SETCONTENTTYPE2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_setContentType3 */
+      /* Details: "Method setContentType(String): Has no effect if called after the */
+      /* getPortletOutputStream method has been called"                             */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_SETCONTENTTYPE3);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_setContentType4 */
+      /* Details: "Method setContentType(String): Throws IllegalArgumentException   */
+      /* if the specified MIME type is invalid"                                     */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_SETCONTENTTYPE4);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getCharacterEncoding */
+      /* Details: "Method getCharacterEncoding(): Returns a String containing the   */
+      /* name of the charset used for the response body"                            */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETCHARACTERENCODING);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getWriter1    */
+      /* Details: "Method getWriter(): Returns a PrintWriter object"                */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETWRITER1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getWriter2    */
+      /* Details: "Method getWriter(): Throws IllegalStateException if called after */
+      /* the getPortletOutputStream method has been called"                         */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETWRITER2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getLocale     */
+      /* Details: "Method getLocale(): Returns an java.util.Locale representing the */
+      /* locale assigned to the response"                                           */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETLOCALE);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_setBufferSize1 */
+      /* Details: "Method setBufferSize(int): Sets the preferred buffer size for    */
+      /* the response body"                                                         */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_SETBUFFERSIZE1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_setBufferSize2 */
+      /* Details: "Method setBufferSize(int): Throws IllegalStateException if       */
+      /* called after content has been written"                                     */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_SETBUFFERSIZE2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getBufferSize1 */
+      /* Details: "Method getBufferSize(): Returns an int designating the actual    */
+      /* buffer size used for the response"                                         */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETBUFFERSIZE1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getBufferSize2 */
+      /* Details: "Method getBufferSize(): Returns null if buffering is not used"   */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETBUFFERSIZE2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_flushBuffer1  */
+      /* Details: "Method flushBuffer(): Returns void and flushes buffer to         */
+      /* OutputStream"                                                              */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_FLUSHBUFFER1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_resetBuffer1  */
+      /* Details: "Method resetBuffer(): Returns void and clears and data and       */
+      /* properties from the buffer"                                                */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_RESETBUFFER1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_resetBuffer2  */
+      /* Details: "Method resetBuffer(): Throws IllegalStateException if called     */
+      /* after the response has been committed"                                     */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_RESETBUFFER2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_isCommitted1  */
+      /* Details: "Method isCommitted(): Returns true if the response has been      */
+      /* committed"                                                                 */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_ISCOMMITTED1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_isCommitted2  */
+      /* Details: "Method isCommitted(): Returns false if the response has not been */
+      /* committed"                                                                 */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_ISCOMMITTED2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_reset1        */
+      /* Details: "Method reset(): Returns void and clears and data and properties  */
+      /* from the buffer"                                                           */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_RESET1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_reset2        */
+      /* Details: "Method reset(): Throws IllegalStateException if called after the */
+      /* response has been committed"                                               */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_RESET2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getPortletOutputStream1 */
+      /* Details: "Method getPortletOutputStream(): Returns a PortletOutputStream   */
+      /* object"                                                                    */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETPORTLETOUTPUTSTREAM1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getPortletOutputStream2 */
+      /* Details: "Method getPortletOutputStream(): Throws IllegalStateException if */
+      /* called after the getWriter method has been called"                         */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETPORTLETOUTPUTSTREAM2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_createRenderURL */
+      /* Details: "Method createRenderURL(): Returns a PortletURL object            */
+      /* representing a render URL targeting the portlet"                           */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_CREATERENDERURL);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_createActionURL */
+      /* Details: "Method createActionURL(): Returns a PortletURL object            */
+      /* representing an action URL targeting the portlet"                          */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_CREATEACTIONURL);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_createResourceURL */
+      /* Details: "Method createResourceURL(): Returns a ResourceURL object         */
+      /* targeting the portlet"                                                     */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_CREATERESOURCEURL);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getCacheControl */
+      /* Details: "Method getCacheControl(): Returns a CacheControl object"         */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETCACHECONTROL);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+   }
+
+}
diff --git a/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC15_PortletResponse_ApiHeader.java b/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC15_PortletResponse_ApiHeader.java
new file mode 100644
index 0000000..f209347
--- /dev/null
+++ b/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC15_PortletResponse_ApiHeader.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.annotations.*;
+import javax.portlet.filter.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.portlet.tck.beans.*;
+import javax.portlet.tck.constants.*;
+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.*;
+
+/**
+ * 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_SPEC15_PortletResponse_ApiHeader")
+public class HeaderPortletTests_SPEC15_PortletResponse_ApiHeader implements Portlet {
+   
+   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 {
+   }
+
+   @Override
+   public void render(RenderRequest portletReq, RenderResponse portletResp) throws PortletException, IOException {
+
+      PrintWriter writer = portletResp.getWriter();
+      ModuleTestCaseDetails tcd = new ModuleTestCaseDetails();
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_addPropertyA1 */
+      /* Details: "Method addProperty(javax.servlet.http.Cookie): Adds the          */
+      /* specified cookie property to the response"                                 */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_ADDPROPERTYA1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_addPropertyA2 */
+      /* Details: "Method addProperty(javax.servlet.http.Cookie): Throws            */
+      /* IllegalArgumentException if the specified cookie is null"                  */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_ADDPROPERTYA2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_addPropertyB1 */
+      /* Details: "Method addProperty(String, org.w3c.dom.Element): Adds an XML DOM */
+      /* Element to the response for the specified key"                             */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_ADDPROPERTYB1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_addPropertyB2 */
+      /* Details: "Method addProperty(String, org.w3c.dom.Element): If a DOM        */
+      /* Element for the specified key already exists, the new element is added in  */
+      /* addition to the existing element"                                          */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_ADDPROPERTYB2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_addPropertyB3 */
+      /* Details: "Method addProperty(String, org.w3c.dom.Element): If the          */
+      /* specified DOM Element value is null, the key is removed from the response" */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_ADDPROPERTYB3);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_addPropertyB4 */
+      /* Details: "Method addProperty(String, org.w3c.dom.Element): Throws          */
+      /* IllegalArgumentException if the specified key is null"                     */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_ADDPROPERTYB4);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_addPropertyC1 */
+      /* Details: "Method addProperty(String, String): Adds a property value to an  */
+      /* existing key to allow the key to have multiple values"                     */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_ADDPROPERTYC1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_addPropertyC2 */
+      /* Details: "Method addProperty(String, String): Throws                       */
+      /* IllegalArgumentException if the specified key is null"                     */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_ADDPROPERTYC2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_setProperty1 */
+      /* Details: "Method setProperty(String, String): Sets a property value for    */
+      /* the specified key"                                                         */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_SETPROPERTY1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_setProperty2 */
+      /* Details: "Method setProperty(String, String): Resets any existing property */
+      /* values for the specified key"                                              */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_SETPROPERTY2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_setProperty3 */
+      /* Details: "Method setProperty(String, String): Throws                       */
+      /* IllegalArgumentException if the specified key is null"                     */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_SETPROPERTY3);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_encodeURL1 */
+      /* Details: "Method encodeURL(String): Returns a String representing the      */
+      /* encoded URL"                                                               */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_ENCODEURL1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_encodeURL2 */
+      /* Details: "Method encodeURL(String): Throws IllegalArgumentException if the */
+      /* input string is not an absolute URL and does not start with at \"/\"       */
+      /* character"                                                                 */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_ENCODEURL2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_getNamespace1 */
+      /* Details: "Method getNamespace(): Returns a String containing the namespace */
+      /* value"                                                                     */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_GETNAMESPACE1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_createElement1 */
+      /* Details: "Method createElement(String): Returns an org.w3c.dom.Element     */
+      /* object for the specified tag name"                                         */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_CREATEELEMENT1);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_createElement2 */
+      /* Details: "Method createElement(String): The returned Element has nodeName  */
+      /* set to the the specified tag name "                                        */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_CREATEELEMENT2);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_createElement3 */
+      /* Details: "Method createElement(String): The returned Element has localName */
+      /* set to null"                                                               */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_CREATEELEMENT3);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_createElement4 */
+      /* Details: "Method createElement(String): The returned Element has prefix    */
+      /* set to null"                                                               */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_CREATEELEMENT4);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_createElement5 */
+      /* Details: "Method createElement(String): The returned Element has           */
+      /* namespaceURI set to null"                                                  */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_CREATEELEMENT5);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+      /* TestCase: V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_createElement6 */
+      /* Details: "Method createElement(String): Throws org.w3c.dom.DOMException -  */
+      /* INVALID_CHARACTER_ERR if the specified name contains an illegal character. */
+      /* "                                                                          */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_CREATEELEMENT6);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+   }
+
+}
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
new file mode 100644
index 0000000..9ae95d1
--- /dev/null
+++ b/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC3_6_4_HeaderPortlet.java
@@ -0,0 +1,107 @@
+/*  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.annotations.*;
+import javax.portlet.filter.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.portlet.tck.beans.*;
+import javax.portlet.tck.constants.*;
+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.*;
+
+/**
+ * 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 {
+   
+   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 {
+   }
+
+   @Override
+   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."                               */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC3_6_4_HEADERPORTLET_RENDERHEADERS);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         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);
+      }
+
+   }
+
+}
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
new file mode 100644
index 0000000..bfc461f
--- /dev/null
+++ b/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC7_14_RenderRequest.java
@@ -0,0 +1,82 @@
+/*  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.annotations.*;
+import javax.portlet.filter.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.portlet.tck.beans.*;
+import javax.portlet.tck.constants.*;
+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.*;
+
+/**
+ * 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_SPEC7_14_RenderRequest")
+public class HeaderPortletTests_SPEC7_14_RenderRequest implements Portlet {
+   
+   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 {
+   }
+
+   @Override
+   public void render(RenderRequest portletReq, RenderResponse portletResp) throws PortletException, IOException {
+
+      PrintWriter writer = portletResp.getWriter();
+      ModuleTestCaseDetails tcd = new ModuleTestCaseDetails();
+
+      /* TestCase: V3HeaderPortletTests_SPEC7_14_RenderRequest_getETag              */
+      /* Details: "Method getETag(): Returns null if there is no cached response."  */
+      {
+         TestResult result = tcd.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC7_14_RENDERREQUEST_GETETAG);
+         /* TODO: implement test */
+         result.appendTcDetail("Not implemented.");
+         result.writeTo(writer);
+      }
+
+   }
+
+}
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
new file mode 100644
index 0000000..642d59a
--- /dev/null
+++ b/portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/util/ModuleTestCaseDetails.java
@@ -0,0 +1,494 @@
+/*  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.util;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.portlet.tck.beans.TestCaseDetails;
+
+/**
+ * Defines constants for the test case names and test case details 
+ * for the JSR 362 TCK.
+ * 
+ * Note that the backing map is static and not threadsafe. Operations
+ * that change the map such as put, remove, etc., should not be used
+ * in portlets.
+ * 
+ * @author nick
+ */
+public class ModuleTestCaseDetails extends TestCaseDetails {
+
+   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";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_HEADERATTR_ATTRIBUTES3 = "V3HeaderPortletTests_SPEC14_HeaderAttr_attributes3";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_HEADERREQ_CONTENTTYPE1 = "V3HeaderPortletTests_SPEC14_HeaderReq_contentType1";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_HEADERREQ_CONTENTTYPE2 = "V3HeaderPortletTests_SPEC14_HeaderReq_contentType2";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_HEADERREQ_CONTENTTYPE3 = "V3HeaderPortletTests_SPEC14_HeaderReq_contentType3";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_HEADERREQ_CONTENTTYPE4 = "V3HeaderPortletTests_SPEC14_HeaderReq_contentType4";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_HEADERREQ_CONTENTTYPE5 = "V3HeaderPortletTests_SPEC14_HeaderReq_contentType5";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_HEADERREQ_WINDOWID1 = "V3HeaderPortletTests_SPEC14_HeaderReq_windowId1";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_HEADERREQ_WINDOWID4 = "V3HeaderPortletTests_SPEC14_HeaderReq_windowId4";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_HEADERREQ_CONTENTTYPE10 = "V3HeaderPortletTests_SPEC14_HeaderReq_contentType10";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_HEADERREQ_CONTENTTYPE11 = "V3HeaderPortletTests_SPEC14_HeaderReq_contentType11";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_HEADERREQ_CONTENTTYPE13 = "V3HeaderPortletTests_SPEC14_HeaderReq_contentType13";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_RENDERSTATE_APIHEADER_GETPORTLETMODE = "V3HeaderPortletTests_SPEC14_RenderState_ApiHeader_getPortletMode";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_RENDERSTATE_APIHEADER_GETWINDOWSTATE = "V3HeaderPortletTests_SPEC14_RenderState_ApiHeader_getWindowState";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_RENDERSTATE_APIHEADER_GETRENDERPARAMETERS = "V3HeaderPortletTests_SPEC14_RenderState_ApiHeader_getRenderParameters";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDUSER_INFO = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldUSER_INFO";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDCCPP_PROFILE = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldCCPP_PROFILE";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDBASIC_AUTH = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldBASIC_AUTH";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDFORM_AUTH = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldFORM_AUTH";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDCLIENT_CERT_AUTH = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldCLIENT_CERT_AUTH";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDDIGEST_AUTH = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldDIGEST_AUTH";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDACTION_PHASE = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldACTION_PHASE";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDEVENT_PHASE = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldEVENT_PHASE";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDRENDER_PHASE = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldRENDER_PHASE";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDRESOURCE_PHASE = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldRESOURCE_PHASE";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDHEADER_PHASE = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldHEADER_PHASE";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDLIFECYCLE_PHASE = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldLIFECYCLE_PHASE";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDRENDER_PART = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldRENDER_PART";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDRENDER_HEADERS = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldRENDER_HEADERS";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDRENDER_MARKUP = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldRENDER_MARKUP";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDACTION_SCOPE_ID = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldACTION_SCOPE_ID";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISWINDOWSTATEALLOWED1 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isWindowStateAllowed1";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISWINDOWSTATEALLOWED2 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isWindowStateAllowed2";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISPORTLETMODEALLOWED1 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isPortletModeAllowed1";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISPORTLETMODEALLOWED2 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isPortletModeAllowed2";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPREFERENCES = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPreferences";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPORTLETSESSIONA1 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPortletSessionA1";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPORTLETSESSIONA2 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPortletSessionA2";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPORTLETSESSIONB1 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPortletSessionB1";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPORTLETSESSIONB2 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPortletSessionB2";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPORTLETSESSIONB3 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPortletSessionB3";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPORTLETSESSIONB4 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPortletSessionB4";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPROPERTY1 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getProperty1";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPROPERTY2 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getProperty2";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPROPERTY3 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getProperty3";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPROPERTIES1 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getProperties1";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPROPERTIES2 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getProperties2";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPROPERTIES3 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getProperties3";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPROPERTYNAMES1 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPropertyNames1";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPROPERTYNAMES2 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPropertyNames2";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPORTALCONTEXT = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPortalContext";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETAUTHTYPE1 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getAuthType1";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETAUTHTYPE2 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getAuthType2";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETCONTEXTPATH1 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getContextPath1";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETCONTEXTPATH2 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getContextPath2";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETCONTEXTPATH3 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getContextPath3";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETREMOTEUSER1 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getRemoteUser1";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETREMOTEUSER2 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getRemoteUser2";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETUSERPRINCIPAL1 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getUserPrincipal1";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETUSERPRINCIPAL2 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getUserPrincipal2";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISUSERINROLE1 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isUserInRole1";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISUSERINROLE2 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isUserInRole2";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISUSERINROLE3 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isUserInRole3";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETATTRIBUTE1 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getAttribute1";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETATTRIBUTE2 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getAttribute2";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETATTRIBUTE3 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getAttribute3";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETATTRIBUTENAMES1 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getAttributeNames1";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETATTRIBUTENAMES2 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getAttributeNames2";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETER1 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameter1";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETER2 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameter2";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETER3 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameter3";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETER4 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameter4";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETER5 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameter5";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETERNAMES1 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameterNames1";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETERNAMES2 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameterNames2";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETERVALUES1 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameterValues1";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETERVALUES2 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameterValues2";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETERVALUES3 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameterValues3";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETERVALUES4 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameterValues4";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETERMAP1 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameterMap1";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETERMAP2 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameterMap2";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETERMAP3 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameterMap3";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISSECURE1 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isSecure1";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISSECURE2 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isSecure2";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_SETATTRIBUTE1 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_setAttribute1";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_SETATTRIBUTE2 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_setAttribute2";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_SETATTRIBUTE3 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_setAttribute3";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_REMOVEATTRIBUTE1 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_removeAttribute1";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_REMOVEATTRIBUTE2 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_removeAttribute2";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETREQUESTEDSESSIONID1 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getRequestedSessionId1";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETREQUESTEDSESSIONID2 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getRequestedSessionId2";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISREQUESTEDSESSIONIDVALID1 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isRequestedSessionIdValid1";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISREQUESTEDSESSIONIDVALID2 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isRequestedSessionIdValid2";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETRESPONSECONTENTTYPE1 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getResponseContentType1";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETRESPONSECONTENTTYPE2 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getResponseContentType2";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETRESPONSECONTENTTYPES1 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getResponseContentTypes1";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETRESPONSECONTENTTYPES2 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getResponseContentTypes2";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETLOCALE = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getLocale";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETLOCALES = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getLocales";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETSCHEME = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getScheme";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETSERVERNAME = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getServerName";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETSERVERPORT = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getServerPort";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETWINDOWID = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getWindowID";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETCOOKIES1 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getCookies1";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETCOOKIES2 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getCookies2";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPRIVATEPARAMETERMAP1 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPrivateParameterMap1";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPRIVATEPARAMETERMAP2 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPrivateParameterMap2";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPRIVATEPARAMETERMAP3 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPrivateParameterMap3";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPUBLICPARAMETERMAP1 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPublicParameterMap1";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPUBLICPARAMETERMAP2 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPublicParameterMap2";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPUBLICPARAMETERMAP3 = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPublicParameterMap3";
+   public final static String V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_EXISTS = "V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_exists";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_ADDPROPERTYA1 = "V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_addPropertyA1";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_ADDPROPERTYA2 = "V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_addPropertyA2";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_ADDPROPERTYB1 = "V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_addPropertyB1";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_ADDPROPERTYB2 = "V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_addPropertyB2";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_ADDPROPERTYB3 = "V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_addPropertyB3";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_ADDPROPERTYB4 = "V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_addPropertyB4";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_ADDPROPERTYC1 = "V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_addPropertyC1";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_ADDPROPERTYC2 = "V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_addPropertyC2";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_SETPROPERTY1 = "V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_setProperty1";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_SETPROPERTY2 = "V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_setProperty2";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_SETPROPERTY3 = "V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_setProperty3";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_ENCODEURL1 = "V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_encodeURL1";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_ENCODEURL2 = "V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_encodeURL2";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_GETNAMESPACE1 = "V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_getNamespace1";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_CREATEELEMENT1 = "V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_createElement1";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_CREATEELEMENT2 = "V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_createElement2";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_CREATEELEMENT3 = "V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_createElement3";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_CREATEELEMENT4 = "V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_createElement4";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_CREATEELEMENT5 = "V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_createElement5";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_CREATEELEMENT6 = "V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_createElement6";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_FIELDEXPIRATION_CACHE  = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_fieldEXPIRATION_CACHE ";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_FIELDCACHE_SCOPE  = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_fieldCACHE_SCOPE ";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_FIELDPUBLIC_SCOPE  = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_fieldPUBLIC_SCOPE ";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_FIELDPRIVATE_SCOPE  = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_fieldPRIVATE_SCOPE ";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_FIELDETAG  = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_fieldETAG ";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_FIELDUSE_CACHED_CONTENT  = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_fieldUSE_CACHED_CONTENT ";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_FIELDNAMESPACED_RESPONSE = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_fieldNAMESPACED_RESPONSE";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_FIELDMARKUP_HEAD_ELEMENT = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_fieldMARKUP_HEAD_ELEMENT";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETCONTENTTYPE1 = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getContentType1";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETCONTENTTYPE2 = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getContentType2";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_SETCONTENTTYPE1 = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_setContentType1";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_SETCONTENTTYPE2 = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_setContentType2";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_SETCONTENTTYPE3 = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_setContentType3";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_SETCONTENTTYPE4 = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_setContentType4";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETCHARACTERENCODING = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getCharacterEncoding";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETWRITER1 = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getWriter1";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETWRITER2 = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getWriter2";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETLOCALE = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getLocale";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_SETBUFFERSIZE1 = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_setBufferSize1";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_SETBUFFERSIZE2 = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_setBufferSize2";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETBUFFERSIZE1 = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getBufferSize1";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETBUFFERSIZE2 = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getBufferSize2";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_FLUSHBUFFER1 = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_flushBuffer1";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_RESETBUFFER1 = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_resetBuffer1";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_RESETBUFFER2 = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_resetBuffer2";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_ISCOMMITTED1 = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_isCommitted1";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_ISCOMMITTED2 = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_isCommitted2";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_RESET1 = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_reset1";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_RESET2 = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_reset2";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETPORTLETOUTPUTSTREAM1 = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getPortletOutputStream1";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETPORTLETOUTPUTSTREAM2 = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getPortletOutputStream2";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_CREATERENDERURL = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_createRenderURL";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_CREATEACTIONURL = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_createActionURL";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_CREATERESOURCEURL = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_createResourceURL";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETCACHECONTROL = "V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getCacheControl";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS10 = "V3HeaderPortletTests_SPEC15_Header_parameters10";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS11 = "V3HeaderPortletTests_SPEC15_Header_parameters11";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS13 = "V3HeaderPortletTests_SPEC15_Header_parameters13";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS15 = "V3HeaderPortletTests_SPEC15_Header_parameters15";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADER_PROPERTIES1 = "V3HeaderPortletTests_SPEC15_Header_properties1";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADER_PROPERTIES2 = "V3HeaderPortletTests_SPEC15_Header_properties2";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADER_PROPERTIES3 = "V3HeaderPortletTests_SPEC15_Header_properties3";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADER_PROPERTIES4 = "V3HeaderPortletTests_SPEC15_Header_properties4";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS1 = "V3HeaderPortletTests_SPEC15_Header_parameters1";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS2 = "V3HeaderPortletTests_SPEC15_Header_parameters2";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS3 = "V3HeaderPortletTests_SPEC15_Header_parameters3";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS4 = "V3HeaderPortletTests_SPEC15_Header_parameters4";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS6 = "V3HeaderPortletTests_SPEC15_Header_parameters6";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS7 = "V3HeaderPortletTests_SPEC15_Header_parameters7";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADER_PUBLICRENDERPARAMETERS14 = "V3HeaderPortletTests_SPEC15_Header_publicRenderParameters14";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADER_PUBLICRENDERPARAMETERS15 = "V3HeaderPortletTests_SPEC15_Header_publicRenderParameters15";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADER_PUBLICRENDERPARAMETERS16 = "V3HeaderPortletTests_SPEC15_Header_publicRenderParameters16";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADER_PUBLICRENDERPARAMETERS6 = "V3HeaderPortletTests_SPEC15_Header_publicRenderParameters6";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADER_PUBLICRENDERPARAMETERS13A = "V3HeaderPortletTests_SPEC15_Header_publicRenderParameters13a";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADER_COOKIE8 = "V3HeaderPortletTests_SPEC15_Header_cookie8";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADER_COOKIE9 = "V3HeaderPortletTests_SPEC15_Header_cookie9";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADER_COOKIE10 = "V3HeaderPortletTests_SPEC15_Header_cookie10";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADER_COOKIE11 = "V3HeaderPortletTests_SPEC15_Header_cookie11";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADER_COOKIE12 = "V3HeaderPortletTests_SPEC15_Header_cookie12";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADER_CONTENTTYPE5 = "V3HeaderPortletTests_SPEC15_Header_contentType5";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADER_CHARACTERENCODING2 = "V3HeaderPortletTests_SPEC15_Header_characterEncoding2";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADER_CHARACTERENCODING3 = "V3HeaderPortletTests_SPEC15_Header_characterEncoding3";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADER_CHARACTERENCODING4 = "V3HeaderPortletTests_SPEC15_Header_characterEncoding4";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_SETTITLE = "V3HeaderPortletTests_SPEC15_HeaderResponse_setTitle";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_SETTITLE2 = "V3HeaderPortletTests_SPEC15_HeaderResponse_setTitle2";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_SETTITLE3 = "V3HeaderPortletTests_SPEC15_HeaderResponse_setTitle3";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_SETCONTENTTYPE = "V3HeaderPortletTests_SPEC15_HeaderResponse_setContentType";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_GETWRITER = "V3HeaderPortletTests_SPEC15_HeaderResponse_getWriter";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_GETPORTLETOUTPUTSTREAM = "V3HeaderPortletTests_SPEC15_HeaderResponse_getPortletOutputStream";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY = "V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY2 = "V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency2";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY3 = "V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency3";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY4 = "V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency4";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY5 = "V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency5";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY6 = "V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency6";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY7 = "V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency7";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY8 = "V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency8";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY9 = "V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency9";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY10 = "V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency10";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY11 = "V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency11";
+   public final static String V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY12 = "V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency12";
+
+   
+   private final static Map<String, String> tcd = new HashMap<String, String>();
+   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_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");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_HEADERATTR_ATTRIBUTES3, "During header processing, the LIFECYCLE_PHASE (\"javax.portlet.lifecycle_phase\") attribute will contain the string \"HEADER_PHASE\"");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_HEADERREQ_CONTENTTYPE1, "The getResponseContentType method returns a String representing the default content type the portlet container assumes for the output");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_HEADERREQ_CONTENTTYPE2, "The getResponseContentTypes method returns an Enumeration of String elements representing the acceptable content types for the output in order of preference");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_HEADERREQ_CONTENTTYPE3, "The first element of the Enumeration returned by the getResponseContentTypes method must equal the value returned by the getResponseContentType method");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_HEADERREQ_CONTENTTYPE4, "If a portlet defines support for all content types using a wildcard and the portlet container supports all content types, the getResponseContentType may return the wildcard");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_HEADERREQ_CONTENTTYPE5, "If a portlet defines support for all content types using a wildcard and the portlet container supports all content types, the getResponseContentType may return the preferred content type");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_HEADERREQ_WINDOWID1, "The getWindowID method returns a String representing the current window ID");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_HEADERREQ_WINDOWID4, "The string returned by getWindowID method must be the same ID used for scoping portlet-scope session attributes");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_HEADERREQ_CONTENTTYPE10, "Within the header method, the content type must include only the MIME type, not the character set");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_HEADERREQ_CONTENTTYPE11, "Within the header method, the getResponseContentTypes method must return only the content types supported by the current portlet mode");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_HEADERREQ_CONTENTTYPE13, "The character set of the response can be retrieved via the HeaderResponse.getCharacterEncoding method");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_RENDERSTATE_APIHEADER_GETPORTLETMODE, "Method getPortletMode(): Returns current PortletMode ");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_RENDERSTATE_APIHEADER_GETWINDOWSTATE, "Method getWindowState(): Returns current WindowState");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_RENDERSTATE_APIHEADER_GETRENDERPARAMETERS, "Method getRenderParameters(): Returns an immutable RenderParameters object representing the private and public render parameters");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDUSER_INFO, "Has String field USER_INFO with value of \"javax.portlet.userinfo\" ");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDCCPP_PROFILE, "Has String field CCPP_PROFILE with value of \"javax.portlet.ccpp\" ");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDBASIC_AUTH, "Has String field BASIC_AUTH with value of \"BASIC\" ");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDFORM_AUTH, "Has String field FORM_AUTH with value of \"FORM\" ");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDCLIENT_CERT_AUTH, "Has String field CLIENT_CERT_AUTH with value of \"CLIENT_CERT\" ");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDDIGEST_AUTH, "Has String field DIGEST_AUTH with value of \"DIGEST\" ");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDACTION_PHASE, "Has String field ACTION_PHASE with value of \"ACTION_PHASE\" ");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDEVENT_PHASE, "Has String field EVENT_PHASE with value of \"EVENT_PHASE\" ");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDRENDER_PHASE, "Has String field RENDER_PHASE with value of \"RENDER_PHASE\" ");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDRESOURCE_PHASE, "Has String field RESOURCE_PHASE with value of \"RESOURCE_PHASE\" ");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDHEADER_PHASE, "Has String field HEADER_PHASE with value of \"HEADER_PHASE\" ");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDLIFECYCLE_PHASE, "Has String field LIFECYCLE_PHASE with value of \"javax.portlet.lifecycle_phase\" ");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDRENDER_PART, "Has String field RENDER_PART with value of \"javax.portlet.render_part\" ");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDRENDER_HEADERS, "Has String field RENDER_HEADERS with value of \"RENDER_HEADERS\" ");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDRENDER_MARKUP, "Has String field RENDER_MARKUP with value of \"RENDER_MARKUP\" ");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_FIELDACTION_SCOPE_ID, "Has String field ACTION_SCOPE_ID with value of \"javax.portlet.as\" ");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISWINDOWSTATEALLOWED1, "Method isWindowStateAllowed(WindowState): Returns true if the specified WindowState is allowed");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISWINDOWSTATEALLOWED2, "Method isWindowStateAllowed(WindowState): Returns false if the specified WindowState is not allowed");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISPORTLETMODEALLOWED1, "Method isPortletModeAllowed(PortletMode): Returns true if the specified PortletMode is allowed");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISPORTLETMODEALLOWED2, "Method isPortletModeAllowed(PortletMode): Returns false if the specified PortletMode is not allowed");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPREFERENCES, "Method getPreferences(): Returns the PortletPreferences object associated with the portlet");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPORTLETSESSIONA1, "Method getPortletSession(): Returns current PortletSession if one already exists");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPORTLETSESSIONA2, "Method getPortletSession(): Returns new PortletSession if one does not already exist");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPORTLETSESSIONB1, "Method getPortletSession(boolean): If input flag is true, returns current PortletSession if one already exists");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPORTLETSESSIONB2, "Method getPortletSession(boolean): If input flag is true, returns new PortletSession if one does not already exist");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPORTLETSESSIONB3, "Method getPortletSession(boolean): If input flag is false, returns current PortletSession if one already exists");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPORTLETSESSIONB4, "Method getPortletSession(boolean): If input flag is false, returns null if one does not already exist");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPROPERTY1, "Method getProperty(String): If specified request property exists, returns its value ");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPROPERTY2, "Method getProperty(String): If specified request property does not exist, returns null");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPROPERTY3, "Method getProperty(String): Throws IllegalArgumentException if the name is null");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPROPERTIES1, "Method getProperties(String): If specified request property exists, returns its values as an Enumeration ");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPROPERTIES2, "Method getProperties(String): If specified request property does not exist, returns an empty Enumeration");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPROPERTIES3, "Method getProperties(String): Throws IllegalArgumentException if the name is null");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPROPERTYNAMES1, "Method getPropertyNames(): Returns an Enumeration of all request property names");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPROPERTYNAMES2, "Method getPropertyNames(): Returns an empty Enumeration if there are no request properties defined");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPORTALCONTEXT, "Method getPortalContext(): Returns the context of the portal");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETAUTHTYPE1, "Method getAuthType(): Returns a String indicating the authentication type if the request was authenticated");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETAUTHTYPE2, "Method getAuthType(): Returns null if the request was not authenticated");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETCONTEXTPATH1, "Method getContextPath(): Returns a String representing the context path associated with the portlet");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETCONTEXTPATH2, "Method getContextPath(): Returns an empty String if the portlet is deployed in the default context");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETCONTEXTPATH3, "Method getContextPath(): If the context path is not empty, it must start with \"/\" and may not end with \"/\"");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETREMOTEUSER1, "Method getRemoteUser(): Returns a String representing the login of the user if the request is authenticated");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETREMOTEUSER2, "Method getRemoteUser(): Returns null if the request has not been authenticated");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETUSERPRINCIPAL1, "Method getUserPrincipal(): Returns a java.security.Principal object representing the user if the request has been authenticated");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETUSERPRINCIPAL2, "Method getUserPrincipal(): Returns null if the request has not been authenticated");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISUSERINROLE1, "Method isUserInRole(): Returns true if the authenticated user is in the specified role");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISUSERINROLE2, "Method isUserInRole(): Returns false if the authenticated user is not in the specified role");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISUSERINROLE3, "Method isUserInRole(): Returns false if the user is not authenticated");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETATTRIBUTE1, "Method getAttribute(String): Returns a java.lang.Object for the specified attribute name");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETATTRIBUTE2, "Method getAttribute(String): Returns null if no attribute with the specified name exists");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETATTRIBUTE3, "Method getAttribute(String): Throws IllegalArgumentException if the name is null");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETATTRIBUTENAMES1, "Method getAttributeNames(): Returns a java.util.Enumeration&lt;java.lang.String&gt; of the available attribute names");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETATTRIBUTENAMES2, "Method getAttributeNames(): Returns an empty Enumeration if there are no attributes available");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETER1, "Method getParameter(String): Returns String value of parameter specified by the name");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETER2, "Method getParameter(String): Returns String value of a public render parameter specified by the name");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETER3, "Method getParameter(String): Returns null if no parameter exists for the specified name");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETER4, "Method getParameter(String): Returns first String value from values array if use with a multivalued parameter");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETER5, "Method getParameter(String): Throws IllegalArgumentException if the name is null");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETERNAMES1, "Method getParameterNames(): Returns a java.util.Enumeration&lt;java.lang.String&gt; of the available parameter names");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETERNAMES2, "Method getParameterNames(): Returns an empty Enumeration if there are no parameters available");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETERVALUES1, "Method getParameterValues(String): Returns String[] value of parameter specified by the name");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETERVALUES2, "Method getParameterValues(String): Returns String[] value of a public render parameter specified by the name");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETERVALUES3, "Method getParameterValues(String): Returns null if no parameter exists for the specified name");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETERVALUES4, "Method getParameterValues(String): Throws IllegalArgumentException if the name is null");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETERMAP1, "Method getParameterMap(): Returns an java.util.Map&lt;java.lang.String,java.lang.String[]&gt; object for the parameter names and values if parameters are available");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETERMAP2, "Method getParameterMap(): The returned map contains all public and private parameters for the request");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPARAMETERMAP3, "Method getParameterMap(): Returns an empty map if no parameters exist");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISSECURE1, "Method isSecure(): Returns true if the request was made through a secure channel");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISSECURE2, "Method isSecure(): Returns false if the request was not made through a secure channel");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_SETATTRIBUTE1, "Method setAttribute(String, Object): Stores an attribute object under the specified name in the request");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_SETATTRIBUTE2, "Method setAttribute(String, Object): Removes the attribute by the specified name if the object is null");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_SETATTRIBUTE3, "Method setAttribute(String, Object): Throws IllegalArgumentException if the name is null");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_REMOVEATTRIBUTE1, "Method removeAttribute(String): Removes the attribute specified by the name from the request");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_REMOVEATTRIBUTE2, "Method removeAttribute(String): Throws IllegalArgumentException if the name is null");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETREQUESTEDSESSIONID1, "Method getRequestedSessionId(): Returns the session ID indicated in the client request");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETREQUESTEDSESSIONID2, "Method getRequestedSessionId(): Returns null if no session ID was indicated in the client request");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISREQUESTEDSESSIONIDVALID1, "Method isRequestedSessionIdValid(): Returns true if the session ID is valid");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_ISREQUESTEDSESSIONIDVALID2, "Method isRequestedSessionIdValid(): Returns false if the session ID is not valid");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETRESPONSECONTENTTYPE1, "Method getResponseContentType(): Returns a String representing the portal preferred content type for the response if the content type is defined in the portlet descriptor  ");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETRESPONSECONTENTTYPE2, "Method getResponseContentType(): Returns an empty Enumeration if the content type is not defined in the portlet descriptor");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETRESPONSECONTENTTYPES1, "Method getResponseContentTypes(): Returns an java.util.Enumeration&lt;java.lang.String&gt; object representing the portal preferred content types for the response if the content types are defined in the portlet descriptor");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETRESPONSECONTENTTYPES2, "Method getResponseContentTypes(): Returns an empty Enumeration if the content types are not defined in the portlet descriptor");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETLOCALE, "Method getLocale(): Returns an java.util.Locale object representing the preferred Locale for the response");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETLOCALES, "Method getLocales(): Returns an java.util.Enumeration&lt;java.util.Locale&gt; of the Locales in which the portal will accept content");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETSCHEME, "Method getScheme(): Returns a String value representing the scheme name for the request");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETSERVERNAME, "Method getServerName(): Returns a String value representing the host name for the request");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETSERVERPORT, "Method getServerPort(): Returns an int value representing the port number for the request");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETWINDOWID, "Method getWindowID(): Returns a String value representing the portlet window ID");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETCOOKIES1, "Method getCookies(): Returns a javax.servlet.http.Cookie[] array containing the cookies for this request");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETCOOKIES2, "Method getCookies(): Returns null if no cookies are present");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPRIVATEPARAMETERMAP1, "Method getPrivateParameterMap(): Returns an java.util.Map&lt;java.lang.String,java.lang.String[]&gt; object for the private parameter names and values if available");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPRIVATEPARAMETERMAP2, "Method getPrivateParameterMap(): The returned map is immutable");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPRIVATEPARAMETERMAP3, "Method getPrivateParameterMap(): Returns an empty map if no private parameters exist");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPUBLICPARAMETERMAP1, "Method getPublicParameterMap(): Returns an java.util.Map&lt;java.lang.String,java.lang.String[]&gt; object for the public parameter names and values if available");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPUBLICPARAMETERMAP2, "Method getPublicParameterMap(): The returned map is immutable");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_GETPUBLICPARAMETERMAP3, "Method getPublicParameterMap(): Returns an empty map if no public parameters exist");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC14_PORTLETREQUEST_APIHEADER_EXISTS, "The P3PUserInfos exists as a public static enum");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_ADDPROPERTYA1, "Method addProperty(javax.servlet.http.Cookie): Adds the specified cookie property to the response");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_ADDPROPERTYA2, "Method addProperty(javax.servlet.http.Cookie): Throws IllegalArgumentException if the specified cookie is null");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_ADDPROPERTYB1, "Method addProperty(String, org.w3c.dom.Element): Adds an XML DOM Element to the response for the specified key");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_ADDPROPERTYB2, "Method addProperty(String, org.w3c.dom.Element): If a DOM Element for the specified key already exists, the new element is added in addition to the existing element");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_ADDPROPERTYB3, "Method addProperty(String, org.w3c.dom.Element): If the specified DOM Element value is null, the key is removed from the response");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_ADDPROPERTYB4, "Method addProperty(String, org.w3c.dom.Element): Throws IllegalArgumentException if the specified key is null");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_ADDPROPERTYC1, "Method addProperty(String, String): Adds a property value to an existing key to allow the key to have multiple values");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_ADDPROPERTYC2, "Method addProperty(String, String): Throws IllegalArgumentException if the specified key is null");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_SETPROPERTY1, "Method setProperty(String, String): Sets a property value for the specified key");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_SETPROPERTY2, "Method setProperty(String, String): Resets any existing property values for the specified key");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_SETPROPERTY3, "Method setProperty(String, String): Throws IllegalArgumentException if the specified key is null");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_ENCODEURL1, "Method encodeURL(String): Returns a String representing the encoded URL");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_ENCODEURL2, "Method encodeURL(String): Throws IllegalArgumentException if the input string is not an absolute URL and does not start with at \"/\" character");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_GETNAMESPACE1, "Method getNamespace(): Returns a String containing the namespace value");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_CREATEELEMENT1, "Method createElement(String): Returns an org.w3c.dom.Element object for the specified tag name");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_CREATEELEMENT2, "Method createElement(String): The returned Element has nodeName set to the the specified tag name ");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_CREATEELEMENT3, "Method createElement(String): The returned Element has localName set to null");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_CREATEELEMENT4, "Method createElement(String): The returned Element has prefix set to null");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_CREATEELEMENT5, "Method createElement(String): The returned Element has namespaceURI set to null");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_PORTLETRESPONSE_APIHEADER_CREATEELEMENT6, "Method createElement(String): Throws org.w3c.dom.DOMException - INVALID_CHARACTER_ERR if the specified name contains an illegal character. ");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_FIELDEXPIRATION_CACHE , "Has String field EXPIRATION_CACHE with value of \"portlet.expiration-cache\"");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_FIELDCACHE_SCOPE , "Has String field CACHE_SCOPE with value of \"portlet.cache-scope\"");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_FIELDPUBLIC_SCOPE , "Has String field PUBLIC_SCOPE with value of \"portlet.public-scope\"");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_FIELDPRIVATE_SCOPE , "Has String field PRIVATE_SCOPE with value of \"portlet.private-scope\"");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_FIELDETAG , "Has String field ETAG with value of \"portlet.ETag\"");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_FIELDUSE_CACHED_CONTENT , "Has String field USE_CACHED_CONTENT with value of \"portlet.use-cached-content\"");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_FIELDNAMESPACED_RESPONSE, "Has String field NAMESPACED_RESPONSE with value of \"X-JAVAX-PORTLET-NAMESPACED-RESPONSE\"");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_FIELDMARKUP_HEAD_ELEMENT, "Has String field MARKUP_HEAD_ELEMENT with value of \"javax.portlet.markup.head.element\"");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETCONTENTTYPE1, "Method getContentType(): Returns a String containing the MIME type that can be used with the response");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETCONTENTTYPE2, "Method getContentType(): Returns null if no content type is set");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_SETCONTENTTYPE1, "Method setContentType(String): Sets the MIME type for the response");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_SETCONTENTTYPE2, "Method setContentType(String): Has no effect if called after the getWriter method has been called");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_SETCONTENTTYPE3, "Method setContentType(String): Has no effect if called after the getPortletOutputStream method has been called");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_SETCONTENTTYPE4, "Method setContentType(String): Throws IllegalArgumentException if the specified MIME type is invalid");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETCHARACTERENCODING, "Method getCharacterEncoding(): Returns a String containing the name of the charset used for the response body");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETWRITER1, "Method getWriter(): Returns a PrintWriter object");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETWRITER2, "Method getWriter(): Throws IllegalStateException if called after the getPortletOutputStream method has been called");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETLOCALE, "Method getLocale(): Returns an java.util.Locale representing the locale assigned to the response");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_SETBUFFERSIZE1, "Method setBufferSize(int): Sets the preferred buffer size for the response body");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_SETBUFFERSIZE2, "Method setBufferSize(int): Throws IllegalStateException if called after content has been written");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETBUFFERSIZE1, "Method getBufferSize(): Returns an int designating the actual buffer size used for the response");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETBUFFERSIZE2, "Method getBufferSize(): Returns null if buffering is not used");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_FLUSHBUFFER1, "Method flushBuffer(): Returns void and flushes buffer to OutputStream");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_RESETBUFFER1, "Method resetBuffer(): Returns void and clears and data and properties from the buffer");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_RESETBUFFER2, "Method resetBuffer(): Throws IllegalStateException if called after the response has been committed");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_ISCOMMITTED1, "Method isCommitted(): Returns true if the response has been committed");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_ISCOMMITTED2, "Method isCommitted(): Returns false if the response has not been committed");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_RESET1, "Method reset(): Returns void and clears and data and properties from the buffer");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_RESET2, "Method reset(): Throws IllegalStateException if called after the response has been committed");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETPORTLETOUTPUTSTREAM1, "Method getPortletOutputStream(): Returns a PortletOutputStream object");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETPORTLETOUTPUTSTREAM2, "Method getPortletOutputStream(): Throws IllegalStateException if called after the getWriter method has been called");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_CREATERENDERURL, "Method createRenderURL(): Returns a PortletURL object representing a render URL targeting the portlet");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_CREATEACTIONURL, "Method createActionURL(): Returns a PortletURL object representing an action URL targeting the portlet");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_CREATERESOURCEURL, "Method createResourceURL(): Returns a ResourceURL object targeting the portlet");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_MIMERESPONSE_APIHEADER_GETCACHECONTROL, "Method getCacheControl(): Returns a CacheControl object");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS10, "The portlet-container must not propagate parameters received in an action or event request to subsequent header requests of the portlet");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS11, "If a portlet receives a render request that is the result of a client request targeted to another portlet in the portal page, the parameters should be the same parameters as of the previous render request from this client");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS13, "If a portlet receives a render request that is the result of invoking a render URL targeting this portlet the render parameters received with the render request must be the parameters set on the render URL");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS15, "Render parameters get automatically cleared if the portlet receives a processAction or processEvent call");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADER_PROPERTIES1, "The portlet can use the getProperty method to access single portal property and optionally-available HTTP header values");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADER_PROPERTIES2, "The portlet can use the getProperties method to access multiple portal property and optionally-available HTTP header values by the same property name");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADER_PROPERTIES3, "The portlet can use the getPropertyNames method to obtain an Enumeration of all available property names");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADER_PROPERTIES4, "The portlet can access cookies provided by the current request using the getCookies method");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS1, "If a portlet receives a request from a client request targeted to the portlet itself, the parameters must be the string parameters encoded in the URL (added when creating the PortletURL) and the string parameters sent by the client to the portlet as part of the client request");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS2, "The parameters the header object returns must be \"x-www-form-urlencoded\" decoded");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS3, "The getParameterValues method returns an array of String objects containing all the parameter values associated with a parameter name");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS4, "The value returned from the getParameter method must be the first value in the array of String objects returned by getParameterValues");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS6, "The getParameterMap method must return an unmodifiable Map object");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS7, "If the request does not have any parameters, the getParameterMap must return an empty Map object");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADER_PUBLICRENDERPARAMETERS14, "Portlets can access a merged set of public and private parameters via the getParameter methods");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADER_PUBLICRENDERPARAMETERS15, "A map of private parameters can be obtained through the getPrivateParameterMap method");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADER_PUBLICRENDERPARAMETERS16, "A map of public parameters can be obtained through the getPublicParameterMap method");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADER_PUBLICRENDERPARAMETERS6, "Public render parameters are available in the header method");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADER_PUBLICRENDERPARAMETERS13A, "A public render parameter can be deleted using the removePublicRenderParameter method on the PortletURL");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADER_COOKIE8, "Cookies set during the Header phase should be available to the portlet during the Resource phase");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADER_COOKIE9, "Cookies set during the Header phase should be available to the portlet during a subsequent Action phase");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADER_COOKIE10, "Cookies set during the Header phase should be available to the portlet during a subsequent Render phase");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADER_COOKIE11, "Cookies set during the Header phase should be available to the portlet during a subsequent request triggered by a URL");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADER_COOKIE12, "Cookies set during the Header phase after the response has been committed are ignored");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADER_CONTENTTYPE5, "If the setContentType method is not called before the getWriter or getPortletOutputStream method is used, the portlet container uses the content type returned by getResponseContentType");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADER_CHARACTERENCODING2, "The character encoding can be set via the setLocale method and a locale-encoding-mapping-list mapping in the web.xml deployment descriptor");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADER_CHARACTERENCODING3, "The character encoding can be set via the setContentType method if the given content type string provides a value for the charset attribute");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADER_CHARACTERENCODING4, "If the portlet does not set the character encoding, the portlet container uses UTF-8 as the default character encoding");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_SETTITLE, "This method sets the title of the portlet.");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_SETTITLE2, "Test for empty string.");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_SETTITLE3, "Test for null string.");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_SETCONTENTTYPE, "The portlet container will ignore any character encoding specified as part of the content type for render calls.");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_GETWRITER, "Data written to the HeaderResponse writer is added to the aggregated portal document HEAD section.");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_GETPORTLETOUTPUTSTREAM, "Data written to the HeaderResponse writer is added to the aggregated portal document HEAD section.");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY, "Method addDependency(String name, String scope, String version) - Adds a dependency on a page-level resource that is managed by the portal.");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY2, "Method addDependency(String name, String scope, String version) - The dependency added by this method can be shared with other portlets.");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY3, "Method addDependency(String name, String scope, String version) - The dependency added dynamically through this method is added to the statically declared dependencies for the portlet for the current rendering cycle only.");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY4, "Method addDependency(String name, String scope, String version) - Conflicting case when the dependency is added with this method and also with addProperty method?");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY5, "Method addDependency(String name, String scope, String version) - Throws IllegalArgumentException - if name is null.");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY6, "Method addDependency(String name, String scope, String version) - Throws IllegalArgumentException - if name is empty.");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY7, "Method addDependency(String name, String scope, String version, String markup) - Adds a dependency on a page-level resource that is managed by the portal and adds a resource for addition to the page for the dependency.");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY8, "Method addDependency(String name, String scope, String version, String markup) - The portal may choose to include the later version of the resource on the page if 2 same dependencies with different version are declared.");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY9, "Method addDependency(String name, String scope, String version, String markup) - Conflicting case when the dependency is added with this method and also with addProperty method?");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY10, "Method addDependency(String name, String scope, String version, String markup) - Throws IllegalArgumentException - if name is null.");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY11, "Method addDependency(String name, String scope, String version, String markup) - Throws IllegalArgumentException - if name is empty.");
+      tcd.put(V3HEADERPORTLETTESTS_SPEC15_HEADERRESPONSE_ADDDEPENDENCY12, "Method addDependency(String name, String scope, String version, String markup) - Throws IllegalArgumentException - if markup does not contain valid tags for the document HEAD section.");
+
+   }
+
+   /**
+    * Constructor.
+    * 
+    * Passes the static test case names - details map to the superclass
+    * 
+    * Note that the backing map is static and not threadsafe. Operations
+    * that change the map such as put, remove, etc., should not be used
+    * in portlets.
+    */
+   public ModuleTestCaseDetails() {
+     super(tcd); 
+   }
+
+}
diff --git a/portlet-tck_3.0/V3HeaderPortletTests/src/main/resources/xml-resources/additionalPages.xml b/portlet-tck_3.0/V3HeaderPortletTests/src/main/resources/xml-resources/additionalPages.xml
new file mode 100644
index 0000000..179c98a
--- /dev/null
+++ b/portlet-tck_3.0/V3HeaderPortletTests/src/main/resources/xml-resources/additionalPages.xml
@@ -0,0 +1,47 @@
+<?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.     
+-->
+<pluto-portal-driver xmlns="http://portals.apache.org/pluto/xsd/pluto-portal-driver-config.xsd" xmlns:pa="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://portals.apache.org/pluto/xsd/pluto-portal-driver-config.xsd                         http://portals.apache.org/pluto/pluto-portal/1.1/pluto-portal-driver-config.xsd" version="1.1">
+<portal-name>pluto-portal-driver</portal-name>
+<portal-version>2.1.0-SNAPSHOT</portal-version>
+<container-name>Pluto Portal Driver</container-name>
+<supports>
+<portlet-mode>view</portlet-mode>
+<portlet-mode>edit</portlet-mode>
+<portlet-mode>help</portlet-mode>
+<portlet-mode>config</portlet-mode>
+<window-state>normal</window-state>
+<window-state>maximized</window-state>
+<window-state>minimized</window-state>
+</supports>
+<render-config default="About Apache Pluto">
+<page xmlns="" name="V3HeaderPortletTests" uri="/WEB-INF/themes/pluto-default-theme.jsp">
+<portlet context="/tck-V3HeaderPortletTests-3.0-SNAPSHOT" name="HeaderPortletTests_SPEC3_6_4_HeaderPortlet"/>
+<portlet context="/tck-V3HeaderPortletTests-3.0-SNAPSHOT" name="HeaderPortletTests_SPEC7_14_RenderRequest"/>
+<portlet context="/tck-V3HeaderPortletTests-3.0-SNAPSHOT" name="HeaderPortletTests_SPEC14_HeaderAttr"/>
+<portlet context="/tck-V3HeaderPortletTests-3.0-SNAPSHOT" name="HeaderPortletTests_SPEC14_HeaderReq"/>
+<portlet context="/tck-V3HeaderPortletTests-3.0-SNAPSHOT" name="HeaderPortletTests_SPEC14_RenderState_ApiHeader"/>
+<portlet context="/tck-V3HeaderPortletTests-3.0-SNAPSHOT" name="HeaderPortletTests_SPEC14_PortletRequest_ApiHeader"/>
+<portlet context="/tck-V3HeaderPortletTests-3.0-SNAPSHOT" name="HeaderPortletTests_SPEC15_PortletResponse_ApiHeader"/>
+<portlet context="/tck-V3HeaderPortletTests-3.0-SNAPSHOT" name="HeaderPortletTests_SPEC15_MimeResponse_ApiHeader"/>
+<portlet context="/tck-V3HeaderPortletTests-3.0-SNAPSHOT" name="HeaderPortletTests_SPEC15_Header"/>
+<portlet context="/tck-V3HeaderPortletTests-3.0-SNAPSHOT" name="HeaderPortletTests_SPEC15_HeaderResponse"/>
+</page>
+</render-config>
+</pluto-portal-driver>
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
new file mode 100644
index 0000000..b184fea
--- /dev/null
+++ b/portlet-tck_3.0/V3HeaderPortletTests/src/main/resources/xml-resources/additionalTCs.xml
@@ -0,0 +1,241 @@
+<?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 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>
+<entry key="V3HeaderPortletTests_SPEC14_HeaderAttr_attributes3">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_HeaderReq_contentType1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_HeaderReq_contentType2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_HeaderReq_contentType3">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_HeaderReq_contentType4">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_HeaderReq_contentType5">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_HeaderReq_windowId1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_HeaderReq_windowId4">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_HeaderReq_contentType10">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_HeaderReq_contentType11">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_HeaderReq_contentType13">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_RenderState_ApiHeader_getPortletMode">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_RenderState_ApiHeader_getWindowState">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_RenderState_ApiHeader_getRenderParameters">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldUSER_INFO">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldCCPP_PROFILE">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldBASIC_AUTH">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldFORM_AUTH">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldCLIENT_CERT_AUTH">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldDIGEST_AUTH">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldACTION_PHASE">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldEVENT_PHASE">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldRENDER_PHASE">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldRESOURCE_PHASE">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldHEADER_PHASE">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldLIFECYCLE_PHASE">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldRENDER_PART">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldRENDER_HEADERS">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldRENDER_MARKUP">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_fieldACTION_SCOPE_ID">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isWindowStateAllowed1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isWindowStateAllowed2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isPortletModeAllowed1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isPortletModeAllowed2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPreferences">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPortletSessionA1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPortletSessionA2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPortletSessionB1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPortletSessionB2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPortletSessionB3">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPortletSessionB4">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getProperty1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getProperty2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getProperty3">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getProperties1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getProperties2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getProperties3">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPropertyNames1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPropertyNames2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPortalContext">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getAuthType1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getAuthType2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getContextPath1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getContextPath2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getContextPath3">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getRemoteUser1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getRemoteUser2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getUserPrincipal1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getUserPrincipal2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isUserInRole1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isUserInRole2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isUserInRole3">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getAttribute1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getAttribute2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getAttribute3">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getAttributeNames1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getAttributeNames2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameter1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameter2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameter3">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameter4">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameter5">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameterNames1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameterNames2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameterValues1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameterValues2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameterValues3">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameterValues4">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameterMap1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameterMap2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getParameterMap3">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isSecure1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isSecure2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_setAttribute1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_setAttribute2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_setAttribute3">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_removeAttribute1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_removeAttribute2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getRequestedSessionId1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getRequestedSessionId2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isRequestedSessionIdValid1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_isRequestedSessionIdValid2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getResponseContentType1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getResponseContentType2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getResponseContentTypes1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getResponseContentTypes2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getLocale">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getLocales">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getScheme">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getServerName">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getServerPort">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getWindowID">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getCookies1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getCookies2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPrivateParameterMap1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPrivateParameterMap2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPrivateParameterMap3">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPublicParameterMap1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPublicParameterMap2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_getPublicParameterMap3">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC14_PortletRequest_ApiHeader_exists">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_addPropertyA1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_addPropertyA2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_addPropertyB1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_addPropertyB2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_addPropertyB3">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_addPropertyB4">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_addPropertyC1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_addPropertyC2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_setProperty1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_setProperty2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_setProperty3">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_encodeURL1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_encodeURL2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_getNamespace1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_createElement1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_createElement2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_createElement3">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_createElement4">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_createElement5">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_PortletResponse_ApiHeader_createElement6">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_fieldEXPIRATION_CACHE ">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_fieldCACHE_SCOPE ">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_fieldPUBLIC_SCOPE ">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_fieldPRIVATE_SCOPE ">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_fieldETAG ">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_fieldUSE_CACHED_CONTENT ">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_fieldNAMESPACED_RESPONSE">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_fieldMARKUP_HEAD_ELEMENT">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getContentType1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getContentType2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_setContentType1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_setContentType2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_setContentType3">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_setContentType4">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getCharacterEncoding">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getWriter1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getWriter2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getLocale">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_setBufferSize1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_setBufferSize2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getBufferSize1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getBufferSize2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_flushBuffer1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_resetBuffer1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_resetBuffer2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_isCommitted1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_isCommitted2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_reset1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_reset2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getPortletOutputStream1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getPortletOutputStream2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_createRenderURL">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_createActionURL">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_createResourceURL">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_MimeResponse_ApiHeader_getCacheControl">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_Header_parameters10">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_Header_parameters11">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_Header_parameters13">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_Header_parameters15">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_Header_properties1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_Header_properties2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_Header_properties3">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_Header_properties4">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_Header_parameters1">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_Header_parameters2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_Header_parameters3">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_Header_parameters4">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_Header_parameters6">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_Header_parameters7">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_Header_publicRenderParameters14">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_Header_publicRenderParameters15">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_Header_publicRenderParameters16">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_Header_publicRenderParameters6">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_Header_publicRenderParameters13a">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_Header_cookie8">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_Header_cookie9">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_Header_cookie10">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_Header_cookie11">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_Header_cookie12">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_Header_contentType5">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_Header_characterEncoding2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_Header_characterEncoding3">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_Header_characterEncoding4">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_HeaderResponse_setTitle">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_HeaderResponse_setTitle2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_HeaderResponse_setTitle3">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_HeaderResponse_setContentType">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_HeaderResponse_getWriter">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_HeaderResponse_getPortletOutputStream">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency2">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency3">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency4">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency5">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency6">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency7">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency8">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency9">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency10">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency11">V3HeaderPortletTests</entry>
+<entry key="V3HeaderPortletTests_SPEC15_HeaderResponse_addDependency12">V3HeaderPortletTests</entry>
+</properties>
diff --git a/portlet-tck_3.0/deploy/pom.xml b/portlet-tck_3.0/deploy/pom.xml
index 99fc300..6c4651e 100644
--- a/portlet-tck_3.0/deploy/pom.xml
+++ b/portlet-tck_3.0/deploy/pom.xml
@@ -1,23 +1,21 @@
-<!--

-    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">

+<?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.     
+--><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>

@@ -310,6 +308,12 @@
             <version>${project.version}</version>

             <type>war</type>

         </dependency>

+      <dependency>

+         <groupId>${project.groupId}</groupId>

+         <artifactId>tck-V3HeaderPortletTests</artifactId>

+         <version>${project.version}</version>

+         <type>war</type>

+      </dependency>

 

       <dependency>

          <groupId>${project.groupId}</groupId>

@@ -368,4 +372,4 @@
 		</plugins>

 	</build>

 

-</project>

+</project>
\ No newline at end of file
diff --git a/portlet-tck_3.0/driver/pom.xml b/portlet-tck_3.0/driver/pom.xml
index a4344c6..aac756f 100644
--- a/portlet-tck_3.0/driver/pom.xml
+++ b/portlet-tck_3.0/driver/pom.xml
@@ -1,23 +1,21 @@
-<!--

-    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">

+<?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.     
+--><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>

@@ -50,16 +48,16 @@
          <scope>compile</scope>

       </dependency>

       

-      <!-- PhantomJs Headless browser - Use if the default headless browser of Selenium is not working.

-           In order to use - 

-              1. Download PhantomJs - http://phantomjs.org/download.html

+      <!-- PhantomJs Headless browser - Use if the default headless browser of Selenium is not working.
+           In order to use - 
+              1. Download PhantomJs - http://phantomjs.org/download.html
               2. Configure driver to use PhantomJs in TCKSimpleTestDriver->setUpBeforeClass() method --> 

-      <!-- 

-      <dependency>

-            <groupId>com.github.detro.ghostdriver</groupId>

-            <artifactId>phantomjsdriver</artifactId>

-            <version>1.0.4</version>

-      </dependency>

+      <!-- 
+      <dependency>
+            <groupId>com.github.detro.ghostdriver</groupId>
+            <artifactId>phantomjsdriver</artifactId>
+            <version>1.0.4</version>
+      </dependency>
 	  -->

        

       <!-- Dependency on common module for element ID suffixes -->

@@ -336,6 +334,12 @@
          <version>${project.version}</version>

          <type>war</type>

       </dependency>

+   <dependency>

+         <groupId>${project.groupId}</groupId>

+         <artifactId>tck-V3HeaderPortletTests</artifactId>

+         <version>${project.version}</version>

+         <type>war</type>

+      </dependency>

    </dependencies>

 

    <properties>

@@ -416,6 +420,7 @@
                         tck-V3PortletConfigTests,

 						tck-V3URLTests,

 						tck-V3RenderStateTests

+                        ,tck-V3HeaderPortletTests

                      </includeArtifactIds>

                      <includes>${test.file.dir}/*.xml</includes>

                      <outputDirectory>${project.build.directory}</outputDirectory>

@@ -448,15 +453,14 @@
                      </includes>

                      <outputDir>${project.build.directory}/classes/${test.list.dir}</outputDir>

                      <fileMappers>

-                        <fileMapper

-                           implementation="org.codehaus.plexus.components.io.filemappers.MergeFileMapper">

+                        <fileMapper implementation="org.codehaus.plexus.components.io.filemappers.MergeFileMapper">

                            <targetName>${test.list.name}</targetName>

                         </fileMapper>

                      </fileMappers>

                      <stylesheet>${project.build.directory}/${test.file.dir}/${test.list.xsl}</stylesheet>

                   </transformationSet>

 

-                  <!-- Combine several page files into a single page file containing 

+                  <!-- Combine several page files into a single page file containing 
                      all test portal pages -->

                   <transformationSet>

                      <dir>${project.build.directory}/${test.file.dir}</dir>

@@ -465,8 +469,7 @@
                      </includes>

                      <outputDir>${project.build.directory}/classes/${test.list.dir}</outputDir>

                      <fileMappers>

-                        <fileMapper

-                           implementation="org.codehaus.plexus.components.io.filemappers.MergeFileMapper">

+                        <fileMapper implementation="org.codehaus.plexus.components.io.filemappers.MergeFileMapper">

                            <targetName>${page.file.final.name}</targetName>

                         </fileMapper>

                      </fileMappers>

@@ -592,4 +595,4 @@
    </profiles>

 

 

-</project>

+</project>
\ No newline at end of file
diff --git a/portlet-tck_3.0/driver/src/main/resources/xml-resources/pageFiles.xml b/portlet-tck_3.0/driver/src/main/resources/xml-resources/pageFiles.xml
index 020f590..fc193b1 100644
--- a/portlet-tck_3.0/driver/src/main/resources/xml-resources/pageFiles.xml
+++ b/portlet-tck_3.0/driver/src/main/resources/xml-resources/pageFiles.xml
@@ -1,27 +1,24 @@
-<?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.     

--->

-<!--

-   Lists the page files from the individual modules that will be combined

-   together to form the final page file with all pages for the TCK. 

- -->

-<fl:filelist xmlns:fl="http://www.apache.org/2014/javax/portlet/tck/filelist">

+<?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.     
+--><!--
+   Lists the page files from the individual modules that will be combined
+   together to form the final page file with all pages for the TCK. 
+ --><fl:filelist xmlns:fl="http://www.apache.org/2014/javax/portlet/tck/filelist">

    <fl:file>tck-TestModule1-pages.xml</fl:file>

    <fl:file>tck-TestModule2-pages.xml</fl:file>

    <fl:file>tck-TestModule3-pages.xml</fl:file>

@@ -66,4 +63,5 @@
    <fl:file>tck-V3PortletConfigTests-pages.xml</fl:file>

    <fl:file>tck-V3URLTests-pages.xml</fl:file>

    <fl:file>tck-V3RenderStateTests-pages.xml</fl:file>

-</fl:filelist>

+<fl:file>tck-V3HeaderPortletTests-pages.xml</fl:file>

+</fl:filelist>
\ No newline at end of file
diff --git a/portlet-tck_3.0/driver/src/main/resources/xml-resources/testFiles.xml b/portlet-tck_3.0/driver/src/main/resources/xml-resources/testFiles.xml
index d0cb9e9..f495bc4 100644
--- a/portlet-tck_3.0/driver/src/main/resources/xml-resources/testFiles.xml
+++ b/portlet-tck_3.0/driver/src/main/resources/xml-resources/testFiles.xml
@@ -1,27 +1,24 @@
-<?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.     

--->

-<!--

-   Lists the test files from the individual modules that will be combined

-   together to form the final list file containing all test cases for the TCK. 

- -->

-<fl:filelist xmlns:fl="http://www.apache.org/2014/javax/portlet/tck/filelist">

+<?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.     
+--><!--
+   Lists the test files from the individual modules that will be combined
+   together to form the final list file containing all test cases for the TCK. 
+ --><fl:filelist xmlns:fl="http://www.apache.org/2014/javax/portlet/tck/filelist">

    <fl:file>tck-TestModule1-tests.xml</fl:file>

    <fl:file>tck-TestModule2-tests.xml</fl:file>

    <fl:file>tck-TestModule3-tests.xml</fl:file>

@@ -66,4 +63,5 @@
    <fl:file>tck-V3PortletConfigTests-tests.xml</fl:file>

    <fl:file>tck-V3URLTests-tests.xml</fl:file>

    <fl:file>tck-V3RenderStateTests-tests.xml</fl:file>

-</fl:filelist>

+<fl:file>tck-V3HeaderPortletTests-tests.xml</fl:file>

+</fl:filelist>
\ No newline at end of file
diff --git a/portlet-tck_3.0/pom.xml b/portlet-tck_3.0/pom.xml
index d1b025c..00d71b3 100644
--- a/portlet-tck_3.0/pom.xml
+++ b/portlet-tck_3.0/pom.xml
@@ -1,23 +1,21 @@
-<!--

-    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">

+<?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.     
+--><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">

    

    <parent>

       <groupId>org.apache.portals.pluto</groupId>

@@ -76,13 +74,13 @@
       <test.list.dir>generated-resources/xml/final</test.list.dir>

       <test.list.name>test.xml</test.list.name>

 

-      <!-- This variable is used by the test driver to determine how test 

-         page links are to be found. Values: generateURLs the driver generates URLs 

-         based on config information. followLinks the driver looks for links containing 

-         the page name and clicks them in order to access the test pages. In this 

-         case, the portal must produce navigation links to each of the test pages. 

-         If configured to generate URLs, the driver generates URLs of the form: http://<test.server.host>:<test.server.port>/<test.context.base><test.page.name> 

-         where <test.page.name> is the name of the test page generated by the individual 

+      <!-- This variable is used by the test driver to determine how test 
+         page links are to be found. Values: generateURLs the driver generates URLs 
+         based on config information. followLinks the driver looks for links containing 
+         the page name and clicks them in order to access the test pages. In this 
+         case, the portal must produce navigation links to each of the test pages. 
+         If configured to generate URLs, the driver generates URLs of the form: http://<test.server.host>:<test.server.port>/<test.context.base><test.page.name> 
+         where <test.page.name> is the name of the test page generated by the individual 
          modules -->

       <test.url.strategy>followLinks</test.url.strategy>

 

@@ -171,6 +169,7 @@
       <module>V3PortletConfigTests</module>

 	  <module>V3URLTests</module>

 	  <module>V3RenderStateTests</module>

+      <module>V3HeaderPortletTests</module>

       <module>deploy</module>

       <module>driver</module>

    </modules>

@@ -452,4 +451,4 @@
       </profile>

    </profiles>

 

-</project>

+</project>
\ No newline at end of file