You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by sc...@apache.org on 2007/07/16 22:24:05 UTC

svn commit: r556720 - in /webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message: Message.java impl/MessageImpl.java util/MessageUtils.java

Author: scheu
Date: Mon Jul 16 13:24:03 2007
New Revision: 556720

URL: http://svn.apache.org/viewvc?view=rev&rev=556720
Log:
Contributor:Rich Scheuerle
Simplified the JAX-WS Message code.
Instead of using a SOAP MimeHeaders to hold the transport header values, 
the TRANSPORT_HEADERS map is used directly.

Modified:
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/Message.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/MessageImpl.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/util/MessageUtils.java

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/Message.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/Message.java?view=diff&rev=556720&r1=556719&r2=556720
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/Message.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/Message.java Mon Jul 16 13:24:03 2007
@@ -22,11 +22,11 @@
 import org.apache.axis2.jaxws.message.factory.BlockFactory;
 
 import javax.activation.DataHandler;
-import javax.xml.soap.MimeHeaders;
 import javax.xml.soap.SOAPMessage;
 import javax.xml.ws.WebServiceException;
+
 import java.util.List;
-import java.util.Set;
+import java.util.Map;
 
 /**
  * Message
@@ -119,15 +119,16 @@
     public void setMTOMEnabled(boolean b);
     
 
-    /** @return get the MimeHeaders */
-    public MimeHeaders getMimeHeaders();
+    /** 
+     * @return get the transport headers map.
+     */
+    public Map getMimeHeaders();
 
     /**
-     * Set the MimeHeaders
-     *
-     * @param mhs MimeHeaders
+     * Set the transport headers
+     * @param map Map
      */
-    public void setMimeHeaders(MimeHeaders mhs);
+    public void setMimeHeaders(Map map);
 
     /**
      * Indicate that this message is passed the pivot point. For example, this is set in the JAX-WS

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/MessageImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/MessageImpl.java?view=diff&rev=556720&r1=556719&r2=556720
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/MessageImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/MessageImpl.java Mon Jul 16 13:24:03 2007
@@ -58,7 +58,10 @@
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
+import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 
 /**
  * MessageImpl
@@ -75,7 +78,10 @@
     XMLPart xmlPart = null; // the representation of the xmlpart
     
     boolean mtomEnabled;
-    private MimeHeaders mimeHeaders = new MimeHeaders(); 
+    
+    // The transport headers are stored in a Map, which is the 
+    // same data representation used by the Axis2 MessageContext (TRANSPORT_HEADERS).
+    private Map transportHeaders = null; 
     
     // The Message is connected to a MessageContext.
     // Prior to that connection, attachments are stored locally
@@ -192,8 +198,26 @@
             // Create soapMessage object from Message Factory using the input
             // stream created from OM.
             
-            // Get the MimeHeaders
-            MimeHeaders defaultHeaders = this.getMimeHeaders();
+            // Get the MimeHeaders from the transportHeaders map
+            MimeHeaders defaultHeaders = new MimeHeaders();
+            if (transportHeaders != null) {
+                Iterator it = transportHeaders.entrySet().iterator();
+                while (it.hasNext()) {
+                    Map.Entry entry = (Map.Entry) it.next();
+                    String key = (String) entry.getKey();
+                    if (entry.getValue() instanceof String) {
+                        // Normally there is one value per key
+                        defaultHeaders.addHeader(key, (String) entry.getValue());
+                    } else {
+                        // There may be multiple values for each key.  This code
+                        // assumes the value is an array of String.
+                        String values[] = (String[]) entry.getValue();
+                        for (int i=0; i<values.length; i++) {
+                            defaultHeaders.addHeader(key, values[i]);
+                        }
+                    }
+                }
+            }
             
             // Toggle based on SOAP 1.1 or SOAP 1.2
             String contentType = null;
@@ -512,18 +536,22 @@
     /* (non-Javadoc)
      * @see org.apache.axis2.jaxws.message.Attachment#getMimeHeaders()
      */
-    public MimeHeaders getMimeHeaders() {
-        return mimeHeaders;
-    }
+    public Map getMimeHeaders() {
+        // Lazily create transport headers.
+        if (transportHeaders == null) {
+            transportHeaders = new HashMap();
+        }
+        return transportHeaders;
+     }
     
     /* (non-Javadoc)
-     * @see org.apache.axis2.jaxws.message.Attachment#setMimeHeaders(javax.xml.soap.MimeHeaders)
+     * @see org.apache.axis2.jaxws.message.Attachment#setMimeHeaders(java.util.Map)
      */
-    public void setMimeHeaders(MimeHeaders mhs) {
-        mimeHeaders = mhs;
-        if (mimeHeaders == null) {
-            mimeHeaders = new MimeHeaders();
-        }
+    public void setMimeHeaders(Map map) {
+        transportHeaders = map;
+        if (transportHeaders == null) {
+            transportHeaders = new HashMap();
+          }
     }
     
     public Block getBodyBlock(Object context, BlockFactory blockFactory) 

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/util/MessageUtils.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/util/MessageUtils.java?view=diff&rev=556720&r1=556719&r2=556720
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/util/MessageUtils.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/util/MessageUtils.java Mon Jul 16 13:24:03 2007
@@ -158,16 +158,11 @@
             }
 
             // Add all the MimeHeaders from the Axis2 MessageContext
-            MimeHeaders mhs = message.getMimeHeaders();
             Map headerMap = (Map)msgContext.getProperty(MessageContext.TRANSPORT_HEADERS);
             if (headerMap != null) {
-                Iterator it = headerMap.keySet().iterator();
-                while (it.hasNext()) {
-                    String key = (String)it.next();
-                    String value = (String)headerMap.get(key);
-                    mhs.addHeader(key, value);
-                }
+                message.setMimeHeaders(headerMap);
             }
+            
             // TODO: This is a WORKAROUND for missing SOAPFault data.  If we do a toString on the
             // SOAPEnvelope, then all the data will be available to the provider.  Otherwise, it
             // will be missing the <Reason> element corresponding to the <faultstring> element.  
@@ -197,12 +192,7 @@
         msgContext.setEnvelope(envelope);
 
         // Put the Headers onto the MessageContext
-        // TODO: Merge with latest TransportHeaders impl.
-        Map headerMap = new HashMap();
-        for (Iterator it = message.getMimeHeaders().getAllHeaders(); it.hasNext();) {
-            MimeHeader mh = (MimeHeader)it.next();
-            headerMap.put(mh.getName(), mh.getValue());
-        }
+        Map headerMap = message.getMimeHeaders();
         msgContext.setProperty(MessageContext.TRANSPORT_HEADERS, headerMap);
 
         if (message.getProtocol() == Protocol.rest) {



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org