roll back changes from jochen in 648212 to stabilize Axis2 trunk build. Jochen, can u please try a better patch for this functionality that does not break axis2?
diff --git a/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/DefaultMTOMAttachment.java b/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/DefaultMTOMAttachment.java
deleted file mode 100644
index efcb6e1..0000000
--- a/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/DefaultMTOMAttachment.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.apache.axiom.om.impl;
-
-import javax.activation.DataHandler;
-
-
-/**
- * Default implementation of {@link MTOMAttachment}.
- */
-public class DefaultMTOMAttachment implements MTOMAttachment {
- private final String id;
- private final DataHandler dataHandler;
-
- /**
- * Creates a new instance with the given data and content ID.
- */
- public DefaultMTOMAttachment(DataHandler pDataHandler, String pId) {
- dataHandler = pDataHandler;
- id = pId;
- }
-
- public String getContentID() {
- return id;
- }
-
- public DataHandler getDataHandler() {
- return dataHandler;
- }
-}
diff --git a/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/MIMEOutputUtils.java b/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/MIMEOutputUtils.java
index 5a70448..751ccf7 100644
--- a/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/MIMEOutputUtils.java
+++ b/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/MIMEOutputUtils.java
@@ -94,24 +94,10 @@
// text nodes int the binary node list)
Iterator binaryNodeIterator = binaryNodeList.iterator();
while (binaryNodeIterator.hasNext()) {
- Object o = binaryNodeIterator.next();
- /* Upwards compatibiliy: Should be an instance of
- * MTOMAttachment, if the user calls us via
- * {@link MTOMXMLStreamWriter#writeOptimized(OMText)},
- * or {@link MTOMXMLStreamWriter#writeOptimized(MTOMAttachment)}.
- * However, this is a public method and possibly someone
- * invokes us directly.
- */
- final MTOMAttachment attachment;
- if (o instanceof OMText) {
- final OMText omText = (OMText) o;
- attachment = new DefaultMTOMAttachment((DataHandler) omText.getDataHandler(), omText.getContentID());
- } else {
- attachment = (MTOMAttachment) o;
- }
- writeBodyPart(outStream, createMimeBodyPart(attachment
- .getContentID(), attachment.getDataHandler()),
- boundary);
+ OMText binaryNode = (OMText) binaryNodeIterator.next();
+ writeBodyPart(outStream, createMimeBodyPart(binaryNode
+ .getContentID(), (DataHandler) binaryNode
+ .getDataHandler()), boundary);
}
finishWritingMime(outStream);
outStream.flush();
diff --git a/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/MTOMAttachment.java b/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/MTOMAttachment.java
deleted file mode 100644
index d8f24e2..0000000
--- a/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/MTOMAttachment.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.apache.axiom.om.impl;
-
-import javax.activation.DataHandler;
-
-
-/**
- * Interface of an MTOM attachment, as processed by
- * {@link MTOMXMLStreamWriter#writeOptimized(org.apache.axiom.om.OMText)}
- * and {@link MIMEOutputUtils#complete(java.io.OutputStream, java.io.StringWriter, java.util.LinkedList, String, String, String, String)}.
- */
-public interface MTOMAttachment {
- /**
- * Returns the attachments ID.
- */
- String getContentID();
- /**
- * Returns the attachments contents.
- */
- DataHandler getDataHandler();
-}
diff --git a/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/MTOMXMLStreamWriter.java b/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/MTOMXMLStreamWriter.java
index 949a950..5194921 100644
--- a/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/MTOMXMLStreamWriter.java
+++ b/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/MTOMXMLStreamWriter.java
@@ -273,46 +273,32 @@
return format.getContentType();
}
- private boolean isAttachmentPossible(DataHandler pDataHandler) {
- if (pDataHandler != null) {
+ public void writeOptimized(OMText node) {
+ if(log.isDebugEnabled()){
+ log.debug("Start MTOMXMLStreamWriter.writeOptimized()");
+ }
+ DataHandler dh = (DataHandler)node.getDataHandler();
+ int optimized = UNSUPPORTED;
+ if(dh!=null){
if(log.isDebugEnabled()){
log.debug("DataHandler fetched, starting optimized Threshold processing");
}
- int optimized = BufferUtils.doesDataHandlerExceedLimit(pDataHandler, format.getOptimizedThreshold());
- return optimized != UNSUPPORTED && optimized != EXCEED_LIMIT;
+ optimized= BufferUtils.doesDataHandlerExceedLimit(dh, format.getOptimizedThreshold());
}
- return false;
- }
-
- public void writeOptimized(MTOMAttachment attachment) {
- if (log.isDebugEnabled()){
- log.debug("Start MTOMXMLStreamWriter.writeOptimized()");
+ if(optimized == UNSUPPORTED || optimized == EXCEED_LIMIT){
+ if(log.isDebugEnabled()){
+ log.debug("node added to binart NodeList for optimization");
+ }
+ binaryNodeList.add(node);
}
- if (isAttachmentPossible(attachment.getDataHandler())) {
- binaryNodeList.add(attachment);
- } else {
- throw new RuntimeException("Unable to inline an attachment.");
- }
- if (log.isDebugEnabled()){
- log.debug("Exit MTOMXMLStreamWriter.writeOptimized()");
- }
- }
-
- public void writeOptimized(OMText node) {
- if (log.isDebugEnabled()){
- log.debug("Start MTOMXMLStreamWriter.writeOptimized()");
- }
- final DataHandler dh = (DataHandler) node.getDataHandler();
- if (isAttachmentPossible(dh)) {
- binaryNodeList.add(new DefaultMTOMAttachment(dh, node.getContentID()));
- } else {
+ else{
try{
writeOutput(node);
- } catch(XMLStreamException e) {
+ }catch(XMLStreamException e){
throw new RuntimeException("XMLStreamException in writeOutput() call", e);
}
}
- if (log.isDebugEnabled()){
+ if(log.isDebugEnabled()){
log.debug("Exit MTOMXMLStreamWriter.writeOptimized()");
}
}