⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dispatcherrenderparametertest.java.svn-base

📁 portal越来越流行了
💻 SVN-BASE
字号:
/* * 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 org.apache.pluto.testsuite.test;import java.io.IOException;import java.util.Arrays;import java.util.Map;import javax.portlet.PortletContext;import javax.portlet.PortletException;import javax.portlet.PortletRequest;import javax.portlet.PortletRequestDispatcher;import javax.portlet.PortletResponse;import javax.portlet.RenderRequest;import javax.portlet.RenderResponse;import javax.servlet.GenericServlet;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.apache.pluto.testsuite.TestResult;import org.apache.pluto.testsuite.TestUtils;/** * * @version 1.0 * @since Mar 9, 2005 */public class DispatcherRenderParameterTestextends AbstractReflectivePortletTest {	/** Internal logger. */	private static final Log LOG = LogFactory.getLog(			DispatcherRenderParameterTest.class);	// Static Final Constants --------------------------------------------------	/** The path to the companion servlet. */	private static final String SERVLET_PATH = "/test/DispatcherRenderParameterTest_Servlet";	private static final String KEY_TARGET = "target";	private static final String TARGET_PARAMS = "testParams";	private static final String TARGET_SAME_NAME_PARAM = "testSameNameParam";	private static final String TARGET_ADDED_SAME_NAME_PARAM = "testAddedSameNameParam";	private static final String TARGET_INVALID_PARAMS = "testInvalidParams";	private static final String KEY_RENDER = "renderParamKey";	private static final String VALUE_RENDER = "renderParamValue";	private static final String VALUE_ADDED1 = "addedParamValue1";	private static final String VALUE_ADDED2 = "addedParamValue2";    private static final String KEY_A = "includedTestKeyA";    private static final String VALUE_A = "includedTestValueA";    private static final String KEY_B = "includedTestKeyB";    private static final String VALUE_B = "includedTestValueB";    private static final String KEY_C = "includedTestKeyC";    private static final String VALUE_C1 = "valueOneOfKeyC";    private static final String VALUE_C2 = "valueTwoOfKeyC";    private static final String VALUE_C3 = "valueThreeOfKeyC";    public static final String RESULT_KEY =    		DispatcherRenderParameterTest.class.getName() + ".RESULT_KEY";    // AbstractReflectivePortletTest Impl --------------------------------------    /**     * Overwrites <code>super.getRenderParameters(..)</code> to set the     * test-specific render parameter in the render URL.     */    public Map<String, String[]> getRenderParameters(PortletRequest request) {    	Map<String, String[]> parameterMap = super.getRenderParameters(request);    	parameterMap.put(KEY_RENDER, new String[] { VALUE_RENDER });    	return parameterMap;    }    // Test Methods ------------------------------------------------------------    protected TestResult checkParameters(PortletContext context,                                         PortletRequest request,                                         PortletResponse response)    throws IOException, PortletException {    	// Dispatch to the companion servlet: call checkParameters().    	StringBuffer buffer = new StringBuffer();    	buffer.append(SERVLET_PATH).append("?")    			.append(KEY_TARGET).append("=").append(TARGET_PARAMS)    			.append("&").append(KEY_A).append("=").append(VALUE_A)    			.append("&").append(KEY_B).append("=").append(VALUE_B);    	if (LOG.isDebugEnabled()) {    		LOG.debug("Dispatching to: " + buffer.toString());    	}        PortletRequestDispatcher dispatcher = context.getRequestDispatcher(        		buffer.toString());        dispatcher.include((RenderRequest) request, (RenderResponse) response);    	// Retrieve test result returned by the companion servlet.        TestResult result = (TestResult) request.getAttribute(RESULT_KEY);    	request.removeAttribute(RESULT_KEY);        return result;    }    protected TestResult checkSameNameParameter(PortletContext context,                                                PortletRequest request,                                                PortletResponse response)    throws IOException, PortletException {    	// Dispatch to the companion servlet: call checkSameNameParameter().    	StringBuffer buffer = new StringBuffer();    	buffer.append(SERVLET_PATH).append("?")    			.append(KEY_TARGET).append("=").append(TARGET_SAME_NAME_PARAM)    			.append("&").append(KEY_C).append("=").append(VALUE_C1)    			.append("&").append(KEY_C).append("=").append(VALUE_C2)    			.append("&").append(KEY_C).append("=").append(VALUE_C3);    	if (LOG.isDebugEnabled()) {    		LOG.debug("Dispatching to: " + buffer.toString());    	}    	PortletRequestDispatcher dispatcher = context.getRequestDispatcher(    			buffer.toString());    	dispatcher.include((RenderRequest) request, (RenderResponse) response);    	// Retrieve test result returned by the companion servlet.        TestResult result = (TestResult) request.getAttribute(RESULT_KEY);    	request.removeAttribute(RESULT_KEY);    	return result;    }    protected TestResult checkAddedSameNameParameter(PortletContext context,                                                     PortletRequest request,                                                     PortletResponse response)    throws IOException, PortletException {    	// Dispatch to the companion servlet: call checkAddedSameNameParameter().    	StringBuffer buffer = new StringBuffer();    	buffer.append(SERVLET_PATH).append("?")    			.append(KEY_TARGET).append("=").append(TARGET_ADDED_SAME_NAME_PARAM)    			.append("&").append(KEY_RENDER).append("=").append(VALUE_ADDED1)    			.append("&").append(KEY_RENDER).append("=").append(VALUE_ADDED2);    	if (LOG.isDebugEnabled()) {    		LOG.debug("Dispatching to: " + buffer.toString());    	}    	PortletRequestDispatcher dispatcher = context.getRequestDispatcher(    			buffer.toString());    	dispatcher.include((RenderRequest) request, (RenderResponse) response);    	// Retrieve test result returned by the companion servlet.        TestResult result = (TestResult) request.getAttribute(RESULT_KEY);    	request.removeAttribute(RESULT_KEY);    	return result;    }    protected TestResult checkInvalidParameters(PortletContext context,                                                PortletRequest request,                                                PortletResponse response)    throws IOException, PortletException {    	// Dispatch to the companion servlet: call checkInvalidParameters().    	StringBuffer buffer = new StringBuffer();    	buffer.append(SERVLET_PATH).append("?")    			.append(KEY_TARGET).append("=").append(TARGET_INVALID_PARAMS)    			.append("&").append(KEY_A)    			.append("&").append(KEY_B).append("=").append(VALUE_B)    			.append("&").append(KEY_C).append("=");    	if (LOG.isDebugEnabled()) {    		LOG.debug("Dispatching to: " + buffer.toString());    	}    	PortletRequestDispatcher dispatcher = context.getRequestDispatcher(    			buffer.toString());    	dispatcher.include((RenderRequest) request, (RenderResponse) response);    	// Retrieve test result returned by the companion servlet.        TestResult result = (TestResult) request.getAttribute(RESULT_KEY);    	request.removeAttribute(RESULT_KEY);    	return result;    }    // Nested Companion Servlet Class ------------------------------------------    /**     * Nested static companion servlet class.     */    public static class CompanionServlet extends GenericServlet {        // GenericServlet Impl -------------------------------------------------		private static final long serialVersionUID = -963706386141654216L;		public String getServletInfo() {        	return getClass().getName();        }    	/**    	 * Services the servlet request dispatched from the test portlet.    	 * This method checks the 'target' parameter to determine which test    	 * to run, and saves the test result in the request scope, which will    	 * be retrieved by the test portlet.    	 * @param request  the incoming servlet request.    	 * @param response  the incoming servlet response.    	 */        public void service(ServletRequest request, ServletResponse response)        throws ServletException, IOException {        	TestResult result = null;        	String target = request.getParameter(KEY_TARGET);        	if (TARGET_PARAMS.equals(target)) {        		result = checkParameters(request);        	} else if (TARGET_SAME_NAME_PARAM.equals(target)) {        		result = checkSameNameParameter(request);        	} else if (TARGET_ADDED_SAME_NAME_PARAM.equals(target)) {        		result = checkAddedSameNameParameter(request);        	} else if (TARGET_INVALID_PARAMS.equals(target)) {        		result = checkInvalidParameters(request);        	} else {        		result = failOnUnknownTarget(request);        	}        	request.setAttribute(RESULT_KEY, result);        }        // Private Methods -----------------------------------------------------        /**         * Check that parameters A and B are available in the dispatching         * request.         * @param request  the servlet request.         */        private TestResult checkParameters(ServletRequest request) {        	TestResult result = new TestResult();            result.setDescription("Ensure query parameters added during "            		+ "dispatching are attached to the request.");            String valueA = request.getParameter(KEY_A);            String valueB = request.getParameter(KEY_B);            if (VALUE_A.equals(valueA) && VALUE_B.equals(valueB)) {            	result.setReturnCode(TestResult.PASSED);            } else if (!VALUE_A.equals(valueA)){            	TestUtils.failOnAssertion("parameter", valueA, VALUE_A, result);            } else {            	TestUtils.failOnAssertion("parameter", valueB, VALUE_B, result);            }            return result;        }        /**         * Check that parameter C has three values.         * @param request  the servlet reqeust.         */        private TestResult checkSameNameParameter(ServletRequest request) {        	TestResult result = new TestResult();        	result.setDescription("Ensure query parameters with the same name "        			+ "added during dispatching are attached to the request.");        	String[] values = request.getParameterValues(KEY_C);        	String[] expected = new String[] {        			VALUE_C1, VALUE_C2, VALUE_C3, };        	if (Arrays.equals(values, expected)) {        		result.setReturnCode(TestResult.PASSED);        	} else {        		TestUtils.failOnAssertion("parameter", values, expected, result);        	}            return result;        }        /**         * Check that parameter RENDER has three values: one is the render         * parameter, while the other two are appended in the dispatch URI.         * @param request  the servlet reqeust.         */        private TestResult checkAddedSameNameParameter(ServletRequest request) {        	TestResult result = new TestResult();        	result.setDescription("Ensure query parameters with the same name "        			+ "added during dispatching are attached to the request "        			+ "as well as render parameters.");        	String[] values = request.getParameterValues(KEY_RENDER);        	String[] expected = new String[] {        			VALUE_ADDED1, VALUE_ADDED2, VALUE_RENDER, };        	if (Arrays.equals(values, expected)) {        		result.setReturnCode(TestResult.PASSED);        	} else {        		TestUtils.failOnAssertion("parameter", values, expected, result);        	}    		return result;        }        /**         * Check that invalid parameter A is ignored, parameter B is attached         * to the dispatching request with the correct value, and parameter C         * is attached to the dispatching request with an empty string.         * @param request  the servlet request.         */        private TestResult checkInvalidParameters(ServletRequest request) {        	TestResult result = new TestResult();        	result.setDescription("Ensure invalid query parameters added "        			+ "during dispatching are ignored.");        	String valueA = request.getParameter(KEY_A);        	String valueB = request.getParameter(KEY_B);        	String valueC = request.getParameter(KEY_C);        	if (valueA == null && VALUE_B.equals(valueB) && "".equals(valueC)) {        		result.setReturnCode(TestResult.PASSED);        	} else if (valueA != null) {        		TestUtils.failOnAssertion("parameter", valueA, null, result);        	} else if (!VALUE_B.equals(valueB)) {        		TestUtils.failOnAssertion("parameter", valueB, VALUE_B, result);        	} else {        		TestUtils.failOnAssertion("parameter", valueC, "", result);        	}    		return result;        }        private TestResult failOnUnknownTarget(ServletRequest request) {        	TestResult result = new TestResult();        	result.setReturnCode(TestResult.FAILED);            result.setResultMessage("Unable to perform test for parameter "            		+ KEY_TARGET + ": " + request.getParameter(KEY_TARGET));            return result;        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -