You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ja...@apache.org on 2007/03/28 07:07:46 UTC

svn commit: r523176 - /ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/event/XmlRpcEventHandler.java

Author: jaz
Date: Tue Mar 27 22:07:45 2007
New Revision: 523176

URL: http://svn.apache.org/viewvc?view=rev&rev=523176
Log:
implemented echo back in XML-RPC; will return back the request in a valid XML-RPC XML message; use the query string ?echo to any request to enable this; note the request will not actually run, just echo

Modified:
    ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/event/XmlRpcEventHandler.java

Modified: ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/event/XmlRpcEventHandler.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/event/XmlRpcEventHandler.java?view=diff&rev=523176&r1=523175&r2=523176
==============================================================================
--- ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/event/XmlRpcEventHandler.java (original)
+++ ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/event/XmlRpcEventHandler.java Tue Mar 27 22:07:45 2007
@@ -35,9 +35,7 @@
 import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.IOException;
+import java.io.*;
 import java.util.Map;
 import java.util.Locale;
 import java.util.Iterator;
@@ -62,14 +60,47 @@
     }
 
     public String invoke(String eventPath, String eventMethod, HttpServletRequest request, HttpServletResponse response) throws EventHandlerException {
-         try {
-             this.execute(this.getXmlRpcConfig(request), new HttpStreamConnection(request, response));
-         } catch (XmlRpcException e) {
-             Debug.logError(e, module);
-             throw new EventHandlerException(e.getMessage(), e);
-         }
+        String report = request.getParameter("echo");
+        if (report != null) {
+            StringBuffer buf = new StringBuffer();
+            try {
+                // read the inputstream buffer
+                String line;
+                BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream()));
+                while ((line = reader.readLine()) != null) {
+                    buf.append(line).append("\n");
+                }
+            } catch (Exception e) {
+                throw new EventHandlerException(e.getMessage(), e);
+            }
+            Debug.logInfo("Echo: " + buf.toString(), module);
 
-         return null;
+            // echo back the request
+            try {
+                response.setContentType("text/xml");
+                Writer out = response.getWriter();
+                out.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
+                out.write("<methodResponse>");
+                out.write("<params><param>");
+                out.write("<value><string><![CDATA[");
+                out.write(buf.toString());
+                out.write("]]></string></value>");
+                out.write("</param></params>");
+                out.write("</methodResponse>");
+                out.flush();
+            } catch (Exception e) {
+                throw new EventHandlerException(e.getMessage(), e);
+            }
+        } else {
+            try {
+                this.execute(this.getXmlRpcConfig(request), new HttpStreamConnection(request, response));
+            } catch (XmlRpcException e) {
+                Debug.logError(e, module);
+                throw new EventHandlerException(e.getMessage(), e);
+            }
+        }
+
+        return null;
     }
 
     protected void setResponseHeader(ServerStreamConnection con, String header, String value) {