Author: veithen
Date: Sat Dec 22 10:54:20 2018
New Revision: 1849537

URL: http://svn.apache.org/viewvc?rev=1849537&view=rev
Log:
MultipartFormDataFormatter: implement getBytes using writeTo instead of the 
reverse.

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

Modified: 
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/transport/http/MultipartFormDataFormatter.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/transport/http/MultipartFormDataFormatter.java?rev=1849537&r1=1849536&r2=1849537&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/transport/http/MultipartFormDataFormatter.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/transport/http/MultipartFormDataFormatter.java
 Sat Dec 22 10:54:20 2018
@@ -84,10 +84,9 @@ public class MultipartFormDataFormatter
      *         message format.
      */
     public byte[] getBytes(MessageContext messageContext, OMOutputFormat 
format) throws AxisFault {
-        OMElement omElement = 
messageContext.getEnvelope().getBody().getFirstElement();
         ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
         try {
-            createMultipatFormDataRequest(omElement, bytesOut, format);
+            writeTo(messageContext, format, bytesOut, true);
             return bytesOut.toByteArray();
         } catch (IOException e) {
             throw new AxisFault(e.getMessage());
@@ -95,33 +94,6 @@ public class MultipartFormDataFormatter
     }
 
     /**
-     * To support deffered writing transports as in http chunking.. Axis2 was
-     * doing this for some time..
-     * <p/>
-     * Preserve flag can be used to preserve the envelope for later use. This 
is
-     * usefull when implementing authentication machnisms like NTLM.
-     *
-     * @param outputStream
-     * @param preserve     :
-     *                     do not consume the OM when this is set..
-     */
-    public void writeTo(MessageContext messageContext, OMOutputFormat format,
-                        OutputStream outputStream, boolean preserve) throws 
AxisFault {
-
-        try {
-            byte[] b = getBytes(messageContext, format);
-
-            if (b != null && b.length > 0) {
-                outputStream.write(b);
-            } else {
-                outputStream.flush();
-            }
-        } catch (IOException e) {
-            throw new AxisFault("An error occured while writing the request");
-        }
-    }
-
-    /**
      * Different message formats can set their own content types
      * Eg: JSONFormatter can set the content type as application/json
      *
@@ -163,42 +135,40 @@ public class MultipartFormDataFormatter
         return soapAction;
     }
 
-    /**
-     * @param dataOut
-     * @param bytesOut 
-     * @param format 
-     * @return
-     * @throws IOException 
-     */
-    private void createMultipatFormDataRequest(OMElement dataOut, 
ByteArrayOutputStream bytesOut,
-            OMOutputFormat format) throws IOException {
+    public void writeTo(MessageContext messageContext, OMOutputFormat format,
+            OutputStream outputStream, boolean preserve) throws AxisFault {
+        OMElement dataOut = 
messageContext.getEnvelope().getBody().getFirstElement();
         if (dataOut != null) {
-            Iterator iter1 = dataOut.getChildElements();
-            OMFactory omFactory = OMAbstractFactory.getOMFactory();
-            OMMultipartWriter writer = new OMMultipartWriter(bytesOut, format);
-            while (iter1.hasNext()) {               
-                OMElement ele = (OMElement) iter1.next();
-                Iterator iter2 = ele.getChildElements();
-                // check whether the element is a complex type
-                if (iter2.hasNext()) {
-                    OMElement omElement =
-                            
omFactory.createOMElement(ele.getQName().getLocalPart(), null);
-                    omElement.addChild(
-                            processComplexType(omElement, 
ele.getChildElements(), omFactory));                   
-                    OutputStream partOutputStream = 
writer.writePart(DEFAULT_CONTENT_TYPE, null,
-                            Collections.singletonList(new 
Header("Content-Disposition",
-                                    DISPOSITION_TYPE + "; name=\"" + 
omElement.getLocalName() + "\"")));
-                    partOutputStream.write(omElement.toString().getBytes());
-                    partOutputStream.close();
-                } else {
-                    OutputStream partOutputStream = 
writer.writePart(DEFAULT_CONTENT_TYPE, null,
-                            Collections.singletonList(new 
Header("Content-Disposition",
-                                    DISPOSITION_TYPE + "; name=\"" + 
ele.getLocalName() + "\"")));
-                    partOutputStream.write(ele.getText().getBytes());
-                    partOutputStream.close();
+            try {
+                Iterator iter1 = dataOut.getChildElements();
+                OMFactory omFactory = OMAbstractFactory.getOMFactory();
+                OMMultipartWriter writer = new OMMultipartWriter(outputStream, 
format);
+                while (iter1.hasNext()) {
+                    OMElement ele = (OMElement) iter1.next();
+                    Iterator iter2 = ele.getChildElements();
+                    // check whether the element is a complex type
+                    if (iter2.hasNext()) {
+                        OMElement omElement =
+                                
omFactory.createOMElement(ele.getQName().getLocalPart(), null);
+                        omElement.addChild(
+                                processComplexType(omElement, 
ele.getChildElements(), omFactory));
+                        OutputStream partOutputStream = 
writer.writePart(DEFAULT_CONTENT_TYPE, null,
+                                Collections.singletonList(new 
Header("Content-Disposition",
+                                        DISPOSITION_TYPE + "; name=\"" + 
omElement.getLocalName() + "\"")));
+                        
partOutputStream.write(omElement.toString().getBytes());
+                        partOutputStream.close();
+                    } else {
+                        OutputStream partOutputStream = 
writer.writePart(DEFAULT_CONTENT_TYPE, null,
+                                Collections.singletonList(new 
Header("Content-Disposition",
+                                        DISPOSITION_TYPE + "; name=\"" + 
ele.getLocalName() + "\"")));
+                        partOutputStream.write(ele.getText().getBytes());
+                        partOutputStream.close();
+                    }
                 }
+                writer.complete();
+            } catch (IOException ex) {
+                throw AxisFault.makeFault(ex);
             }
-            writer.complete();            
         }
     }
 


Reply via email to