Author: dkulp
Date: Mon Jun  1 19:45:26 2009
New Revision: 780800

URL: http://svn.apache.org/viewvc?rev=780800&view=rev
Log:
[CXF-2250] Fix issue of .INBOUND_MESSAGE_ATTACHMENTS not being mapped
correctly on the client side.

Modified:
    
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/WrappedMessageContext.java
    
cxf/trunk/systests/src/test/java/org/apache/cxf/systest/swa/ClientServerSwaTest.java

Modified: 
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/WrappedMessageContext.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/WrappedMessageContext.java?rev=780800&r1=780799&r2=780800&view=diff
==============================================================================
--- 
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/WrappedMessageContext.java
 (original)
+++ 
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/WrappedMessageContext.java
 Mon Jun  1 19:45:26 2009
@@ -204,13 +204,22 @@
                 }
             }
             if (MessageContext.INBOUND_MESSAGE_ATTACHMENTS.equals(key)) {
-                if (isOutbound()) {
-                    ret = reqMessage.get(key);
+                if (isRequestor() && isOutbound()) {
+                    ret = null;
+                } else if (isOutbound()) {
+                    ret = createAttachments(reqMessage, 
+                                            
MessageContext.INBOUND_MESSAGE_ATTACHMENTS);
+                } else {
+                    ret = createAttachments(message, 
+                                            
MessageContext.INBOUND_MESSAGE_ATTACHMENTS);                    
                 }
-                ret = createAttachments(getWrappedMessage(), 
MessageContext.INBOUND_MESSAGE_ATTACHMENTS);
             } else if 
(MessageContext.OUTBOUND_MESSAGE_ATTACHMENTS.equals(key)) {
-                ret = createAttachments(isRequestor() ? getWrappedMessage() : 
createResponseMessage(),
-                    MessageContext.OUTBOUND_MESSAGE_ATTACHMENTS);
+                if (isRequestor() && !isOutbound()) {
+                    ret = createAttachments(reqMessage, 
MessageContext.OUTBOUND_MESSAGE_ATTACHMENTS);
+                } else {
+                    ret = createAttachments(isRequestor() ? 
getWrappedMessage() : createResponseMessage(),
+                        MessageContext.OUTBOUND_MESSAGE_ATTACHMENTS);
+                }
             } else if (MessageContext.MESSAGE_OUTBOUND_PROPERTY.equals(key)) {
                 ret = isOutbound();
             } else if (MessageContext.HTTP_REQUEST_HEADERS.equals(key)) {
@@ -283,11 +292,11 @@
         }
         return m;
     }
-    private Object createAttachments(Message mc, String propertyName) {
+    private Object createAttachments(Map<String, Object> mc, String 
propertyName) {
         if (mc == null) {
             return null;
         }
-        Collection<Attachment> attachments = mc.getAttachments();
+        Collection<Attachment> attachments = 
CastUtils.cast((Collection<?>)mc.get(Message.ATTACHMENTS));
         Map<String, DataHandler> dataHandlers = 
             AttachmentUtil.getDHMap(attachments);
         mc.put(propertyName, 

Modified: 
cxf/trunk/systests/src/test/java/org/apache/cxf/systest/swa/ClientServerSwaTest.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/swa/ClientServerSwaTest.java?rev=780800&r1=780799&r2=780800&view=diff
==============================================================================
--- 
cxf/trunk/systests/src/test/java/org/apache/cxf/systest/swa/ClientServerSwaTest.java
 (original)
+++ 
cxf/trunk/systests/src/test/java/org/apache/cxf/systest/swa/ClientServerSwaTest.java
 Mon Jun  1 19:45:26 2009
@@ -21,6 +21,7 @@
 import java.awt.Image;
 import java.io.InputStream;
 import java.net.URL;
+import java.util.Map;
 
 import javax.activation.DataHandler;
 import javax.imageio.ImageIO;
@@ -32,10 +33,13 @@
 import javax.xml.soap.SOAPMessage;
 import javax.xml.transform.Source;
 import javax.xml.transform.stream.StreamSource;
+import javax.xml.ws.BindingProvider;
 import javax.xml.ws.Dispatch;
 import javax.xml.ws.Holder;
 import javax.xml.ws.Service;
+import javax.xml.ws.handler.MessageContext;
 
+import org.apache.cxf.helpers.CastUtils;
 import org.apache.cxf.helpers.IOUtils;
 import org.apache.cxf.swa.SwAService;
 import org.apache.cxf.swa.SwAServiceInterface;
@@ -218,7 +222,12 @@
         VoidRequest request = new VoidRequest();
         OutputResponseAll response = port.echoAllAttachmentTypes(request, 
attach1, attach2, attach3, attach4,
                                                                  attach5);
+        
         assertNotNull(response);
+        Map<?, ?> map = CastUtils.cast((Map<?, 
?>)((BindingProvider)port).getResponseContext()
+                                           
.get(MessageContext.INBOUND_MESSAGE_ATTACHMENTS));
+        assertNotNull(map);
+        assertEquals(5, map.size()); 
     }
     
     @Test


Reply via email to