Author: jacopoc
Date: Thu Apr 9 19:05:49 2015
New Revision: 1672457
URL: http://svn.apache.org/r1672457
Log:
Applied fix from trunk for revision: 1672430
===
Fix for bug reported by Eric de Maulde in OFBIZ-5035: character encoding issue
happening in the ecommerce application; the issue was caused by the
CatalogUrlFilter and ContentUrlFilter because, under special conditions, they
are preventing the ContextFilter (where encoding is set) to be executed.
Modified:
ofbiz/branches/release14.12/ (props changed)
ofbiz/branches/release14.12/applications/content/src/org/ofbiz/content/content/ContentUrlFilter.java
ofbiz/branches/release14.12/applications/product/src/org/ofbiz/product/category/CatalogUrlFilter.java
ofbiz/branches/release14.12/framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java
ofbiz/branches/release14.12/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java
Propchange: ofbiz/branches/release14.12/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Apr 9 19:05:49 2015
@@ -8,4 +8,4 @@
/ofbiz/branches/json-integration-refactoring:1634077-1635900
/ofbiz/branches/multitenant20100310:921280-927264
/ofbiz/branches/release13.07:1547657
-/ofbiz/trunk:1649072,1649083-1649084,1649086,1649090,1649096,1649230,1649238-1649239,1649248,1649272,1649275,1649280-1649281,1649283,1649285-1649286,1649291,1649329,1649331,1649384,1649393,1649666,1649742,1650240,1650348,1650357,1650583,1650642,1650678,1650821,1650882,1650887,1650938,1651593,1652312,1652361,1652638,1652641,1652672,1652688,1652706,1652725,1652731,1652739,1652852,1653248,1653296,1653456,1653597,1653614,1654175,1654273,1654509,1654670,1654672-1654673,1654683-1654684,1654824,1655046,1655668,1655979,1656014,1656185,1656198,1656445,1656983,1657323,1657506-1657507,1657514,1657714,1657790,1657848,1658364,1658662,1658882,1659224,1659965,1660031,1660053,1660389,1660444,1660579,1661303,1661328,1661760,1661778,1661853,1661862,1661873,1661940,1661951,1661977,1662119-1662120,1662361,1662500,1662812,1662919,1663202,1663912,1663979,1664602,1664604,1664696,1665154,1665162,1665535,1666404,1666511,1666633,1666836,1666939,1666949,1666958,1667055,1667253,1667483,1667492,1667774,1668207,
1668214,1668236,1668246,1668258,1668263,1668265,1668270,1668277,1668314,1668657,1669317,1669588,1672427
+/ofbiz/trunk:1649072,1649083-1649084,1649086,1649090,1649096,1649230,1649238-1649239,1649248,1649272,1649275,1649280-1649281,1649283,1649285-1649286,1649291,1649329,1649331,1649384,1649393,1649666,1649742,1650240,1650348,1650357,1650583,1650642,1650678,1650821,1650882,1650887,1650938,1651593,1652312,1652361,1652638,1652641,1652672,1652688,1652706,1652725,1652731,1652739,1652852,1653248,1653296,1653456,1653597,1653614,1654175,1654273,1654509,1654670,1654672-1654673,1654683-1654684,1654824,1655046,1655668,1655979,1656014,1656185,1656198,1656445,1656983,1657323,1657506-1657507,1657514,1657714,1657790,1657848,1658364,1658662,1658882,1659224,1659965,1660031,1660053,1660389,1660444,1660579,1661303,1661328,1661760,1661778,1661853,1661862,1661873,1661940,1661951,1661977,1662119-1662120,1662361,1662500,1662812,1662919,1663202,1663912,1663979,1664602,1664604,1664696,1665154,1665162,1665535,1666404,1666511,1666633,1666836,1666939,1666949,1666958,1667055,1667253,1667483,1667492,1667774,1668207,
1668214,1668236,1668246,1668258,1668263,1668265,1668270,1668277,1668314,1668657,1669317,1669588,1672427,1672430
Modified:
ofbiz/branches/release14.12/applications/content/src/org/ofbiz/content/content/ContentUrlFilter.java
URL:
http://svn.apache.org/viewvc/ofbiz/branches/release14.12/applications/content/src/org/ofbiz/content/content/ContentUrlFilter.java?rev=1672457&r1=1672456&r2=1672457&view=diff
==============================================================================
---
ofbiz/branches/release14.12/applications/content/src/org/ofbiz/content/content/ContentUrlFilter.java
(original)
+++
ofbiz/branches/release14.12/applications/content/src/org/ofbiz/content/content/ContentUrlFilter.java
Thu Apr 9 19:05:49 2015
@@ -56,6 +56,9 @@ public class ContentUrlFilter extends Co
//Get ServletContext
ServletContext servletContext = config.getServletContext();
+
+ ContextFilter.setCharacterEncoding(request);
+
//Set request attribute and session
UrlServletHelper.setRequestAttributes(request, delegator,
servletContext);
String urlContentId = null;
@@ -84,7 +87,8 @@ public class ContentUrlFilter extends Co
StringBuilder urlBuilder = new StringBuilder();
urlBuilder.append("/" + CONTROL_MOUNT_POINT);
urlBuilder.append("/" + config.getInitParameter("viewRequest")
+ "?contentId=" + urlContentId);
-
+
+ ContextFilter.setAttributesFromRequestBody(request);
//Set view query parameters
UrlServletHelper.setViewQueryParameters(request, urlBuilder);
Debug.logInfo("[Filtered request]: " + pathInfo + " (" +
urlBuilder + ")", module);
Modified:
ofbiz/branches/release14.12/applications/product/src/org/ofbiz/product/category/CatalogUrlFilter.java
URL:
http://svn.apache.org/viewvc/ofbiz/branches/release14.12/applications/product/src/org/ofbiz/product/category/CatalogUrlFilter.java?rev=1672457&r1=1672456&r2=1672457&view=diff
==============================================================================
---
ofbiz/branches/release14.12/applications/product/src/org/ofbiz/product/category/CatalogUrlFilter.java
(original)
+++
ofbiz/branches/release14.12/applications/product/src/org/ofbiz/product/category/CatalogUrlFilter.java
Thu Apr 9 19:05:49 2015
@@ -66,7 +66,9 @@ public class CatalogUrlFilter extends Co
//Get ServletContext
ServletContext servletContext = config.getServletContext();
-
+
+ ContextFilter.setCharacterEncoding(request);
+
//Set request attribute and session
UrlServletHelper.setRequestAttributes(request, delegator,
servletContext);
@@ -323,6 +325,7 @@ public class CatalogUrlFilter extends Co
UrlServletHelper.setViewQueryParameters(request, urlBuilder);
if (UtilValidate.isNotEmpty(productId) ||
UtilValidate.isNotEmpty(productCategoryId) ||
UtilValidate.isNotEmpty(urlContentId)) {
Debug.logInfo("[Filtered request]: " + pathInfo + " (" +
urlBuilder + ")", module);
+ ContextFilter.setAttributesFromRequestBody(request);
RequestDispatcher dispatch =
request.getRequestDispatcher(urlBuilder.toString());
dispatch.forward(request, response);
return;
Modified:
ofbiz/branches/release14.12/framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java
URL:
http://svn.apache.org/viewvc/ofbiz/branches/release14.12/framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java?rev=1672457&r1=1672456&r2=1672457&view=diff
==============================================================================
---
ofbiz/branches/release14.12/framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java
(original)
+++
ofbiz/branches/release14.12/framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java
Thu Apr 9 19:05:49 2015
@@ -21,6 +21,7 @@ package org.ofbiz.webapp.control;
import static org.ofbiz.base.util.UtilGenerics.checkMap;
import java.io.IOException;
+import java.io.UnsupportedEncodingException;
import java.util.Enumeration;
import java.util.List;
import java.util.Map;
@@ -319,22 +320,11 @@ public class ContextFilter implements Fi
}
}
- // read the body (for JSON requests) and set the parameters as
attributes:
- Map<String, Object> requestBodyMap = null;
- try {
- requestBodyMap =
RequestBodyMapHandlerFactory.extractMapFromRequestBody(request);
- } catch (IOException ioe) {
- Debug.logWarning(ioe, module);
- }
- if (requestBodyMap != null) {
- Set<String> parameterNames = requestBodyMap.keySet();
- for (String parameterName: parameterNames) {
- httpRequest.setAttribute(parameterName,
requestBodyMap.get(parameterName));
- }
- }
+ setCharacterEncoding(request);
+ setAttributesFromRequestBody(request);
// we're done checking; continue on
- chain.doFilter(httpRequest, httpResponse);
+ chain.doFilter(request, httpResponse);
}
/**
@@ -355,6 +345,33 @@ public class ContextFilter implements Fi
return dispatcher;
}
+ public static void setCharacterEncoding(ServletRequest request) throws
UnsupportedEncodingException {
+ String charset =
request.getServletContext().getInitParameter("charset");
+ if (UtilValidate.isEmpty(charset)) charset =
request.getCharacterEncoding();
+ if (UtilValidate.isEmpty(charset)) charset = "UTF-8";
+ if (Debug.verboseOn()) Debug.logVerbose("The character encoding of the
request is: [" + request.getCharacterEncoding() + "]. The character encoding we
will use for the request is: [" + charset + "]", module);
+
+ if (!"none".equals(charset)) {
+ request.setCharacterEncoding(charset);
+ }
+ }
+
+ public static void setAttributesFromRequestBody(ServletRequest request) {
+ // read the body (for JSON requests) and set the parameters as
attributes:
+ Map<String, Object> requestBodyMap = null;
+ try {
+ requestBodyMap =
RequestBodyMapHandlerFactory.extractMapFromRequestBody(request);
+ } catch (IOException ioe) {
+ Debug.logWarning(ioe, module);
+ }
+ if (requestBodyMap != null) {
+ Set<String> parameterNames = requestBodyMap.keySet();
+ for (String parameterName: parameterNames) {
+ request.setAttribute(parameterName,
requestBodyMap.get(parameterName));
+ }
+ }
+ }
+
/** This method only sets up a dispatcher for the current webapp and
passed in delegator, it does not save it to the ServletContext or anywhere
else, just returns it */
public static LocalDispatcher makeWebappDispatcher(ServletContext
servletContext, Delegator delegator) {
if (delegator == null) {
Modified:
ofbiz/branches/release14.12/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java
URL:
http://svn.apache.org/viewvc/ofbiz/branches/release14.12/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java?rev=1672457&r1=1672456&r2=1672457&view=diff
==============================================================================
---
ofbiz/branches/release14.12/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java
(original)
+++
ofbiz/branches/release14.12/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java
Thu Apr 9 19:05:49 2015
@@ -99,18 +99,11 @@ public class ControlServlet extends Http
HttpSession session = request.getSession();
// setup DEFAULT character encoding and content type, this will be
overridden in the RequestHandler for view rendering
- String charset = getServletContext().getInitParameter("charset");
- if (UtilValidate.isEmpty(charset)) charset =
request.getCharacterEncoding();
- if (UtilValidate.isEmpty(charset)) charset = "UTF-8";
- if (Debug.verboseOn()) Debug.logVerbose("The character encoding of the
request is: [" + request.getCharacterEncoding() + "]. The character encoding we
will use for the request and response is: [" + charset + "]", module);
-
- if (!"none".equals(charset)) {
- request.setCharacterEncoding(charset);
- }
+ String charset = request.getCharacterEncoding();
// setup content type
String contentType = "text/html";
- if (charset.length() > 0 && !"none".equals(charset)) {
+ if (UtilValidate.isNotEmpty(charset) && !"none".equals(charset)) {
response.setContentType(contentType + "; charset=" + charset);
response.setCharacterEncoding(charset);
} else {