svn commit: r1297031 - in /ofbiz/branches/release11.04/framework: webapp/src/org/ofbiz/webapp/control/RequestHandler.java widget/src/org/ofbiz/widget/WidgetWorker.java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r1297031 - in /ofbiz/branches/release11.04/framework: webapp/src/org/ofbiz/webapp/control/RequestHandler.java widget/src/org/ofbiz/widget/WidgetWorker.java

sascharodekamp
Author: sascharodekamp
Date: Mon Mar  5 12:35:08 2012
New Revision: 1297031

URL: http://svn.apache.org/viewvc?rev=1297031&view=rev
Log:
No Url encoding for get parameters (https://issues.apache.org/jira/browse/OFBIZ-2628) using the URLEncoder to encode and render URLs with special Chars. The encoding is always UTF-8

Modified:
    ofbiz/branches/release11.04/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java
    ofbiz/branches/release11.04/framework/widget/src/org/ofbiz/widget/WidgetWorker.java

Modified: ofbiz/branches/release11.04/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/release11.04/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java?rev=1297031&r1=1297030&r2=1297031&view=diff
==============================================================================
--- ofbiz/branches/release11.04/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java (original)
+++ ofbiz/branches/release11.04/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java Mon Mar  5 12:35:08 2012
@@ -24,6 +24,8 @@ import java.io.IOException;
 import java.io.Serializable;
 import java.io.UnsupportedEncodingException;
 import java.net.URL;
+import java.net.URLEncoder;
+import java.nio.charset.Charset;
 import java.security.cert.X509Certificate;
 import java.util.Enumeration;
 import java.util.List;
@@ -912,7 +914,7 @@ public class RequestHandler {
      * @return
      */
     public String makeQueryString(HttpServletRequest request, ConfigXMLReader.RequestResponse requestResponse) {
-        if (requestResponse == null ||
+        if (requestResponse == null ||
                 (requestResponse.redirectParameterMap.size() == 0 && requestResponse.redirectParameterValueMap.size() == 0)) {
             Map<String, Object> urlParams = UtilHttp.getUrlOnlyParameterMap(request);
             String queryString = UtilHttp.urlEncodeArgs(urlParams, false);
@@ -1097,7 +1099,12 @@ public class RequestHandler {
                         newURL.insert(questionIndex, sessionId);
                     }
                 }
-                encodedUrl = newURL.toString();
+                try {
+                    encodedUrl = URLEncoder.encode(newURL.toString(), Charset.forName("UTF-8").displayName());
+                } catch (UnsupportedEncodingException e) {
+                    Debug.logError(e, module);
+                    encodedUrl = newURL.toString();
+                }
             }
         } else {
             encodedUrl = newURL.toString();

Modified: ofbiz/branches/release11.04/framework/widget/src/org/ofbiz/widget/WidgetWorker.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/release11.04/framework/widget/src/org/ofbiz/widget/WidgetWorker.java?rev=1297031&r1=1297030&r2=1297031&view=diff
==============================================================================
--- ofbiz/branches/release11.04/framework/widget/src/org/ofbiz/widget/WidgetWorker.java (original)
+++ ofbiz/branches/release11.04/framework/widget/src/org/ofbiz/widget/WidgetWorker.java Mon Mar  5 12:35:08 2012
@@ -20,7 +20,10 @@ package org.ofbiz.widget;
 
 import java.io.IOException;
 import java.io.StringWriter;
+import java.io.UnsupportedEncodingException;
 import java.math.BigDecimal;
+import java.net.URLEncoder;
+import java.nio.charset.Charset;
 import java.text.DateFormat;
 import java.util.Map;
 import java.util.TimeZone;
@@ -104,10 +107,10 @@ public class WidgetWorker {
                     parameterValue = parameter.getValue();
                 } else {
                     Object parameterObject = parameter.getValue();
-                    
+
                     // skip null values
                     if (parameterObject == null) continue;
-                    
+
                     if (parameterObject instanceof String[]) {
                         // it's probably a String[], just get the first value
                         String[] parameterArray = (String[]) parameterObject;
@@ -118,7 +121,7 @@ public class WidgetWorker {
                         parameterValue = parameterObject.toString();
                     }
                 }
-                
+
                 if (needsAmp) {
                     externalWriter.append("&amp;");
                 } else {
@@ -337,9 +340,14 @@ public class WidgetWorker {
 
         public String getValue(Map<String, Object> context) {
             if (this.value != null) {
-                return this.value.expandString(context);
+                try {
+                    return URLEncoder.encode(this.value.expandString(context), Charset.forName("UTF-8").displayName());
+                } catch (UnsupportedEncodingException e) {
+                    Debug.logError(e, module);
+                    return this.value.expandString(context);
+                }
             }
-            
+
             Object retVal = null;
             if (this.fromField != null && this.fromField.get(context) != null) {
                 retVal = this.fromField.get(context);
@@ -350,7 +358,7 @@ public class WidgetWorker {
             if (retVal != null) {
                 TimeZone timeZone = (TimeZone) context.get("timeZone");
                 if (timeZone == null) timeZone = TimeZone.getDefault();
-                
+
                 String returnValue = null;
                 // format string based on the user's time zone (not locale because these are parameters)
                 if (retVal instanceof Double || retVal instanceof Float || retVal instanceof BigDecimal) {
@@ -368,7 +376,11 @@ public class WidgetWorker {
                     DateFormat df = UtilDateTime.toDateTimeFormat("EEE MMM dd hh:mm:ss z yyyy", timeZone, null);
                     returnValue = df.format((java.util.Date) retVal);
                 } else {
-                    returnValue = retVal.toString();
+                    try {
+                        returnValue = URLEncoder.encode(retVal.toString(), Charset.forName("UTF-8").displayName());
+                    } catch (UnsupportedEncodingException e) {
+                        Debug.logError(e, module);
+                    }
                 }
                 return returnValue;
             } else {
@@ -399,7 +411,7 @@ public class WidgetWorker {
 
     /** Returns the script location based on a script combined name:
      * <code>location#methodName</code>.
-     *
+     *
      * @param combinedName The combined location/method name
      * @return The script location
      */
@@ -414,7 +426,7 @@ public class WidgetWorker {
     /** Returns the script method name based on a script combined name:
      * <code>location#methodName</code>. Returns <code>null</code> if
      * no method name is found.
-     *
+     *
      * @param combinedName The combined location/method name
      * @return The method name or <code>null</code>
      */