svn commit: r1665163 - in /ofbiz/branches/release14.12: ./ framework/minilang/src/org/ofbiz/minilang/method/ framework/webapp/src/org/ofbiz/webapp/control/ framework/webapp/src/org/ofbiz/webapp/event/

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

svn commit: r1665163 - in /ofbiz/branches/release14.12: ./ framework/minilang/src/org/ofbiz/minilang/method/ framework/webapp/src/org/ofbiz/webapp/control/ framework/webapp/src/org/ofbiz/webapp/event/

jacopoc
Author: jacopoc
Date: Mon Mar  9 09:27:30 2015
New Revision: 1665163

URL: http://svn.apache.org/r1665163
Log:
Applied fix from trunk for revision: 1665162
===

Fix for issue happening when a service event was executed using JSON (i.e. parameters in the request body) after a getParameter was called (by other framework code) to fetch the parameter from the body; in that case an io error was thrown because the reuest body stream can be read only once.
This fix move the code that reads the JSON parameters from the body into the ContextFilter: the parameters are then stored as attributes that can be later used by events and other artifacts (service events, simple events, scripts events support this and Java events if they use UtilHttp.getCombinedMap(request) to get the map of input parameters.


Modified:
    ofbiz/branches/release14.12/   (props changed)
    ofbiz/branches/release14.12/framework/minilang/src/org/ofbiz/minilang/method/MethodContext.java
    ofbiz/branches/release14.12/framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java
    ofbiz/branches/release14.12/framework/webapp/src/org/ofbiz/webapp/event/ServiceEventHandler.java

Propchange: ofbiz/branches/release14.12/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Mar  9 09:27:30 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
+/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

Modified: ofbiz/branches/release14.12/framework/minilang/src/org/ofbiz/minilang/method/MethodContext.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/release14.12/framework/minilang/src/org/ofbiz/minilang/method/MethodContext.java?rev=1665163&r1=1665162&r2=1665163&view=diff
==============================================================================
--- ofbiz/branches/release14.12/framework/minilang/src/org/ofbiz/minilang/method/MethodContext.java (original)
+++ ofbiz/branches/release14.12/framework/minilang/src/org/ofbiz/minilang/method/MethodContext.java Mon Mar  9 09:27:30 2015
@@ -82,7 +82,7 @@ public final class MethodContext {
 
     public MethodContext(HttpServletRequest request, HttpServletResponse response, ClassLoader loader) {
         this.methodType = MethodContext.EVENT;
-        this.parameters = UtilHttp.getParameterMap(request);
+        this.parameters = UtilHttp.getCombinedMap(request);
         this.loader = loader;
         this.request = request;
         this.response = response;

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=1665163&r1=1665162&r2=1665163&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 Mon Mar  9 09:27:30 2015
@@ -24,6 +24,7 @@ import java.io.IOException;
 import java.util.Enumeration;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import javax.servlet.Filter;
 import javax.servlet.FilterChain;
@@ -54,6 +55,7 @@ import org.ofbiz.security.SecurityConfig
 import org.ofbiz.security.SecurityFactory;
 import org.ofbiz.service.LocalDispatcher;
 import org.ofbiz.service.ServiceContainer;
+import org.ofbiz.webapp.event.RequestBodyMapHandlerFactory;
 import org.ofbiz.webapp.website.WebSiteWorker;
 
 /**
@@ -317,6 +319,20 @@ 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));
+            }
+        }
+
         // we're done checking; continue on
         chain.doFilter(httpRequest, httpResponse);
     }

Modified: ofbiz/branches/release14.12/framework/webapp/src/org/ofbiz/webapp/event/ServiceEventHandler.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/release14.12/framework/webapp/src/org/ofbiz/webapp/event/ServiceEventHandler.java?rev=1665163&r1=1665162&r2=1665163&view=diff
==============================================================================
--- ofbiz/branches/release14.12/framework/webapp/src/org/ofbiz/webapp/event/ServiceEventHandler.java (original)
+++ ofbiz/branches/release14.12/framework/webapp/src/org/ofbiz/webapp/event/ServiceEventHandler.java Mon Mar  9 09:27:30 2015
@@ -21,7 +21,6 @@ package org.ofbiz.webapp.event;
 import static org.ofbiz.base.util.UtilGenerics.checkList;
 
 import java.io.File;
-import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.util.HashMap;
 import java.util.LinkedList;
@@ -231,17 +230,8 @@ public class ServiceEventHandler impleme
         // store the multi-part map as an attribute so we can access the parameters
         request.setAttribute("multiPartMap", multiPartMap);
 
-        Map<String, Object> rawParametersMap = UtilHttp.getParameterMap(request, null, null);
+        Map<String, Object> rawParametersMap = UtilHttp.getCombinedMap(request);
         Set<String> urlOnlyParameterNames = UtilHttp.getUrlOnlyParameterMap(request).keySet();
-        Map<String, Object> requestBodyMap = null;
-        try {
-            requestBodyMap = RequestBodyMapHandlerFactory.extractMapFromRequestBody(request);
-        } catch (IOException ioe) {
-            Debug.logWarning(ioe, module);
-        }
-        if (requestBodyMap != null) {
-            rawParametersMap.putAll(requestBodyMap);
-        }
 
         // we have a service and the model; build the context
         Map<String, Object> serviceContext = new HashMap<String, Object>();