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();
}
}