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();