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

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

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

surajk
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);