Author: surajk
Date: Sat Apr 27 08:57:48 2019
New Revision: 1858256

URL: http://svn.apache.org/viewvc?rev=1858256&view=rev
Log:
Fixed: Unable to add survey product to cart in order entry form.
(OFBIZ-10735)
It was due to incorrect usage of param map, used UtilHttp.getCombinedMap 
instead with some code improvements.
Thanks Amit Gadaley for reporting the issue and providing the patch.

Modified:
    
ofbiz/ofbiz-framework/trunk/applications/content/src/main/java/org/apache/ofbiz/content/survey/SurveyEvents.java

Modified: 
ofbiz/ofbiz-framework/trunk/applications/content/src/main/java/org/apache/ofbiz/content/survey/SurveyEvents.java
URL: 
http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/content/src/main/java/org/apache/ofbiz/content/survey/SurveyEvents.java?rev=1858256&r1=1858255&r2=1858256&view=diff
==============================================================================
--- 
ofbiz/ofbiz-framework/trunk/applications/content/src/main/java/org/apache/ofbiz/content/survey/SurveyEvents.java
 (original)
+++ 
ofbiz/ofbiz-framework/trunk/applications/content/src/main/java/org/apache/ofbiz/content/survey/SurveyEvents.java
 Sat Apr 27 08:57:48 2019
@@ -18,6 +18,7 @@
  
*******************************************************************************/
 package org.apache.ofbiz.content.survey;
 
+import java.util.HashMap;
 import java.util.Map;
 
 import javax.servlet.http.HttpServletRequest;
@@ -25,6 +26,7 @@ import javax.servlet.http.HttpServletRes
 
 import org.apache.ofbiz.base.util.Debug;
 import org.apache.ofbiz.base.util.UtilHttp;
+import org.apache.ofbiz.service.*;
 import org.apache.ofbiz.webapp.control.ConfigXMLReader;
 import org.apache.ofbiz.webapp.control.ConfigXMLReader.RequestMap;
 import org.apache.ofbiz.webapp.control.RequestHandler;
@@ -39,29 +41,25 @@ public class SurveyEvents {
     public static final String module = SurveyEvents.class.getName();
 
     public static String 
createSurveyResponseAndRestoreParameters(HttpServletRequest request, 
HttpServletResponse response) {
-        // Call createSurveyResponse as an event, easier to setup and ensures 
parameter security
-        ConfigXMLReader.Event createSurveyResponseEvent = new 
ConfigXMLReader.Event("service", null, "createSurveyResponse", true);
-        RequestHandler rh = (RequestHandler) 
request.getAttribute("_REQUEST_HANDLER_");
-        ConfigXMLReader.ControllerConfig controllerConfig = 
rh.getControllerConfig();
-        String requestUri = (String) request.getAttribute("thisRequestUri");
-        RequestMap requestMap = null;
-        try {
-            requestMap = controllerConfig.getRequestMapMap().get(requestUri);
-        } catch (WebAppConfigurationException e) {
-            Debug.logError(e, "Exception thrown while parsing controller.xml 
file: ", module);
-        }
-        String eventResponse = null;
+        LocalDispatcher dispatcher = (LocalDispatcher) 
request.getAttribute("dispatcher");
+        DispatchContext dctx = dispatcher.getDispatchContext();
+
+        Map<String, Object> combinedMap = UtilHttp.getCombinedMap(request);
+
         try {
-            eventResponse = rh.runEvent(request, response, 
createSurveyResponseEvent, requestMap, null);
-        } catch (EventHandlerException e) {
+            Map<String, Object> surveyResponseMap = 
dctx.makeValidContext("createSurveyResponse", ModelService.IN_PARAM, 
combinedMap);
+            Map<String, Object> surveyResponseResult = 
dispatcher.runSync("createSurveyResponse", surveyResponseMap);
+            if (ServiceUtil.isError(surveyResponseResult)) {
+                
Debug.logError(ServiceUtil.getErrorMessage(surveyResponseResult), module);
+                return "error";
+            }
+            request.setAttribute("surveyResponseId", 
surveyResponseResult.get("surveyResponseId"));
+        } catch (GenericServiceException e) {
             Debug.logError(e, module);
             return "error";
         }
-        if (!"success".equals(eventResponse)) {
-            return eventResponse;
-        }
+
         // Check for an incoming _ORIG_PARAM_MAP_ID_, if present get the 
session stored parameter map and insert it's entries as request attributes
-        Map<String, Object> combinedMap = UtilHttp.getCombinedMap(request);
         if (combinedMap.containsKey("_ORIG_PARAM_MAP_ID_")) {
             String origParamMapId = (String) 
combinedMap.get("_ORIG_PARAM_MAP_ID_");
             UtilHttp.restoreStashedParameterMap(request, origParamMapId);


Reply via email to