You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@turbine.apache.org by tv...@apache.org on 2018/07/28 17:26:07 UTC
svn commit: r1836937 - in /turbine/core/trunk/src:
java/org/apache/turbine/pipeline/DefaultSetEncodingValve.java
test/org/apache/turbine/pipeline/DefaultSessionTimeoutValveTest.java
test/org/apache/turbine/pipeline/DefaultSetEncodingValveTest.java
Author: tv
Date: Sat Jul 28 17:26:07 2018
New Revision: 1836937
URL: http://svn.apache.org/viewvc?rev=1836937&view=rev
Log:
Copy request encoding to RunData to set a reasonable default for the output. Add a test.
Added:
turbine/core/trunk/src/test/org/apache/turbine/pipeline/DefaultSetEncodingValveTest.java (with props)
Modified:
turbine/core/trunk/src/java/org/apache/turbine/pipeline/DefaultSetEncodingValve.java
turbine/core/trunk/src/test/org/apache/turbine/pipeline/DefaultSessionTimeoutValveTest.java
Modified: turbine/core/trunk/src/java/org/apache/turbine/pipeline/DefaultSetEncodingValve.java
URL: http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/pipeline/DefaultSetEncodingValve.java?rev=1836937&r1=1836936&r2=1836937&view=diff
==============================================================================
--- turbine/core/trunk/src/java/org/apache/turbine/pipeline/DefaultSetEncodingValve.java (original)
+++ turbine/core/trunk/src/java/org/apache/turbine/pipeline/DefaultSetEncodingValve.java Sat Jul 28 17:26:07 2018
@@ -31,11 +31,15 @@ import org.apache.commons.logging.LogFac
import org.apache.turbine.Turbine;
import org.apache.turbine.TurbineConstants;
import org.apache.turbine.annotation.TurbineConfiguration;
+import org.apache.turbine.util.RunData;
import org.apache.turbine.util.TurbineException;
/**
* Set defaultEncoding of the request
*
+ * This valve must be situated in the pipeline before any access to the
+ * {@link org.apache.fulcrum.parser.ParameterParser} to take effect.
+ *
* @author <a href="mailto:tv@apache.org">Thomas Vandahl</a>
*/
public class DefaultSetEncodingValve
@@ -56,24 +60,32 @@ public class DefaultSetEncodingValve
HttpServletRequest req = pipelineData.get(Turbine.class, HttpServletRequest.class);
// If the servlet container gives us no clear indication about the
- // Encoding of the contents, set it to our default value.
- if (req.getCharacterEncoding() == null)
+ // encoding of the contents, set it to our default value.
+ String requestEncoding = req.getCharacterEncoding();
+
+ if (requestEncoding == null)
{
+ requestEncoding = defaultEncoding;
+
if (log.isDebugEnabled())
{
- log.debug("Changing Input Encoding to " + defaultEncoding);
+ log.debug("Changing Input Encoding to " + requestEncoding);
}
try
{
- req.setCharacterEncoding(defaultEncoding);
+ req.setCharacterEncoding(requestEncoding);
}
catch (UnsupportedEncodingException uee)
{
- log.warn("Could not change request defaultEncoding to " + defaultEncoding, uee);
+ log.warn("Could not change request encoding to " + requestEncoding, uee);
}
}
+ // Copy encoding charset to RunData to set a reasonable default for the response
+ RunData data = getRunData(pipelineData);
+ data.setCharSet(requestEncoding);
+
// Pass control to the next Valve in the Pipeline
context.invokeNext(pipelineData);
}
Modified: turbine/core/trunk/src/test/org/apache/turbine/pipeline/DefaultSessionTimeoutValveTest.java
URL: http://svn.apache.org/viewvc/turbine/core/trunk/src/test/org/apache/turbine/pipeline/DefaultSessionTimeoutValveTest.java?rev=1836937&r1=1836936&r2=1836937&view=diff
==============================================================================
--- turbine/core/trunk/src/test/org/apache/turbine/pipeline/DefaultSessionTimeoutValveTest.java (original)
+++ turbine/core/trunk/src/test/org/apache/turbine/pipeline/DefaultSessionTimeoutValveTest.java Sat Jul 28 17:26:07 2018
@@ -93,6 +93,7 @@ public class DefaultSessionTimeoutValveT
DefaultSessionTimeoutValve valve = new DefaultSessionTimeoutValve();
pipeline.addValve(valve);
+ pipeline.initialize();
pipeline.invoke(pipelineData);
Added: turbine/core/trunk/src/test/org/apache/turbine/pipeline/DefaultSetEncodingValveTest.java
URL: http://svn.apache.org/viewvc/turbine/core/trunk/src/test/org/apache/turbine/pipeline/DefaultSetEncodingValveTest.java?rev=1836937&view=auto
==============================================================================
--- turbine/core/trunk/src/test/org/apache/turbine/pipeline/DefaultSetEncodingValveTest.java (added)
+++ turbine/core/trunk/src/test/org/apache/turbine/pipeline/DefaultSetEncodingValveTest.java Sat Jul 28 17:26:07 2018
@@ -0,0 +1,124 @@
+package org.apache.turbine.pipeline;
+
+/*
+ * 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.
+ */
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.turbine.Turbine;
+import org.apache.turbine.TurbineConstants;
+import org.apache.turbine.test.BaseTestCase;
+import org.apache.turbine.util.RunData;
+import org.apache.turbine.util.TurbineConfig;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * Tests TurbinePipeline.
+ *
+ * @author <a href="mailto:epugh@opensourceConnections.com">Eric Pugh</a>
+ * @author <a href="mailto:peter@courcoux.biz">Peter Courcoux</a>
+ * @version $Id: DefaultSessionTimeoutValveTest.java 1606111 2014-06-27
+ * 14:46:47Z gk $
+ */
+public class DefaultSetEncodingValveTest extends BaseTestCase
+{
+ private static TurbineConfig tc = null;
+ private ServletConfig config = null;
+ private HttpServletRequest request = null;
+ private HttpServletResponse response = null;
+
+ @BeforeClass
+ public static void init()
+ {
+ tc = new TurbineConfig(
+ ".",
+ "/conf/test/CompleteTurbineResources.properties");
+ tc.initialize();
+ }
+
+ @Before
+ public void setUpBefore() throws Exception
+ {
+ config = mock(ServletConfig.class);
+ request = getMockRequest();
+ response = mock(HttpServletResponse.class);
+ when(request.getCharacterEncoding()).thenReturn(null);
+ }
+
+ /**
+ * Tests the Valve.
+ */
+ @Test
+ public void testDefaults() throws Exception
+ {
+ // reset
+ Turbine.getConfiguration().setProperty(TurbineConstants.PARAMETER_ENCODING_KEY,
+ TurbineConstants.PARAMETER_ENCODING_DEFAULT);
+
+ PipelineData pipelineData = getPipelineData(request, response, config);
+
+ Pipeline pipeline = new TurbinePipeline();
+
+ DefaultSetEncodingValve valve = new DefaultSetEncodingValve();
+ pipeline.addValve(valve);
+ pipeline.initialize();
+
+ pipeline.invoke(pipelineData);
+
+ RunData runData = (RunData) pipelineData;
+ assertEquals(TurbineConstants.PARAMETER_ENCODING_DEFAULT, runData.getCharSet());
+ }
+
+ /**
+ * Tests the Valve.
+ */
+ @Test
+ public void testEncodingSet() throws Exception
+ {
+ Turbine.getConfiguration().setProperty(TurbineConstants.PARAMETER_ENCODING_KEY, "UTF-8");
+ PipelineData pipelineData = getPipelineData(request, response, config);
+
+ Pipeline pipeline = new TurbinePipeline();
+
+ DefaultSetEncodingValve valve = new DefaultSetEncodingValve();
+ pipeline.addValve(valve);
+ pipeline.initialize();
+
+ pipeline.invoke(pipelineData);
+ RunData runData = (RunData) pipelineData;
+
+ assertEquals("UTF-8", runData.getCharSet());
+ }
+
+ @AfterClass
+ public static void destroy()
+ {
+ tc.dispose();
+ }
+
+}
Propchange: turbine/core/trunk/src/test/org/apache/turbine/pipeline/DefaultSetEncodingValveTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain