You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ni...@apache.org on 2012/05/30 03:29:59 UTC
svn commit: r1344067 - in /cxf/branches/2.4.x-fixes:
rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/
rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/spec/
rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/uri/ rt/t...
Author: ningjiang
Date: Wed May 30 01:29:58 2012
New Revision: 1344067
URL: http://svn.apache.org/viewvc?rev=1344067&view=rev
Log:
CXF-4346 Supports to set the messageType from the jms URI
Modified:
cxf/branches/2.4.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSOldConfigHolder.java
cxf/branches/2.4.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/spec/JMSSpecConstants.java
cxf/branches/2.4.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/uri/JMSEndpoint.java
cxf/branches/2.4.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/uri/JMSEndpointParser.java
cxf/branches/2.4.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/uri/JMSURIConstants.java
cxf/branches/2.4.x-fixes/rt/transports/jms/src/main/resources/schemas/wsdl/jms-uri.xsd
cxf/branches/2.4.x-fixes/rt/transports/jms/src/test/java/org/apache/cxf/transport/jms/uri/JMSEndpointTest.java
cxf/branches/2.4.x-fixes/systests/transport-jms/src/test/java/org/apache/cxf/systest/jms/JMSClientServerTest.java
Modified: cxf/branches/2.4.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSOldConfigHolder.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSOldConfigHolder.java?rev=1344067&r1=1344066&r2=1344067&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSOldConfigHolder.java (original)
+++ cxf/branches/2.4.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSOldConfigHolder.java Wed May 30 01:29:58 2012
@@ -231,7 +231,12 @@ public class JMSOldConfigHolder {
if (runtimePolicy.isSetMessageType()) {
jmsConfig.setMessageType(runtimePolicy.getMessageType().value());
} else if (address == null) {
- jmsConfig.setMessageType(JMSConstants.BYTE_MESSAGE_TYPE);
+ if (endpoint.getMessageType() == null) {
+ // Using the byte message type by default
+ jmsConfig.setMessageType(JMSConstants.BYTE_MESSAGE_TYPE);
+ } else {
+ jmsConfig.setMessageType(endpoint.getMessageType().value());
+ }
}
}
jmsConfig.setPubSubDomain(pubSubDomain);
Modified: cxf/branches/2.4.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/spec/JMSSpecConstants.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/spec/JMSSpecConstants.java?rev=1344067&r1=1344066&r2=1344067&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/spec/JMSSpecConstants.java (original)
+++ cxf/branches/2.4.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/spec/JMSSpecConstants.java Wed May 30 01:29:58 2012
@@ -40,7 +40,7 @@ public final class JMSSpecConstants {
public static final String JNDIINITIALCONTEXTFACTORY_PARAMETER_NAME = "jndiInitialContextFactory";
public static final String JNDIURL_PARAMETER_NAME = "jndiURL";
public static final String JNDICONTEXTPARAMETER_PARAMETER_NAME = "jndiContextParameter";
-
+
// JMS Message Header properties
public static final String DELIVERYMODE_PARAMETER_NAME = "deliveryMode";
// Expiration Time
@@ -68,7 +68,6 @@ public final class JMSSpecConstants {
public static final String CONTENTENCODING_FIELD = SOAP_JMS_PREFIX + CONTENTENCODING_PARAMETER_NAME;
public static final String ISFAULT_FIELD = SOAP_JMS_PREFIX + ISFAULT_PARAMETER_NAME;
- //
public static final String JMS_MESSAGE_TYPE = "JMSMessageType";
public static final String TARGET_SERVICE_IN_REQUESTURI = "target.service.inrequesturi";
public static final String MALFORMED_REQUESTURI = "malformed.requesturi";
Modified: cxf/branches/2.4.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/uri/JMSEndpoint.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/uri/JMSEndpoint.java?rev=1344067&r1=1344066&r2=1344067&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/uri/JMSEndpoint.java (original)
+++ cxf/branches/2.4.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/uri/JMSEndpoint.java Wed May 30 01:29:58 2012
@@ -23,6 +23,8 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
+import org.apache.cxf.transport.jms.spec.JMSSpecConstants;
+
/**
*
*/
@@ -50,9 +52,13 @@ public class JMSEndpoint extends JMSEndp
Iterator iter = parameters.keySet().iterator();
while (iter.hasNext()) {
String key = (String)iter.next();
- if ("targetService".equals(key)) {
+ // now we just skip the MESSAGE_TYPE_PARAMETER_NAME
+ // and TARGETSERVICE_PARAMETER_NAME
+ if (JMSSpecConstants.TARGETSERVICE_PARAMETER_NAME.equals(key)
+ || JMSURIConstants.MESSAGE_TYPE_PARAMETER_NAME.equals(key)) {
continue;
}
+
String value = (String)parameters.get(key);
if (first) {
requestUri += "?" + key + "=" + value;
Modified: cxf/branches/2.4.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/uri/JMSEndpointParser.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/uri/JMSEndpointParser.java?rev=1344067&r1=1344066&r2=1344067&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/uri/JMSEndpointParser.java (original)
+++ cxf/branches/2.4.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/uri/JMSEndpointParser.java Wed May 30 01:29:58 2012
@@ -89,6 +89,8 @@ public final class JMSEndpointParser {
JMSURIConstants.JNDIINITIALCONTEXTFACTORY_PARAMETER_NAME);
String jndiUrl = getAndRemoveParameter(parameters, JMSURIConstants.JNDIURL_PARAMETER_NAME);
+ String messageType = getAndRemoveParameter(parameters, JMSURIConstants.MESSAGE_TYPE_PARAMETER_NAME);
+
if (deliveryMode != null) {
endpoint.setDeliveryMode(DeliveryModeType.valueOf(deliveryMode));
}
@@ -117,6 +119,9 @@ public final class JMSEndpointParser {
if (jndiUrl != null) {
endpoint.setJndiURL(jndiUrl);
}
+ if (messageType != null) {
+ endpoint.setMessageType(MessageType.fromValue(messageType));
+ }
Iterator iter = parameters.keySet().iterator();
while (iter.hasNext()) {
Modified: cxf/branches/2.4.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/uri/JMSURIConstants.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/uri/JMSURIConstants.java?rev=1344067&r1=1344066&r2=1344067&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/uri/JMSURIConstants.java (original)
+++ cxf/branches/2.4.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/uri/JMSURIConstants.java Wed May 30 01:29:58 2012
@@ -44,6 +44,8 @@ public final class JMSURIConstants {
public static final String TIMETOLIVE_PARAMETER_NAME = "timeToLive";
public static final String PRIORITY_PARAMETER_NAME = "priority";
public static final String REPLYTONAME_PARAMETER_NAME = "replyToName";
+ // The new configuration to set the message type of jms message body
+ public static final String MESSAGE_TYPE_PARAMETER_NAME = "messageType";
// default parameters
public static final DeliveryModeType DELIVERYMODE_DEFAULT = DELIVERYMODE_PERSISTENT;
Modified: cxf/branches/2.4.x-fixes/rt/transports/jms/src/main/resources/schemas/wsdl/jms-uri.xsd
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/transports/jms/src/main/resources/schemas/wsdl/jms-uri.xsd?rev=1344067&r1=1344066&r2=1344067&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/transports/jms/src/main/resources/schemas/wsdl/jms-uri.xsd (original)
+++ cxf/branches/2.4.x-fixes/rt/transports/jms/src/main/resources/schemas/wsdl/jms-uri.xsd Wed May 30 01:29:58 2012
@@ -36,6 +36,14 @@
<xs:enumeration value="NON_PERSISTENT" />
</xs:restriction>
</xs:simpleType>
+
+ <xs:simpleType name="messageType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="byte" />
+ <xs:enumeration value="binary" />
+ <xs:enumeration value="text" />
+ </xs:restriction>
+ </xs:simpleType>
<xs:simpleType name="priorityType">
<xs:restriction base="xs:int">
@@ -61,6 +69,7 @@
<xs:attribute name="jmsVariant" type="xs:string" />
<xs:attribute name="destinationName" type="xs:string" />
<xs:attribute name="deliveryMode" type="jms:deliveryModeType" />
+ <xs:attribute name="messageType" type="jms:messageType" default="byte"/>
<xs:attribute name="timeToLive" type="xs:long" />
<xs:attribute name="priority" type="jms:priorityType" />
<xs:attribute name="replyToName" type="xs:string" />
Modified: cxf/branches/2.4.x-fixes/rt/transports/jms/src/test/java/org/apache/cxf/transport/jms/uri/JMSEndpointTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/transports/jms/src/test/java/org/apache/cxf/transport/jms/uri/JMSEndpointTest.java?rev=1344067&r1=1344066&r2=1344067&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/transports/jms/src/test/java/org/apache/cxf/transport/jms/uri/JMSEndpointTest.java (original)
+++ cxf/branches/2.4.x-fixes/rt/transports/jms/src/test/java/org/apache/cxf/transport/jms/uri/JMSEndpointTest.java Wed May 30 01:29:58 2012
@@ -21,7 +21,6 @@ package org.apache.cxf.transport.jms.uri
import java.util.Map;
-
import org.junit.Assert;
import org.junit.Test;
@@ -131,8 +130,8 @@ public class JMSEndpointTest extends Ass
+ "&timeToLive=100" + "&priority=5" + "&replyToName=foo.bar2");
assertTrue(endpoint instanceof JMSQueueEndpoint);
assertEquals(endpoint.getParameters().size(), 0);
- assertEquals(endpoint.getDeliveryMode(),
- JMSURIConstants.DELIVERYMODE_NON_PERSISTENT);
+ assertEquals(endpoint.getDeliveryMode().toString(),
+ JMSURIConstants.DELIVERYMODE_NON_PERSISTENT.toString());
assertEquals(endpoint.getTimeToLive(), 100);
assertEquals(endpoint.getPriority(), 5);
assertEquals(endpoint.getReplyToName(), "foo.bar2");
@@ -155,13 +154,29 @@ public class JMSEndpointTest extends Ass
assertTrue(requestUri.startsWith("jms:jndi:Foo.Bar?"));
assertTrue(requestUri.contains("foo=bar"));
assertTrue(requestUri.contains("foo2=bar2"));
- // Cheching what's the request uri should not have
+ // Checking what's the request uri should not have
assertFalse(requestUri.contains("jndiInitialContextFactory"));
assertFalse(requestUri.contains("targetService"));
assertFalse(requestUri.contains("replyToName"));
assertFalse(requestUri.contains("priority=3"));
}
+ @Test
+ public void testRequestUriWithMessageType() throws Exception {
+ JMSEndpoint endpoint = resolveEndpoint("jms:queue:Foo.Bar?messageType=text");
+ assertTrue(endpoint instanceof JMSQueueEndpoint);
+ assertEquals("text", endpoint.getMessageType().value());
+
+ endpoint = resolveEndpoint("jms:queue:Foo.Bar");
+ assertTrue(endpoint instanceof JMSQueueEndpoint);
+ assertEquals("byte", endpoint.getMessageType().value());
+
+ endpoint = resolveEndpoint("jms:queue:Foo.Bar?messageType=binary");
+ assertTrue(endpoint instanceof JMSQueueEndpoint);
+ assertEquals("binary", endpoint.getMessageType().value());
+
+ }
+
private JMSEndpoint resolveEndpoint(String uri) throws Exception {
return JMSEndpointParser.createEndpoint(uri);
}
Modified: cxf/branches/2.4.x-fixes/systests/transport-jms/src/test/java/org/apache/cxf/systest/jms/JMSClientServerTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/systests/transport-jms/src/test/java/org/apache/cxf/systest/jms/JMSClientServerTest.java?rev=1344067&r1=1344066&r2=1344067&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/systests/transport-jms/src/test/java/org/apache/cxf/systest/jms/JMSClientServerTest.java (original)
+++ cxf/branches/2.4.x-fixes/systests/transport-jms/src/test/java/org/apache/cxf/systest/jms/JMSClientServerTest.java Wed May 30 01:29:58 2012
@@ -1189,11 +1189,25 @@ public class JMSClientServerTest extends
@Test
public void testSpecNoWsdlService() throws Exception {
+ specNoWsdlService(null);
+ }
+
+ @Test
+ public void testSpecNoWsdlServiceWithDifferentMessageType() throws Exception {
+ specNoWsdlService("text");
+ specNoWsdlService("byte");
+ specNoWsdlService("binary");
+ }
+
+ private void specNoWsdlService(String messageType) throws Exception {
String address = "jms:jndi:dynamicQueues/test.cxf.jmstransport.queue3"
+ "?jndiInitialContextFactory"
+ "=org.apache.activemq.jndi.ActiveMQInitialContextFactory"
+ "&jndiConnectionFactoryName=ConnectionFactory&jndiURL=tcp://localhost:"
+ JMS_PORT;
+ if (messageType != null) {
+ address = address + "&messageType=" + messageType;
+ }
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setTransportId(JMSSpecConstants.SOAP_JMS_SPECIFICATION_TRANSPORTID);