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 sc...@apache.org on 2010/09/27 17:43:21 UTC

svn commit: r1001786 - in /axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2: datasource/jaxb/JAXBAttachmentMarshaller.java jaxws/message/attachments/JAXBAttachmentMarshaller.java

Author: scheu
Date: Mon Sep 27 15:43:20 2010
New Revision: 1001786

URL: http://svn.apache.org/viewvc?rev=1001786&view=rev
Log:
AXIS2-4831
Contributor: Rich Scheuerle
Summary:
SWA attachment may not  be added if the MTOMXMLStreamWriter is not used

Modified:
    axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/datasource/jaxb/JAXBAttachmentMarshaller.java
    axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/attachments/JAXBAttachmentMarshaller.java

Modified: axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/datasource/jaxb/JAXBAttachmentMarshaller.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/datasource/jaxb/JAXBAttachmentMarshaller.java?rev=1001786&r1=1001785&r2=1001786&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/datasource/jaxb/JAXBAttachmentMarshaller.java (original)
+++ axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/datasource/jaxb/JAXBAttachmentMarshaller.java Mon Sep 27 15:43:20 2010
@@ -145,7 +145,7 @@ public class JAXBAttachmentMarshaller ex
 
             if(optimizedThreshold==0 || dataLength > optimizedThreshold){
                 DataHandler dataHandler = new DataHandler(mpds);
-                cid = addDataHandler(dataHandler);
+                cid = addDataHandler(dataHandler, false);
             }
 
             // Add the content id to the mime body part
@@ -166,7 +166,7 @@ public class JAXBAttachmentMarshaller ex
             log.debug("Adding MTOM/XOP datahandler attachment for element: " + 
                       "{" + namespace + "}" + localPart);
         }
-        String cid = addDataHandler(data);
+        String cid = addDataHandler(data, false);
         return cid == null ? null : "cid:" + cid;
     }
     
@@ -179,7 +179,7 @@ public class JAXBAttachmentMarshaller ex
             log.debug("Adding SWAREF attachment");
         }
         
-        String cid = addDataHandler(data);
+        String cid = addDataHandler(data, true);
         setDoingSWA();
         return "cid:" + cid;
     }
@@ -189,21 +189,45 @@ public class JAXBAttachmentMarshaller ex
      * @param dh
      * @return
      */
-    private String addDataHandler(DataHandler dh) {
+    private String addDataHandler(DataHandler dh, boolean isSWA) {
         String cid = null;
         OMText textNode = null;
         
         // If this is an MTOMXMLStreamWriter then inform the writer 
-        // that it must write out this attchment (I guess we should do this
+        // that it must write out this attachment (I guess we should do this
         // even if the attachment is SWAREF ?)
-        if (writer instanceof MTOMXMLStreamWriter) {
+        if (isSWA) {
+            if (log.isDebugEnabled()){ 
+                log.debug("adding DataHandler for SWA");
+            }
             textNode = new OMTextImpl(dh, null);
-        	if(((MTOMXMLStreamWriter) writer).isOptimizedThreshold(textNode)){
-        		cid = textNode.getContentID();
-        		((MTOMXMLStreamWriter) writer).writeOptimized(textNode);
-        		// Remember the attachment on the message.
-        		addDataHandler(dh, cid);
-        	}        	
+            // If old SWA attachments, get the ID and add the attachment to message
+            cid = textNode.getContentID();
+            addDataHandler(dh, cid);   
+        } else {
+            if (log.isDebugEnabled()){ 
+                log.debug("adding DataHandler for MTOM");
+            }
+            if (writer instanceof MTOMXMLStreamWriter) {
+                textNode = new OMTextImpl(dh, null);
+                if(((MTOMXMLStreamWriter) writer).isOptimizedThreshold(textNode)){
+                    if (log.isDebugEnabled()){ 
+                        log.debug("The MTOM attachment is written as an attachment part.");
+                    }
+                    cid = textNode.getContentID();
+                    ((MTOMXMLStreamWriter) writer).writeOptimized(textNode);
+                    // Remember the attachment on the message.
+                    addDataHandler(dh, cid);
+                } else {
+                    if (log.isDebugEnabled()){ 
+                        log.debug("The MTOM attachment is inlined.");
+                    }
+                }
+            } else {
+                if (log.isDebugEnabled()){ 
+                    log.debug("writer is not MTOM capable.  The attachment will be inlined.");
+                }
+            }
         }
         
         if (log.isDebugEnabled()){ 
@@ -243,6 +267,12 @@ public class JAXBAttachmentMarshaller ex
     public void addDataHandler(DataHandler dh, String cid) {
         if (msgContext != null) {
             msgContext.addAttachment(cid, dh);
+        } else {
+            if (log.isDebugEnabled()) {
+                log.debug("The msgContext is null.  The attachment is not stored");
+                log.debug("   content id=" + cid);
+                log.debug("   dataHandler  =" + dh);
+            }
         }
     }
 }

Modified: axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/attachments/JAXBAttachmentMarshaller.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/attachments/JAXBAttachmentMarshaller.java?rev=1001786&r1=1001785&r2=1001786&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/attachments/JAXBAttachmentMarshaller.java (original)
+++ axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/attachments/JAXBAttachmentMarshaller.java Mon Sep 27 15:43:20 2010
@@ -21,6 +21,8 @@ package org.apache.axis2.jaxws.message.a
 
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.jaxws.message.Message;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 import javax.activation.DataHandler;
 import javax.xml.stream.XMLStreamWriter;
@@ -30,6 +32,8 @@ import javax.xml.stream.XMLStreamWriter;
  * and create populate the appropriate constructs within the JAX-WS Message Model.
  */
 public class JAXBAttachmentMarshaller extends org.apache.axis2.datasource.jaxb.JAXBAttachmentMarshaller {
+    
+    private static final Log log = LogFactory.getLog(JAXBAttachmentMarshaller.class);
     private Message message;
     
     public JAXBAttachmentMarshaller(Message message, XMLStreamWriter writer) {
@@ -79,6 +83,12 @@ public class JAXBAttachmentMarshaller ex
     public void addDataHandler(DataHandler dh, String cid) {
         if (message != null) {
             message.addDataHandler(dh, cid);
+        } else {
+            if (log.isDebugEnabled()) {
+                log.debug("The msgContext is null.  The attachment is not stored");
+                log.debug("   content id=" + cid);
+                log.debug("   dataHandler  =" + dh);
+            }
         }
     }
 }