You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2008/01/21 18:09:03 UTC

svn commit: r613937 - in /incubator/cxf/trunk: distribution/bundle/ rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/ systests/src/test/java/org/apache/cxf/systest/jms/

Author: dkulp
Date: Mon Jan 21 09:09:01 2008
New Revision: 613937

URL: http://svn.apache.org/viewvc?rev=613937&view=rev
Log:
[CXF-1399] Fix issue with JMS transport ignoring the PROTOCOL_HEADERS
Also update to now-released 1.0-beta-1 version of shade plugin to make the bundle jar usable

Modified:
    incubator/cxf/trunk/distribution/bundle/pom.xml
    incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java
    incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSDestination.java
    incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSTransportBase.java
    incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jms/JMSClientServerTest.java

Modified: incubator/cxf/trunk/distribution/bundle/pom.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/distribution/bundle/pom.xml?rev=613937&r1=613936&r2=613937&view=diff
==============================================================================
--- incubator/cxf/trunk/distribution/bundle/pom.xml (original)
+++ incubator/cxf/trunk/distribution/bundle/pom.xml Mon Jan 21 09:09:01 2008
@@ -282,7 +282,7 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-shade-plugin</artifactId>
-                <version>1.0-alpha-15</version>
+                <version>1.0-beta-1</version>
                 <executions>
                     <execution>
                         <phase>package</phase>

Modified: incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java?rev=613937&r1=613936&r2=613937&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java (original)
+++ incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java Mon Jan 21 09:09:01 2008
@@ -24,6 +24,8 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.util.List;
+import java.util.Map;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -38,6 +40,7 @@
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.configuration.Configurable;
 import org.apache.cxf.configuration.Configurer;
+import org.apache.cxf.helpers.CastUtils;
 import org.apache.cxf.io.CachedOutputStream;
 import org.apache.cxf.message.Exchange;
 import org.apache.cxf.message.Message;
@@ -310,8 +313,10 @@
                 ttl = getClientConfig().getMessageTimeToLive();
             }
             
-            base.setMessageProperties(headers, jmsMessage);           
-            
+            base.setMessageProperties(headers, jmsMessage);
+            Map<String, List<String>> protHeaders = 
+                CastUtils.cast((Map<?, ?>)outMessage.get(Message.PROTOCOL_HEADERS));
+            base.addProtocolHeaders(jmsMessage, protHeaders);
             if (!isOneWay) {
                 String id = pooledSession.getCorrelationID();
 

Modified: incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSDestination.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSDestination.java?rev=613937&r1=613936&r2=613937&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSDestination.java (original)
+++ incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSDestination.java Mon Jan 21 09:09:01 2008
@@ -26,6 +26,8 @@
 import java.io.OutputStream;
 import java.util.Calendar;
 import java.util.GregorianCalendar;
+import java.util.List;
+import java.util.Map;
 import java.util.SimpleTimeZone;
 import java.util.TimeZone;
 import java.util.concurrent.Executor;
@@ -45,6 +47,7 @@
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.configuration.Configurable;
 import org.apache.cxf.configuration.Configurer;
+import org.apache.cxf.helpers.CastUtils;
 import org.apache.cxf.io.CachedOutputStream;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.message.MessageImpl;
@@ -372,7 +375,7 @@
             message.put(JMSConstants.JMS_REQUEST_MESSAGE, 
                         inMessage.get(JMSConstants.JMS_REQUEST_MESSAGE));
             message.setContent(OutputStream.class,
-                               new JMSOutputStream(inMessage));
+                               new JMSOutputStream(inMessage, message));
         }
         
         protected Logger getLogger() {
@@ -383,14 +386,16 @@
     private class JMSOutputStream extends CachedOutputStream {
                 
         private Message inMessage;
+        private Message outMessage;
         private javax.jms.Message reply;
         private Queue replyTo;
         private QueueSender sender;
         
         // setup the ByteArrayStream
-        public JMSOutputStream(Message m) {
+        public JMSOutputStream(Message m, Message o) {
             super();
             inMessage = m;
+            outMessage = o;
         }
         
         //to prepear the message and get the send out message
@@ -441,6 +446,9 @@
                     setReplyCorrelationID(request, reply);
                     
                     base.setMessageProperties(headers, reply);
+                    Map<String, List<String>> protHeaders = 
+                        CastUtils.cast((Map<?, ?>)outMessage.get(Message.PROTOCOL_HEADERS));
+                    base.addProtocolHeaders(reply, protHeaders);
 
                     sendResponse();
                     

Modified: incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSTransportBase.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSTransportBase.java?rev=613937&r1=613936&r2=613937&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSTransportBase.java (original)
+++ incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSTransportBase.java Mon Jan 21 09:09:01 2008
@@ -19,8 +19,11 @@
 
 package org.apache.cxf.transport.jms;
 
+import java.util.Collections;
 import java.util.Enumeration;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import javax.jms.BytesMessage;
 import javax.jms.Destination;
@@ -146,6 +149,7 @@
         headers.setJMSTimeStamp(new Long(message.getJMSTimestamp()));
         headers.setJMSType(message.getJMSType());
 
+        Map<String, List<String>> protHeaders = new HashMap<String, List<String>>();
         List<JMSPropertyType> props = headers.getProperty();
         Enumeration enm = message.getPropertyNames();
         while (enm.hasMoreElements()) {
@@ -155,8 +159,10 @@
             prop.setName(name);
             prop.setValue(val);
             props.add(prop);
+            
+            protHeaders.put(name, Collections.singletonList(val));
         }
-
+        inMessage.put(org.apache.cxf.message.Message.PROTOCOL_HEADERS, protHeaders);
         return headers;
     }
 
@@ -194,6 +200,25 @@
         return correlationId;
     }
 
+    protected void addProtocolHeaders(Message message, Map<String, List<String>> headers) 
+        throws JMSException {
+        if (headers == null) {
+            return;
+        }
+        StringBuilder value = new StringBuilder(256);
+        for (Map.Entry<String, List<String>> entry : headers.entrySet()) {
+            value.setLength(0);
+            boolean first = true;
+            for (String s : entry.getValue()) {
+                if (!first) {
+                    value.append("; ");
+                }
+                value.append(s);
+                first = false;
+            }
+            message.setStringProperty(entry.getKey(), value.toString());
+        }
+    }
     protected void setMessageProperties(JMSMessageHeadersType headers, Message message)
         throws JMSException {
 

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jms/JMSClientServerTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jms/JMSClientServerTest.java?rev=613937&r1=613936&r2=613937&view=diff
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jms/JMSClientServerTest.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jms/JMSClientServerTest.java Mon Jan 21 09:09:01 2008
@@ -348,8 +348,15 @@
                            "JMS_SAMPLE_CORRELATION_ID".equals(responseHdr.getJMSCorrelationID()));
                 assertTrue("response Headers must conain the app property set in request context.", 
                            responseHdr.getProperty() != null);
-                assertEquals("response Headers must match the app property set in request context.",
-                             testReturnPropertyName, responseHdr.getProperty().iterator().next().getName());
+                
+                boolean found = false;
+                for (JMSPropertyType p : responseHdr.getProperty()) {
+                    if (testReturnPropertyName.equals(p.getName())) {
+                        found = true;
+                    }
+                }
+                assertTrue("response Headers must match the app property set in request context.",
+                             found);
             }
         } catch (UndeclaredThrowableException ex) {
             throw (Exception)ex.getCause();