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");
+            }
         }
     }
 


Reply via email to