Author: gk
Date: Fri Sep 21 07:29:21 2018
New Revision: 1841543

URL: http://svn.apache.org/viewvc?rev=1841543&view=rev
Log:
- sync request encoding with parser service encoding

Modified:
    
turbine/fulcrum/trunk/parser/src/java/org/apache/fulcrum/parser/DefaultParameterParser.java

Modified: 
turbine/fulcrum/trunk/parser/src/java/org/apache/fulcrum/parser/DefaultParameterParser.java
URL: 
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/parser/src/java/org/apache/fulcrum/parser/DefaultParameterParser.java?rev=1841543&r1=1841542&r2=1841543&view=diff
==============================================================================
--- 
turbine/fulcrum/trunk/parser/src/java/org/apache/fulcrum/parser/DefaultParameterParser.java
 (original)
+++ 
turbine/fulcrum/trunk/parser/src/java/org/apache/fulcrum/parser/DefaultParameterParser.java
 Fri Sep 21 07:29:21 2018
@@ -19,6 +19,7 @@ package org.apache.fulcrum.parser;
  * under the License.
  */
 
+import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.util.Arrays;
 import java.util.Collection;
@@ -130,6 +131,14 @@ public class DefaultParameterParser
      * number of different datatypes.  The PATH_INFO data must be a
      * URLEncoded() string.
      * <p>
+     * Sets the request character encoding to the parser. 
+     * <p>
+     * Sets the request encoding, if it is not set and {@link 
ParserService#getParameterEncoding()} 
+     * is set to a non-default value {@link 
ParserService#PARAMETER_ENCODING_DEFAULT} 
+     * (if {@link HttpServletRequest#getCharacterEncoding()} returns null, 
+     * it has the default set to ISO-8859-1, cft. Servlet 2.4, 2.5, 3.0, 3.1 
Specs).
+     * This will only succeed, if no data was read yet, cft. spec.
+     * <p>
      * To add name/value pairs to this set of parameters, use the
      * <code>add()</code> methods.
      *
@@ -143,6 +152,25 @@ public class DefaultParameterParser
         uploadData = null;
 
         String enc = request.getCharacterEncoding();
+        
+        if (enc == null && 
!parserService.getParameterEncoding().equals(ParserService.PARAMETER_ENCODING_DEFAULT
 )) {
+            try
+            {  
+                // no-op if data was read (parameter, POST..) 
+                request.setCharacterEncoding( 
parserService.getParameterEncoding() );
+                enc = request.getCharacterEncoding();
+                if (enc != null) {
+                    getLogger().debug("Set the request encoding successfully 
to parameterEncoding of parser: "+enc );
+                } else {
+                    getLogger().warn("Unsuccessfully (data read happened) 
tried to set the request encoding to "+ parserService.getParameterEncoding()  );
+                }
+            }
+            catch ( UnsupportedEncodingException e )
+            {
+                getLogger().error("Found only unsupported encoding "+ 
e.getMessage());
+            }
+        }
+        
         setCharacterEncoding(enc != null
                 ? enc
                 : parserService.getParameterEncoding());


Reply via email to