You are viewing a plain text version of this content. The canonical link for it is here.
Posted to pluto-scm@portals.apache.org by ms...@apache.org on 2014/08/22 15:13:59 UTC
[21/35] Added new dispatcher tests:
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/2a619ecc/portlet-tck_3.0/V2DispatcherTests6/src/main/java/javax/portlet/tck/servlets/DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_servlet.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2DispatcherTests6/src/main/java/javax/portlet/tck/servlets/DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_servlet.java b/portlet-tck_3.0/V2DispatcherTests6/src/main/java/javax/portlet/tck/servlets/DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_servlet.java
new file mode 100644
index 0000000..1bcdf12
--- /dev/null
+++ b/portlet-tck_3.0/V2DispatcherTests6/src/main/java/javax/portlet/tck/servlets/DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_servlet.java
@@ -0,0 +1,488 @@
+/* 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.servlets;
+
+import java.io.*;
+import java.util.*;
+import java.util.logging.*;
+import static java.util.logging.Logger.*;
+import javax.portlet.*;
+import javax.portlet.filter.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.portlet.tck.beans.*;
+import javax.portlet.tck.constants.*;
+import static javax.portlet.tck.constants.Constants.*;
+import static javax.portlet.tck.beans.JSR286DispatcherTestCaseDetails.*;
+
+/**
+ * Servlet for JSR 362 request dispatcher testing.
+ * Used by portlet: DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender
+ *
+ * @author nick
+ *
+ */
+public class DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_servlet extends HttpServlet {
+ private static final String LOG_CLASS =
+ DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_servlet.class.getName();
+ private final Logger LOGGER = Logger.getLogger(LOG_CLASS);
+
+ @Override
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp)
+ throws ServletException, IOException {
+ processTCKReq(req, resp);
+ }
+
+ @Override
+ protected void doPost(HttpServletRequest req, HttpServletResponse resp)
+ throws ServletException, IOException {
+ processTCKReq(req, resp);
+ }
+
+ // The tck uses only get & post requests
+ protected void processTCKReq(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ LOGGER.entering(LOG_CLASS, "servlet entry");
+
+ // values from first servlet in forward/include chain
+ String fsfcRequest_uri = (String) request.getAttribute(ATTR_DISPATCH_REQUEST_URI );
+ String fsfcContext_path = (String) request.getAttribute(ATTR_DISPATCH_CONTEXT_PATH);
+ String fsfcServlet_path = (String) request.getAttribute(ATTR_DISPATCH_SERVLET_PATH);
+ String fsfcPath_info = (String) request.getAttribute(ATTR_DISPATCH_PATH_INFO );
+ String fsfcQuery_string = (String) request.getAttribute(ATTR_DISPATCH_QUERY_STRING);
+
+ PortletRequest portletReq = (PortletRequest) request.getAttribute("javax.portlet.request");
+ PortletResponse portletResp = (PortletResponse) request.getAttribute("javax.portlet.response");
+ PortletConfig portletConfig = (PortletConfig) request.getAttribute("javax.portlet.config");
+ long svtTid = Thread.currentThread().getId();
+ long reqTid = (Long) portletReq.getAttribute(THREADID_ATTR);
+
+ PrintWriter writer = ((MimeResponse)portletResp).getWriter();
+
+ JSR286DispatcherTestCaseDetails tcd = new JSR286DispatcherTestCaseDetails();
+
+ // Create result objects for the tests
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_dispatch1 */
+ /* Details: "In a servlet included by the target of a forward, if the */
+ /* path provided to getRequestDispatcher method contains query */
+ /* strings, parameters specified in the query strings must be passed */
+ /* to the target servlet during a forward" */
+ TestResult tr0 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRENDER_DISPATCH1);
+ try {
+ String qparm1 = portletReq.getParameter("qparm1");
+ String qparm2 = portletReq.getParameter("qparm2");
+ boolean ok = ((qparm1 != null) && (qparm2 != null));
+ if (ok) ok = (qparm1.equals("qvalue1") && qparm2.equals("qvalue2"));
+ if (!ok) tr0.appendTcDetail("qparm1=" + qparm1 + ", qparm2=" + qparm2);
+ tr0.setTcSuccess(ok);
+ } catch(Exception e) {tr0.appendTcDetail(e.toString());}
+ tr0.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_dispatch2 */
+ /* Details: "In a servlet included by the target of a forward, */
+ /* parameters specified in the query strings must be aggregated with */
+ /* the portlet render parameters" */
+ TestResult tr1 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRENDER_DISPATCH2);
+ try {
+ String[] qparm2 = portletReq.getParameterValues("qparm2");
+ boolean ok = ((qparm2 != null) && (qparm2.length > 1));
+ String str = "qparm2 " + ((qparm2==null)?("is null"):("length="+qparm2.length));
+ if (!ok) tr1.appendTcDetail(str);
+ tr1.setTcSuccess(ok);
+ } catch(Exception e) {tr1.appendTcDetail(e.toString());}
+ tr1.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_dispatch3 */
+ /* Details: "In a servlet included by the target of a forward, if */
+ /* query string parameters have the same names as render parameter */
+ /* names, the query string parameters appear in the parameter values */
+ /* array before the render parameter values" */
+ TestResult tr2 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRENDER_DISPATCH3);
+ try {
+ String qparm1 = portletReq.getParameter("qparm1");
+ String qparm2 = portletReq.getParameter("qparm2");
+ boolean ok = ((qparm1 != null) && (qparm2 != null));
+ if (ok) ok = (qparm1.equals("qvalue1") && qparm2.equals("qvalue2"));
+ if (!ok) tr2.appendTcDetail("qparm1=" + qparm1 + ", qparm2=" + qparm2);
+ tr2.setTcSuccess(ok);
+ } catch(Exception e) {tr2.appendTcDetail(e.toString());}
+ tr2.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_invoke2 */
+ /* Details: "In a servlet included by the target of a forward, */
+ /* parameters to the include method for a target servlet can be the */
+ /* request and response classes from the portlet lifecyle method */
+ /* initiating the include" */
+ TestResult tr3 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRENDER_INVOKE2);
+ try {
+ // If this gets executed, include worked.
+ tr3.setTcSuccess(true);
+ } catch(Exception e) {tr3.appendTcDetail(e.toString());}
+ tr3.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_invoke4 */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* portlet container must invoke the target servlet in the same */
+ /* thread as the PortletRequestDispatcher include invocation" */
+ TestResult tr4 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRENDER_INVOKE4);
+ try {
+ tr4.setTcSuccess(reqTid == svtTid);
+ } catch(Exception e) {tr4.appendTcDetail(e.toString());}
+ tr4.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_invoke7 */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* path elements of the request object exposed to the target servlet */
+ /* must reflect the path used to obtain the RequestDispatcher" */
+ TestResult tr5 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRENDER_INVOKE7);
+ try {
+ String ctxPath= request.getContextPath();
+ CompareUtils.stringsEqual(ctxPath, "/DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_servlet", tr5);
+ } catch(Exception e) {tr5.appendTcDetail(e.toString());}
+ tr5.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_invoke9 */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* included servlet must be handled as an HTTP GET request" */
+ TestResult tr6 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRENDER_INVOKE9);
+ try {
+ String meth = request.getMethod();
+ tr6.setTcSuccess(meth.equals("GET"));
+ } catch(Exception e) {tr6.appendTcDetail(e.toString());}
+ tr6.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes1 */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* portlet request attribute javax.servlet.include.request_uri will */
+ /* be set, and equals the value from HTTPServletRequest.getRequestURI */
+ /* for the first servlet in the include chain" */
+ TestResult tr7 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRENDER_ATTRIBUTES1);
+ try {
+ String name = "javax.servlet.include.request_uri";
+ String attrVal = (String) portletReq.getAttribute(name);
+ String currVal = fsfcRequest_uri;
+ CompareUtils.stringsEqual(attrVal, currVal, tr7);
+ } catch(Exception e) {tr7.appendTcDetail(e.toString());}
+ tr7.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes1a */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* servlet request attribute javax.servlet.include.request_uri will */
+ /* be set, and equals the value from HTTPServletRequest.getRequestURI */
+ /* for the first servlet in the include chain" */
+ TestResult tr8 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRENDER_ATTRIBUTES1A);
+ try {
+ String name = "javax.servlet.include.request_uri";
+ String attrVal = (String) request.getAttribute(name);
+ String currVal = fsfcRequest_uri;
+ CompareUtils.stringsEqual(attrVal, currVal, tr8);
+ } catch(Exception e) {tr8.appendTcDetail(e.toString());}
+ tr8.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes1b */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* portlet request attribute javax.servlet.forward.request_uri will */
+ /* not be set" */
+ TestResult tr9 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRENDER_ATTRIBUTES1B);
+ try {
+ String name = "javax.servlet.forward.request_uri";
+ String attrVal = (String) portletReq.getAttribute(name);
+ if (attrVal != null) tr9.appendTcDetail("Attribute should be null, but has the value of: " + attrVal);
+ tr9.setTcSuccess(attrVal == null);
+ } catch(Exception e) {tr9.appendTcDetail(e.toString());}
+ tr9.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes1c */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* servlet request attribute javax.servlet.forward.request_uri will */
+ /* not be set" */
+ TestResult tr10 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRENDER_ATTRIBUTES1C);
+ try {
+ String name = "javax.servlet.forward.request_uri";
+ String attrVal = (String) request.getAttribute(name);
+ if (attrVal != null) tr10.appendTcDetail("Attribute should be null, but has the value of: " + attrVal);
+ tr10.setTcSuccess(attrVal == null);
+ } catch(Exception e) {tr10.appendTcDetail(e.toString());}
+ tr10.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes2 */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* portlet request attribute javax.servlet.include.context_path will */
+ /* be set, and equals the value from */
+ /* HTTPServletRequest.getContextPath for the first servlet in the */
+ /* include chain" */
+ TestResult tr11 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRENDER_ATTRIBUTES2);
+ try {
+ String name = "javax.servlet.include.context_path";
+ String attrVal = (String) portletReq.getAttribute(name);
+ String currVal = fsfcContext_path;
+ CompareUtils.stringsEqual(attrVal, currVal, tr11);
+ } catch(Exception e) {tr11.appendTcDetail(e.toString());}
+ tr11.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes2a */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* servlet request attribute javax.servlet.include.context_path will */
+ /* be set, and equals the value from */
+ /* HTTPServletRequest.getContextPath for the first servlet in the */
+ /* include chain" */
+ TestResult tr12 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRENDER_ATTRIBUTES2A);
+ try {
+ String name = "javax.servlet.include.context_path";
+ String attrVal = (String) request.getAttribute(name);
+ String currVal = fsfcContext_path;
+ CompareUtils.stringsEqual(attrVal, currVal, tr12);
+ } catch(Exception e) {tr12.appendTcDetail(e.toString());}
+ tr12.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes2b */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* portlet request attribute javax.servlet.forward.context_path will */
+ /* not be set" */
+ TestResult tr13 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRENDER_ATTRIBUTES2B);
+ try {
+ String name = "javax.servlet.forward.context_path";
+ String attrVal = (String) portletReq.getAttribute(name);
+ if (attrVal != null) tr13.appendTcDetail("Attribute should be null, but has the value of: " + attrVal);
+ tr13.setTcSuccess(attrVal == null);
+ } catch(Exception e) {tr13.appendTcDetail(e.toString());}
+ tr13.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes2c */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* servlet request attribute javax.servlet.forward.context_path will */
+ /* not be set" */
+ TestResult tr14 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRENDER_ATTRIBUTES2C);
+ try {
+ String name = "javax.servlet.forward.context_path";
+ String attrVal = (String) request.getAttribute(name);
+ if (attrVal != null) tr14.appendTcDetail("Attribute should be null, but has the value of: " + attrVal);
+ tr14.setTcSuccess(attrVal == null);
+ } catch(Exception e) {tr14.appendTcDetail(e.toString());}
+ tr14.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes3 */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* portlet request attribute javax.servlet.include.servlet_path will */
+ /* be set, and equals the value from */
+ /* HTTPServletRequest.getServletPath for the first servlet in the */
+ /* include chain" */
+ TestResult tr15 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRENDER_ATTRIBUTES3);
+ try {
+ String name = "javax.servlet.include.servlet_path";
+ String attrVal = (String) portletReq.getAttribute(name);
+ String currVal = fsfcServlet_path;
+ CompareUtils.stringsEqual(attrVal, currVal, tr15);
+ } catch(Exception e) {tr15.appendTcDetail(e.toString());}
+ tr15.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes3a */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* servlet request attribute javax.servlet.include.servlet_path will */
+ /* be set, and equals the value from */
+ /* HTTPServletRequest.getServletPath for the first servlet in the */
+ /* include chain" */
+ TestResult tr16 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRENDER_ATTRIBUTES3A);
+ try {
+ String name = "javax.servlet.include.servlet_path";
+ String attrVal = (String) request.getAttribute(name);
+ String currVal = fsfcServlet_path;
+ CompareUtils.stringsEqual(attrVal, currVal, tr16);
+ } catch(Exception e) {tr16.appendTcDetail(e.toString());}
+ tr16.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes3b */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* portlet request attribute javax.servlet.forward.servlet_path will */
+ /* not be set" */
+ TestResult tr17 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRENDER_ATTRIBUTES3B);
+ try {
+ String name = "javax.servlet.forward.servlet_path";
+ String attrVal = (String) portletReq.getAttribute(name);
+ if (attrVal != null) tr17.appendTcDetail("Attribute should be null, but has the value of: " + attrVal);
+ tr17.setTcSuccess(attrVal == null);
+ } catch(Exception e) {tr17.appendTcDetail(e.toString());}
+ tr17.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes3c */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* servlet request attribute javax.servlet.forward.servlet_path will */
+ /* not be set" */
+ TestResult tr18 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRENDER_ATTRIBUTES3C);
+ try {
+ String name = "javax.servlet.forward.servlet_path";
+ String attrVal = (String) request.getAttribute(name);
+ if (attrVal != null) tr18.appendTcDetail("Attribute should be null, but has the value of: " + attrVal);
+ tr18.setTcSuccess(attrVal == null);
+ } catch(Exception e) {tr18.appendTcDetail(e.toString());}
+ tr18.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes4 */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* portlet request attribute javax.servlet.include.path_info will be */
+ /* set, and equals the value from HTTPServletRequest.getPathInfo for */
+ /* the first servlet in the include chain" */
+ TestResult tr19 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRENDER_ATTRIBUTES4);
+ try {
+ String name = "javax.servlet.include.path_info";
+ String attrVal = (String) portletReq.getAttribute(name);
+ String currVal = fsfcPath_info;
+ CompareUtils.stringsEqual(attrVal, currVal, tr19);
+ } catch(Exception e) {tr19.appendTcDetail(e.toString());}
+ tr19.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes4a */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* servlet request attribute javax.servlet.include.path_info will be */
+ /* set, and equals the value from HTTPServletRequest.getPathInfo for */
+ /* the first servlet in the include chain" */
+ TestResult tr20 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRENDER_ATTRIBUTES4A);
+ try {
+ String name = "javax.servlet.include.path_info";
+ String attrVal = (String) request.getAttribute(name);
+ String currVal = fsfcPath_info;
+ CompareUtils.stringsEqual(attrVal, currVal, tr20);
+ } catch(Exception e) {tr20.appendTcDetail(e.toString());}
+ tr20.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes4b */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* portlet request attribute javax.servlet.forward.path_info will not */
+ /* be set" */
+ TestResult tr21 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRENDER_ATTRIBUTES4B);
+ try {
+ String name = "javax.servlet.forward.path_info";
+ String attrVal = (String) portletReq.getAttribute(name);
+ if (attrVal != null) tr21.appendTcDetail("Attribute should be null, but has the value of: " + attrVal);
+ tr21.setTcSuccess(attrVal == null);
+ } catch(Exception e) {tr21.appendTcDetail(e.toString());}
+ tr21.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes4c */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* servlet request attribute javax.servlet.forward.path_info will not */
+ /* be set" */
+ TestResult tr22 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRENDER_ATTRIBUTES4C);
+ try {
+ String name = "javax.servlet.forward.path_info";
+ String attrVal = (String) request.getAttribute(name);
+ if (attrVal != null) tr22.appendTcDetail("Attribute should be null, but has the value of: " + attrVal);
+ tr22.setTcSuccess(attrVal == null);
+ } catch(Exception e) {tr22.appendTcDetail(e.toString());}
+ tr22.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes5 */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* portlet request attribute javax.servlet.include.query_string will */
+ /* be set, and equals the value from */
+ /* HTTPServletRequest.getQueryString for the first servlet in the */
+ /* include chain" */
+ TestResult tr23 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRENDER_ATTRIBUTES5);
+ try {
+ String name = "javax.servlet.include.query_string";
+ String attrVal = (String) portletReq.getAttribute(name);
+ String currVal = fsfcQuery_string;
+ CompareUtils.stringsEqual(attrVal, currVal, tr23);
+ } catch(Exception e) {tr23.appendTcDetail(e.toString());}
+ tr23.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes5a */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* servlet request attribute javax.servlet.include.query_string will */
+ /* be set, and equals the value from */
+ /* HTTPServletRequest.getQueryString for the first servlet in the */
+ /* include chain" */
+ TestResult tr24 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRENDER_ATTRIBUTES5A);
+ try {
+ String name = "javax.servlet.include.query_string";
+ String attrVal = (String) request.getAttribute(name);
+ String currVal = fsfcQuery_string;
+ CompareUtils.stringsEqual(attrVal, currVal, tr24);
+ } catch(Exception e) {tr24.appendTcDetail(e.toString());}
+ tr24.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes5b */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* portlet request attribute javax.servlet.forward.query_string will */
+ /* not be set" */
+ TestResult tr25 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRENDER_ATTRIBUTES5B);
+ try {
+ String name = "javax.servlet.forward.query_string";
+ String attrVal = (String) portletReq.getAttribute(name);
+ if (attrVal != null) tr25.appendTcDetail("Attribute should be null, but has the value of: " + attrVal);
+ tr25.setTcSuccess(attrVal == null);
+ } catch(Exception e) {tr25.appendTcDetail(e.toString());}
+ tr25.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes5c */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* servlet request attribute javax.servlet.forward.query_string will */
+ /* not be set" */
+ TestResult tr26 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRENDER_ATTRIBUTES5C);
+ try {
+ String name = "javax.servlet.forward.query_string";
+ String attrVal = (String) request.getAttribute(name);
+ if (attrVal != null) tr26.appendTcDetail("Attribute should be null, but has the value of: " + attrVal);
+ tr26.setTcSuccess(attrVal == null);
+ } catch(Exception e) {tr26.appendTcDetail(e.toString());}
+ tr26.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes6 */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* request attribute javax.portlet.config must be set to the */
+ /* javax.portlet.PortletConfig object" */
+ TestResult tr27 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRENDER_ATTRIBUTES6);
+ try {
+ ClassChecker cc = new ClassChecker(portletConfig.getClass());
+ boolean ok = cc.implementsInterface(PortletConfig.class);
+ tr27.setTcSuccess(ok);
+ } catch(Exception e) {tr27.appendTcDetail(e.toString());}
+ tr27.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes7 */
+ /* Details: "In a servlet included by the target of a forward, for */
+ /* includes from the render method, The request attribute */
+ /* javax.portlet.request must be set to the */
+ /* javax.portlet.RenderRequest object" */
+ TestResult tr28 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRENDER_ATTRIBUTES7);
+ try {
+ ClassChecker cc = new ClassChecker(portletReq.getClass());
+ boolean ok = cc.implementsInterface(RenderRequest.class);
+ tr28.setTcSuccess(ok);
+ } catch(Exception e) {tr28.appendTcDetail(e.toString());}
+ tr28.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes8 */
+ /* Details: "In a servlet included by the target of a forward, for */
+ /* includes from the render method, The request attribute */
+ /* javax.portlet.response must be set to the */
+ /* javax.portlet.RenderResponse object" */
+ TestResult tr29 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRENDER_ATTRIBUTES8);
+ try {
+ ClassChecker cc = new ClassChecker(portletResp.getClass());
+ boolean ok = cc.implementsInterface(RenderResponse.class);
+ tr29.setTcSuccess(ok);
+ } catch(Exception e) {tr29.appendTcDetail(e.toString());}
+ tr29.writeTo(writer);
+
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/2a619ecc/portlet-tck_3.0/V2DispatcherTests6/src/main/java/javax/portlet/tck/servlets/DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_servlet.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2DispatcherTests6/src/main/java/javax/portlet/tck/servlets/DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_servlet.java b/portlet-tck_3.0/V2DispatcherTests6/src/main/java/javax/portlet/tck/servlets/DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_servlet.java
new file mode 100644
index 0000000..9d9e614
--- /dev/null
+++ b/portlet-tck_3.0/V2DispatcherTests6/src/main/java/javax/portlet/tck/servlets/DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_servlet.java
@@ -0,0 +1,488 @@
+/* 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.servlets;
+
+import java.io.*;
+import java.util.*;
+import java.util.logging.*;
+import static java.util.logging.Logger.*;
+import javax.portlet.*;
+import javax.portlet.filter.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.portlet.tck.beans.*;
+import javax.portlet.tck.constants.*;
+import static javax.portlet.tck.constants.Constants.*;
+import static javax.portlet.tck.beans.JSR286DispatcherTestCaseDetails.*;
+
+/**
+ * Servlet for JSR 362 request dispatcher testing.
+ * Used by portlet: DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource
+ *
+ * @author nick
+ *
+ */
+public class DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_servlet extends HttpServlet {
+ private static final String LOG_CLASS =
+ DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_servlet.class.getName();
+ private final Logger LOGGER = Logger.getLogger(LOG_CLASS);
+
+ @Override
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp)
+ throws ServletException, IOException {
+ processTCKReq(req, resp);
+ }
+
+ @Override
+ protected void doPost(HttpServletRequest req, HttpServletResponse resp)
+ throws ServletException, IOException {
+ processTCKReq(req, resp);
+ }
+
+ // The tck uses only get & post requests
+ protected void processTCKReq(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ LOGGER.entering(LOG_CLASS, "servlet entry");
+
+ // values from first servlet in forward/include chain
+ String fsfcRequest_uri = (String) request.getAttribute(ATTR_DISPATCH_REQUEST_URI );
+ String fsfcContext_path = (String) request.getAttribute(ATTR_DISPATCH_CONTEXT_PATH);
+ String fsfcServlet_path = (String) request.getAttribute(ATTR_DISPATCH_SERVLET_PATH);
+ String fsfcPath_info = (String) request.getAttribute(ATTR_DISPATCH_PATH_INFO );
+ String fsfcQuery_string = (String) request.getAttribute(ATTR_DISPATCH_QUERY_STRING);
+
+ PortletRequest portletReq = (PortletRequest) request.getAttribute("javax.portlet.request");
+ PortletResponse portletResp = (PortletResponse) request.getAttribute("javax.portlet.response");
+ PortletConfig portletConfig = (PortletConfig) request.getAttribute("javax.portlet.config");
+ long svtTid = Thread.currentThread().getId();
+ long reqTid = (Long) portletReq.getAttribute(THREADID_ATTR);
+
+ PrintWriter writer = ((MimeResponse)portletResp).getWriter();
+
+ JSR286DispatcherTestCaseDetails tcd = new JSR286DispatcherTestCaseDetails();
+
+ // Create result objects for the tests
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_dispatch1 */
+ /* Details: "In a servlet included by the target of a forward, if the */
+ /* path provided to getRequestDispatcher method contains query */
+ /* strings, parameters specified in the query strings must be passed */
+ /* to the target servlet during a forward" */
+ TestResult tr0 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRESOURCE_DISPATCH1);
+ try {
+ String qparm1 = portletReq.getParameter("qparm1");
+ String qparm2 = portletReq.getParameter("qparm2");
+ boolean ok = ((qparm1 != null) && (qparm2 != null));
+ if (ok) ok = (qparm1.equals("qvalue1") && qparm2.equals("qvalue2"));
+ if (!ok) tr0.appendTcDetail("qparm1=" + qparm1 + ", qparm2=" + qparm2);
+ tr0.setTcSuccess(ok);
+ } catch(Exception e) {tr0.appendTcDetail(e.toString());}
+ tr0.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_dispatch2 */
+ /* Details: "In a servlet included by the target of a forward, */
+ /* parameters specified in the query strings must be aggregated with */
+ /* the portlet render parameters" */
+ TestResult tr1 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRESOURCE_DISPATCH2);
+ try {
+ String[] qparm2 = portletReq.getParameterValues("qparm2");
+ boolean ok = ((qparm2 != null) && (qparm2.length > 1));
+ String str = "qparm2 " + ((qparm2==null)?("is null"):("length="+qparm2.length));
+ if (!ok) tr1.appendTcDetail(str);
+ tr1.setTcSuccess(ok);
+ } catch(Exception e) {tr1.appendTcDetail(e.toString());}
+ tr1.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_dispatch3 */
+ /* Details: "In a servlet included by the target of a forward, if */
+ /* query string parameters have the same names as render parameter */
+ /* names, the query string parameters appear in the parameter values */
+ /* array before the render parameter values" */
+ TestResult tr2 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRESOURCE_DISPATCH3);
+ try {
+ String qparm1 = portletReq.getParameter("qparm1");
+ String qparm2 = portletReq.getParameter("qparm2");
+ boolean ok = ((qparm1 != null) && (qparm2 != null));
+ if (ok) ok = (qparm1.equals("qvalue1") && qparm2.equals("qvalue2"));
+ if (!ok) tr2.appendTcDetail("qparm1=" + qparm1 + ", qparm2=" + qparm2);
+ tr2.setTcSuccess(ok);
+ } catch(Exception e) {tr2.appendTcDetail(e.toString());}
+ tr2.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_invoke2 */
+ /* Details: "In a servlet included by the target of a forward, */
+ /* parameters to the include method for a target servlet can be the */
+ /* request and response classes from the portlet lifecyle method */
+ /* initiating the include" */
+ TestResult tr3 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRESOURCE_INVOKE2);
+ try {
+ // If this gets executed, include worked.
+ tr3.setTcSuccess(true);
+ } catch(Exception e) {tr3.appendTcDetail(e.toString());}
+ tr3.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_invoke4 */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* portlet container must invoke the target servlet in the same */
+ /* thread as the PortletRequestDispatcher include invocation" */
+ TestResult tr4 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRESOURCE_INVOKE4);
+ try {
+ tr4.setTcSuccess(reqTid == svtTid);
+ } catch(Exception e) {tr4.appendTcDetail(e.toString());}
+ tr4.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_invoke7 */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* path elements of the request object exposed to the target servlet */
+ /* must reflect the path used to obtain the RequestDispatcher" */
+ TestResult tr5 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRESOURCE_INVOKE7);
+ try {
+ String ctxPath= request.getContextPath();
+ CompareUtils.stringsEqual(ctxPath, "/DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_servlet", tr5);
+ } catch(Exception e) {tr5.appendTcDetail(e.toString());}
+ tr5.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_invoke9 */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* included servlet must be handled as an HTTP GET request" */
+ TestResult tr6 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRESOURCE_INVOKE9);
+ try {
+ String meth = request.getMethod();
+ tr6.setTcSuccess(meth.equals("GET"));
+ } catch(Exception e) {tr6.appendTcDetail(e.toString());}
+ tr6.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes1 */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* portlet request attribute javax.servlet.include.request_uri will */
+ /* be set, and equals the value from HTTPServletRequest.getRequestURI */
+ /* for the first servlet in the include chain" */
+ TestResult tr7 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRESOURCE_ATTRIBUTES1);
+ try {
+ String name = "javax.servlet.include.request_uri";
+ String attrVal = (String) portletReq.getAttribute(name);
+ String currVal = fsfcRequest_uri;
+ CompareUtils.stringsEqual(attrVal, currVal, tr7);
+ } catch(Exception e) {tr7.appendTcDetail(e.toString());}
+ tr7.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes1a */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* servlet request attribute javax.servlet.include.request_uri will */
+ /* be set, and equals the value from HTTPServletRequest.getRequestURI */
+ /* for the first servlet in the include chain" */
+ TestResult tr8 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRESOURCE_ATTRIBUTES1A);
+ try {
+ String name = "javax.servlet.include.request_uri";
+ String attrVal = (String) request.getAttribute(name);
+ String currVal = fsfcRequest_uri;
+ CompareUtils.stringsEqual(attrVal, currVal, tr8);
+ } catch(Exception e) {tr8.appendTcDetail(e.toString());}
+ tr8.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes1b */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* portlet request attribute javax.servlet.forward.request_uri will */
+ /* not be set" */
+ TestResult tr9 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRESOURCE_ATTRIBUTES1B);
+ try {
+ String name = "javax.servlet.forward.request_uri";
+ String attrVal = (String) portletReq.getAttribute(name);
+ if (attrVal != null) tr9.appendTcDetail("Attribute should be null, but has the value of: " + attrVal);
+ tr9.setTcSuccess(attrVal == null);
+ } catch(Exception e) {tr9.appendTcDetail(e.toString());}
+ tr9.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes1c */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* servlet request attribute javax.servlet.forward.request_uri will */
+ /* not be set" */
+ TestResult tr10 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRESOURCE_ATTRIBUTES1C);
+ try {
+ String name = "javax.servlet.forward.request_uri";
+ String attrVal = (String) request.getAttribute(name);
+ if (attrVal != null) tr10.appendTcDetail("Attribute should be null, but has the value of: " + attrVal);
+ tr10.setTcSuccess(attrVal == null);
+ } catch(Exception e) {tr10.appendTcDetail(e.toString());}
+ tr10.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes2 */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* portlet request attribute javax.servlet.include.context_path will */
+ /* be set, and equals the value from */
+ /* HTTPServletRequest.getContextPath for the first servlet in the */
+ /* include chain" */
+ TestResult tr11 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRESOURCE_ATTRIBUTES2);
+ try {
+ String name = "javax.servlet.include.context_path";
+ String attrVal = (String) portletReq.getAttribute(name);
+ String currVal = fsfcContext_path;
+ CompareUtils.stringsEqual(attrVal, currVal, tr11);
+ } catch(Exception e) {tr11.appendTcDetail(e.toString());}
+ tr11.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes2a */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* servlet request attribute javax.servlet.include.context_path will */
+ /* be set, and equals the value from */
+ /* HTTPServletRequest.getContextPath for the first servlet in the */
+ /* include chain" */
+ TestResult tr12 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRESOURCE_ATTRIBUTES2A);
+ try {
+ String name = "javax.servlet.include.context_path";
+ String attrVal = (String) request.getAttribute(name);
+ String currVal = fsfcContext_path;
+ CompareUtils.stringsEqual(attrVal, currVal, tr12);
+ } catch(Exception e) {tr12.appendTcDetail(e.toString());}
+ tr12.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes2b */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* portlet request attribute javax.servlet.forward.context_path will */
+ /* not be set" */
+ TestResult tr13 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRESOURCE_ATTRIBUTES2B);
+ try {
+ String name = "javax.servlet.forward.context_path";
+ String attrVal = (String) portletReq.getAttribute(name);
+ if (attrVal != null) tr13.appendTcDetail("Attribute should be null, but has the value of: " + attrVal);
+ tr13.setTcSuccess(attrVal == null);
+ } catch(Exception e) {tr13.appendTcDetail(e.toString());}
+ tr13.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes2c */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* servlet request attribute javax.servlet.forward.context_path will */
+ /* not be set" */
+ TestResult tr14 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRESOURCE_ATTRIBUTES2C);
+ try {
+ String name = "javax.servlet.forward.context_path";
+ String attrVal = (String) request.getAttribute(name);
+ if (attrVal != null) tr14.appendTcDetail("Attribute should be null, but has the value of: " + attrVal);
+ tr14.setTcSuccess(attrVal == null);
+ } catch(Exception e) {tr14.appendTcDetail(e.toString());}
+ tr14.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes3 */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* portlet request attribute javax.servlet.include.servlet_path will */
+ /* be set, and equals the value from */
+ /* HTTPServletRequest.getServletPath for the first servlet in the */
+ /* include chain" */
+ TestResult tr15 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRESOURCE_ATTRIBUTES3);
+ try {
+ String name = "javax.servlet.include.servlet_path";
+ String attrVal = (String) portletReq.getAttribute(name);
+ String currVal = fsfcServlet_path;
+ CompareUtils.stringsEqual(attrVal, currVal, tr15);
+ } catch(Exception e) {tr15.appendTcDetail(e.toString());}
+ tr15.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes3a */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* servlet request attribute javax.servlet.include.servlet_path will */
+ /* be set, and equals the value from */
+ /* HTTPServletRequest.getServletPath for the first servlet in the */
+ /* include chain" */
+ TestResult tr16 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRESOURCE_ATTRIBUTES3A);
+ try {
+ String name = "javax.servlet.include.servlet_path";
+ String attrVal = (String) request.getAttribute(name);
+ String currVal = fsfcServlet_path;
+ CompareUtils.stringsEqual(attrVal, currVal, tr16);
+ } catch(Exception e) {tr16.appendTcDetail(e.toString());}
+ tr16.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes3b */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* portlet request attribute javax.servlet.forward.servlet_path will */
+ /* not be set" */
+ TestResult tr17 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRESOURCE_ATTRIBUTES3B);
+ try {
+ String name = "javax.servlet.forward.servlet_path";
+ String attrVal = (String) portletReq.getAttribute(name);
+ if (attrVal != null) tr17.appendTcDetail("Attribute should be null, but has the value of: " + attrVal);
+ tr17.setTcSuccess(attrVal == null);
+ } catch(Exception e) {tr17.appendTcDetail(e.toString());}
+ tr17.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes3c */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* servlet request attribute javax.servlet.forward.servlet_path will */
+ /* not be set" */
+ TestResult tr18 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRESOURCE_ATTRIBUTES3C);
+ try {
+ String name = "javax.servlet.forward.servlet_path";
+ String attrVal = (String) request.getAttribute(name);
+ if (attrVal != null) tr18.appendTcDetail("Attribute should be null, but has the value of: " + attrVal);
+ tr18.setTcSuccess(attrVal == null);
+ } catch(Exception e) {tr18.appendTcDetail(e.toString());}
+ tr18.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes4 */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* portlet request attribute javax.servlet.include.path_info will be */
+ /* set, and equals the value from HTTPServletRequest.getPathInfo for */
+ /* the first servlet in the include chain" */
+ TestResult tr19 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRESOURCE_ATTRIBUTES4);
+ try {
+ String name = "javax.servlet.include.path_info";
+ String attrVal = (String) portletReq.getAttribute(name);
+ String currVal = fsfcPath_info;
+ CompareUtils.stringsEqual(attrVal, currVal, tr19);
+ } catch(Exception e) {tr19.appendTcDetail(e.toString());}
+ tr19.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes4a */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* servlet request attribute javax.servlet.include.path_info will be */
+ /* set, and equals the value from HTTPServletRequest.getPathInfo for */
+ /* the first servlet in the include chain" */
+ TestResult tr20 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRESOURCE_ATTRIBUTES4A);
+ try {
+ String name = "javax.servlet.include.path_info";
+ String attrVal = (String) request.getAttribute(name);
+ String currVal = fsfcPath_info;
+ CompareUtils.stringsEqual(attrVal, currVal, tr20);
+ } catch(Exception e) {tr20.appendTcDetail(e.toString());}
+ tr20.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes4b */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* portlet request attribute javax.servlet.forward.path_info will not */
+ /* be set" */
+ TestResult tr21 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRESOURCE_ATTRIBUTES4B);
+ try {
+ String name = "javax.servlet.forward.path_info";
+ String attrVal = (String) portletReq.getAttribute(name);
+ if (attrVal != null) tr21.appendTcDetail("Attribute should be null, but has the value of: " + attrVal);
+ tr21.setTcSuccess(attrVal == null);
+ } catch(Exception e) {tr21.appendTcDetail(e.toString());}
+ tr21.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes4c */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* servlet request attribute javax.servlet.forward.path_info will not */
+ /* be set" */
+ TestResult tr22 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRESOURCE_ATTRIBUTES4C);
+ try {
+ String name = "javax.servlet.forward.path_info";
+ String attrVal = (String) request.getAttribute(name);
+ if (attrVal != null) tr22.appendTcDetail("Attribute should be null, but has the value of: " + attrVal);
+ tr22.setTcSuccess(attrVal == null);
+ } catch(Exception e) {tr22.appendTcDetail(e.toString());}
+ tr22.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes5 */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* portlet request attribute javax.servlet.include.query_string will */
+ /* be set, and equals the value from */
+ /* HTTPServletRequest.getQueryString for the first servlet in the */
+ /* include chain" */
+ TestResult tr23 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRESOURCE_ATTRIBUTES5);
+ try {
+ String name = "javax.servlet.include.query_string";
+ String attrVal = (String) portletReq.getAttribute(name);
+ String currVal = fsfcQuery_string;
+ CompareUtils.stringsEqual(attrVal, currVal, tr23);
+ } catch(Exception e) {tr23.appendTcDetail(e.toString());}
+ tr23.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes5a */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* servlet request attribute javax.servlet.include.query_string will */
+ /* be set, and equals the value from */
+ /* HTTPServletRequest.getQueryString for the first servlet in the */
+ /* include chain" */
+ TestResult tr24 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRESOURCE_ATTRIBUTES5A);
+ try {
+ String name = "javax.servlet.include.query_string";
+ String attrVal = (String) request.getAttribute(name);
+ String currVal = fsfcQuery_string;
+ CompareUtils.stringsEqual(attrVal, currVal, tr24);
+ } catch(Exception e) {tr24.appendTcDetail(e.toString());}
+ tr24.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes5b */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* portlet request attribute javax.servlet.forward.query_string will */
+ /* not be set" */
+ TestResult tr25 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRESOURCE_ATTRIBUTES5B);
+ try {
+ String name = "javax.servlet.forward.query_string";
+ String attrVal = (String) portletReq.getAttribute(name);
+ if (attrVal != null) tr25.appendTcDetail("Attribute should be null, but has the value of: " + attrVal);
+ tr25.setTcSuccess(attrVal == null);
+ } catch(Exception e) {tr25.appendTcDetail(e.toString());}
+ tr25.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes5c */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* servlet request attribute javax.servlet.forward.query_string will */
+ /* not be set" */
+ TestResult tr26 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRESOURCE_ATTRIBUTES5C);
+ try {
+ String name = "javax.servlet.forward.query_string";
+ String attrVal = (String) request.getAttribute(name);
+ if (attrVal != null) tr26.appendTcDetail("Attribute should be null, but has the value of: " + attrVal);
+ tr26.setTcSuccess(attrVal == null);
+ } catch(Exception e) {tr26.appendTcDetail(e.toString());}
+ tr26.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes6 */
+ /* Details: "In a servlet included by the target of a forward, the */
+ /* request attribute javax.portlet.config must be set to the */
+ /* javax.portlet.PortletConfig object" */
+ TestResult tr27 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRESOURCE_ATTRIBUTES6);
+ try {
+ ClassChecker cc = new ClassChecker(portletConfig.getClass());
+ boolean ok = cc.implementsInterface(PortletConfig.class);
+ tr27.setTcSuccess(ok);
+ } catch(Exception e) {tr27.appendTcDetail(e.toString());}
+ tr27.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes7 */
+ /* Details: "In a servlet included by the target of a forward, for */
+ /* includes from the serveResource method, The request attribute */
+ /* javax.portlet.request must be set to the */
+ /* javax.portlet.ResourceRequest object" */
+ TestResult tr28 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRESOURCE_ATTRIBUTES7);
+ try {
+ ClassChecker cc = new ClassChecker(portletReq.getClass());
+ boolean ok = cc.implementsInterface(ResourceRequest.class);
+ tr28.setTcSuccess(ok);
+ } catch(Exception e) {tr28.appendTcDetail(e.toString());}
+ tr28.writeTo(writer);
+
+ /* TestCase: V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes8 */
+ /* Details: "In a servlet included by the target of a forward, for */
+ /* includes from the serveResource method, The request attribute */
+ /* javax.portlet.response must be set to the */
+ /* javax.portlet.ResourceResponse object" */
+ TestResult tr29 = tcd.getTestResultFailed(V2DISPATCHERTESTS6_SPEC2_19_FWDTHENINCLUDESERVLETRESOURCE_ATTRIBUTES8);
+ try {
+ ClassChecker cc = new ClassChecker(portletResp.getClass());
+ boolean ok = cc.implementsInterface(ResourceResponse.class);
+ tr29.setTcSuccess(ok);
+ } catch(Exception e) {tr29.appendTcDetail(e.toString());}
+ tr29.writeTo(writer);
+
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/2a619ecc/portlet-tck_3.0/V2DispatcherTests6/src/main/resources/xml-resources/additionalTCs.xml
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/V2DispatcherTests6/src/main/resources/xml-resources/additionalTCs.xml b/portlet-tck_3.0/V2DispatcherTests6/src/main/resources/xml-resources/additionalTCs.xml
new file mode 100644
index 0000000..c49a9cb
--- /dev/null
+++ b/portlet-tck_3.0/V2DispatcherTests6/src/main/resources/xml-resources/additionalTCs.xml
@@ -0,0 +1,257 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
+<properties>
+<!-- JSR 286 API DispatcherTests6 test case names and page mappings -->
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletAction_dispatch1">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletAction_dispatch2">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletAction_dispatch3">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletAction_invoke2">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletAction_invoke4">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletAction_invoke7">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletAction_attributes1">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletAction_attributes1a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletAction_attributes1b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletAction_attributes1c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletAction_attributes2">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletAction_attributes2a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletAction_attributes2b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletAction_attributes2c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletAction_attributes3">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletAction_attributes3a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletAction_attributes3b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletAction_attributes3c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletAction_attributes4">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletAction_attributes4a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletAction_attributes4b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletAction_attributes4c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletAction_attributes5">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletAction_attributes5a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletAction_attributes5b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletAction_attributes5c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletAction_attributes6">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletAction_attributes7">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletAction_attributes8">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletEvent_dispatch1">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletEvent_dispatch2">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletEvent_dispatch3">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletEvent_invoke2">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletEvent_invoke4">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletEvent_invoke7">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletEvent_attributes1">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletEvent_attributes1a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletEvent_attributes1b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletEvent_attributes1c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletEvent_attributes2">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletEvent_attributes2a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletEvent_attributes2b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletEvent_attributes2c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletEvent_attributes3">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletEvent_attributes3a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletEvent_attributes3b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletEvent_attributes3c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletEvent_attributes4">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletEvent_attributes4a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletEvent_attributes4b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletEvent_attributes4c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletEvent_attributes5">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletEvent_attributes5a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletEvent_attributes5b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletEvent_attributes5c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletEvent_attributes6">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletEvent_attributes7">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletEvent_attributes8">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_dispatch1">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_dispatch2">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_dispatch3">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_invoke2">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_invoke4">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_invoke7">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_invoke9">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes1">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes1a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes1b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes1c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes2">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes2a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes2b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes2c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes3">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes3a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes3b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes3c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes4">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes4a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes4b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes4c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes5">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes5a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes5b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes5c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes6">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes7">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletRender_attributes8">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_dispatch1">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_dispatch2">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_dispatch3">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_invoke2">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_invoke4">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_invoke7">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_invoke9">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes1">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes1a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes1b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes1c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes2">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes2a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes2b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes2c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes3">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes3a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes3b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes3c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes4">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes4a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes4b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes4c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes5">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes5a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes5b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes5c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes6">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes7">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenIncludeServletResource_attributes8">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletAction_dispatch1">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletAction_dispatch2">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletAction_dispatch3">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletAction_invoke2">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletAction_invoke4">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletAction_invoke7">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletAction_attributes1">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletAction_attributes1a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletAction_attributes1b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletAction_attributes1c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletAction_attributes2">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletAction_attributes2a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletAction_attributes2b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletAction_attributes2c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletAction_attributes3">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletAction_attributes3a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletAction_attributes3b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletAction_attributes3c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletAction_attributes4">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletAction_attributes4a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletAction_attributes4b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletAction_attributes4c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletAction_attributes5">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletAction_attributes5a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletAction_attributes5b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletAction_attributes5c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletAction_attributes6">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletAction_attributes7">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletAction_attributes8">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletEvent_dispatch1">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletEvent_dispatch2">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletEvent_dispatch3">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletEvent_invoke2">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletEvent_invoke4">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletEvent_invoke7">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletEvent_attributes1">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletEvent_attributes1a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletEvent_attributes1b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletEvent_attributes1c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletEvent_attributes2">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletEvent_attributes2a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletEvent_attributes2b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletEvent_attributes2c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletEvent_attributes3">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletEvent_attributes3a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletEvent_attributes3b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletEvent_attributes3c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletEvent_attributes4">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletEvent_attributes4a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletEvent_attributes4b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletEvent_attributes4c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletEvent_attributes5">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletEvent_attributes5a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletEvent_attributes5b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletEvent_attributes5c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletEvent_attributes6">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletEvent_attributes7">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletEvent_attributes8">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletRender_dispatch1">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletRender_dispatch2">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletRender_dispatch3">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletRender_invoke2">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletRender_invoke4">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletRender_invoke7">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletRender_attributes1">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletRender_attributes1a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletRender_attributes1b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletRender_attributes1c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletRender_attributes2">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletRender_attributes2a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletRender_attributes2b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletRender_attributes2c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletRender_attributes3">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletRender_attributes3a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletRender_attributes3b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletRender_attributes3c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletRender_attributes4">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletRender_attributes4a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletRender_attributes4b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletRender_attributes4c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletRender_attributes5">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletRender_attributes5a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletRender_attributes5b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletRender_attributes5c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletRender_attributes6">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletRender_attributes7">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletRender_attributes8">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletResource_dispatch1">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletResource_dispatch2">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletResource_dispatch3">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletResource_invoke2">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletResource_invoke4">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletResource_invoke7">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletResource_attributes1">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletResource_attributes1a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletResource_attributes1b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletResource_attributes1c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletResource_attributes2">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletResource_attributes2a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletResource_attributes2b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletResource_attributes2c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletResource_attributes3">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletResource_attributes3a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletResource_attributes3b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletResource_attributes3c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletResource_attributes4">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletResource_attributes4a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletResource_attributes4b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletResource_attributes4c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletResource_attributes5">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletResource_attributes5a">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletResource_attributes5b">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletResource_attributes5c">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletResource_attributes6">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletResource_attributes7">V2DispatcherTests6</entry>
+<entry key="V2DispatcherTests6_SPEC2_19_FwdThenForwardServletResource_attributes8">V2DispatcherTests6</entry>
+</properties>