You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@axis.apache.org by ve...@apache.org on 2018/12/23 18:21:24 UTC

svn commit: r1849657 - /axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/transport/http/XFormURLEncodedFormatter.java

Author: veithen
Date: Sun Dec 23 18:21:24 2018
New Revision: 1849657

URL: http://svn.apache.org/viewvc?rev=1849657&view=rev
Log:
Implement streaming in XFormURLEncodedFormatter.

Modified:
    axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/transport/http/XFormURLEncodedFormatter.java

Modified: axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/transport/http/XFormURLEncodedFormatter.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/transport/http/XFormURLEncodedFormatter.java?rev=1849657&r1=1849656&r2=1849657&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/transport/http/XFormURLEncodedFormatter.java (original)
+++ axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/transport/http/XFormURLEncodedFormatter.java Sun Dec 23 18:21:24 2018
@@ -29,8 +29,10 @@ import org.apache.axis2.transport.Messag
 import org.apache.axis2.transport.http.util.URLTemplatingUtil;
 import org.apache.axis2.util.JavaUtils;
 
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
+import java.io.OutputStreamWriter;
 import java.net.URL;
 import java.util.Iterator;
 
@@ -40,34 +42,33 @@ import java.util.Iterator;
 public class XFormURLEncodedFormatter implements MessageFormatter {
 
     public byte[] getBytes(MessageContext messageContext, OMOutputFormat format) throws AxisFault {
-
-        OMElement omElement = messageContext.getEnvelope().getBody().getFirstElement();
-
-        if (omElement != null) {
-            Iterator it = omElement.getChildElements();
-            String paraString = "";
-
-            while (it.hasNext()) {
-                OMElement ele1 = (OMElement) it.next();
-                String parameter;
-
-                parameter = ele1.getLocalName() + "=" + ele1.getText();
-                paraString = "".equals(paraString) ? parameter : (paraString + "&" + parameter);
-            }
-
-            return paraString.getBytes();
-        }
-
-        return new byte[0];
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        writeTo(messageContext, format, baos, true);
+        return baos.toByteArray();
     }
 
     public void writeTo(MessageContext messageContext, OMOutputFormat format,
                         OutputStream outputStream, boolean preserve) throws AxisFault {
-
-        try {
-            outputStream.write(getBytes(messageContext, format));
-        } catch (IOException e) {
-            throw new AxisFault("An error occured while writing the request");
+        OMElement omElement = messageContext.getEnvelope().getBody().getFirstElement();
+        if (omElement != null) {
+            try {
+                OutputStreamWriter writer = new OutputStreamWriter(outputStream, "utf-8");
+                boolean first = true;
+                for (Iterator<OMElement> it = omElement.getChildElements(); it.hasNext(); ) {
+                    OMElement child = it.next();
+                    if (first) {
+                        first = false;
+                    } else {
+                        writer.write('&');
+                    }
+                    writer.write(child.getLocalName());
+                    writer.write('=');
+                    child.writeTextTo(writer, preserve);
+                }
+                writer.flush();
+            } catch (IOException e) {
+                throw new AxisFault("An error occured while writing the request");
+            }
         }
     }