You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by le...@apache.org on 2009/12/18 11:54:20 UTC

svn commit: r892218 - in /ofbiz/trunk/framework/common: build.xml src/org/ofbiz/common/CommonEvents.java webcommon/WEB-INF/common-controller.xml

Author: lektran
Date: Fri Dec 18 10:54:20 2009
New Revision: 892218

URL: http://svn.apache.org/viewvc?rev=892218&view=rev
Log:
Added a common resquest mapping for sending json responses based on the request attributes, requests requiring json responses should chain the request.  Removes the need for a json event wrapper for every type of event. Based on idea put forward by Bob Morley OFBIZ-2778

Modified:
    ofbiz/trunk/framework/common/build.xml
    ofbiz/trunk/framework/common/src/org/ofbiz/common/CommonEvents.java
    ofbiz/trunk/framework/common/webcommon/WEB-INF/common-controller.xml

Modified: ofbiz/trunk/framework/common/build.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/build.xml?rev=892218&r1=892217&r2=892218&view=diff
==============================================================================
--- ofbiz/trunk/framework/common/build.xml (original)
+++ ofbiz/trunk/framework/common/build.xml Fri Dec 18 10:54:20 2009
@@ -40,6 +40,7 @@
         <fileset dir="../service/lib" includes="*.jar"/>
         <fileset dir="../service/build/lib" includes="*.jar"/>
         <fileset dir="../entityext/build/lib" includes="*.jar"/>
+        <fileset dir="../webapp/lib" includes="*.jar"/>
         <fileset dir="../webapp/build/lib" includes="*.jar"/>
         <fileset dir="../widget/build/lib" includes="*.jar"/>
     </path>

Modified: ofbiz/trunk/framework/common/src/org/ofbiz/common/CommonEvents.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/src/org/ofbiz/common/CommonEvents.java?rev=892218&r1=892217&r2=892218&view=diff
==============================================================================
--- ofbiz/trunk/framework/common/src/org/ofbiz/common/CommonEvents.java (original)
+++ ofbiz/trunk/framework/common/src/org/ofbiz/common/CommonEvents.java Fri Dec 18 10:54:20 2009
@@ -20,8 +20,8 @@
 
 import java.io.IOException;
 import java.io.PrintWriter;
-import java.util.HashMap;
-import java.util.Iterator;
+import java.io.UnsupportedEncodingException;
+import java.io.Writer;
 import java.util.List;
 import java.util.Map;
 
@@ -29,6 +29,7 @@
 import javax.servlet.http.HttpServletResponse;
 
 import javolution.util.FastMap;
+import net.sf.json.JSONObject;
 
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.StringUtil;
@@ -243,6 +244,40 @@
         }
         return "success";
     }
+
+    public static String jsonResponseFromRequestAttributes(HttpServletRequest request, HttpServletResponse response) {
+        // pull out the service response from the request attribute
+        Map<String, Object> attrMap = UtilHttp.getJSONAttributeMap(request);
+
+        // create a JSON Object for return
+        JSONObject json = JSONObject.fromObject(attrMap);
+        String jsonStr = json.toString();
+        if (jsonStr == null) {
+            Debug.logError("JSON Object was empty; fatal error!", module);
+            return "success";
+        }
+
+        // set the X-JSON content type
+        response.setContentType("application/x-json");
+        // jsonStr.length is not reliable for unicode characters
+        try {
+            response.setContentLength(jsonStr.getBytes("UTF8").length);
+        } catch (UnsupportedEncodingException e) {
+            Debug.logError("Problems with Json encoding: " + e, module);
+        }
+
+        // return the JSON String
+        Writer out;
+        try {
+            out = response.getWriter();
+            out.write(jsonStr);
+            out.flush();
+        } catch (IOException e) {
+            Debug.logError(e, module);
+        }
+
+        return "success";
+    }
 }
 
 

Modified: ofbiz/trunk/framework/common/webcommon/WEB-INF/common-controller.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/webcommon/WEB-INF/common-controller.xml?rev=892218&r1=892217&r2=892218&view=diff
==============================================================================
--- ofbiz/trunk/framework/common/webcommon/WEB-INF/common-controller.xml (original)
+++ ofbiz/trunk/framework/common/webcommon/WEB-INF/common-controller.xml Fri Dec 18 10:54:20 2009
@@ -166,6 +166,14 @@
         <response name="success" type="view-last"/>
     </request-map>
 
+    <!-- Common json reponse events, chain these after events to send json reponses -->
+    <!-- Standard json response, uses all compatible request attributes -->
+    <request-map uri="json">
+        <security direct-request="false"/>
+        <event type="java" path="org.ofbiz.common.CommonEvents" invoke="jsonResponseFromRequestAttributes"/>
+        <response name="success" type="none"/>
+    </request-map>
+
     <!-- View Mappings -->
     <view-map name="error" page="/error/error.jsp"/>
     <view-map name="main" type="none"/>