[jboss-svn-commits] JBL Code SVN: r23986 - in labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta: tests/src/org/jboss/soa/esb/addressing/eprs and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Nov 20 09:17:24 EST 2008


Author: kevin.conner at jboss.com
Date: 2008-11-20 09:17:24 -0500 (Thu, 20 Nov 2008)
New Revision: 23986

Modified:
   labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/addressing/eprs/JMSEpr.java
   labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/addressing/eprs/JMSEprUnitTest.java
Log:
Fix JmsEPR address for replyto: JBESB-2197

Modified: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/addressing/eprs/JMSEpr.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/addressing/eprs/JMSEpr.java	2008-11-20 14:05:16 UTC (rev 23985)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/addressing/eprs/JMSEpr.java	2008-11-20 14:17:24 UTC (rev 23986)
@@ -247,8 +247,10 @@
 				}
 			}
 		}
-		if (uri != null)
-			setAddr(new PortReference(JMS_PROTOCOL + PROTOCOL_SEPARATOR + uri + "/" + name));
+		if (uri != null) {
+			final String address = getJmsAddress(uri, name) ;
+			setAddr(new PortReference(address));
+		}
 	}
 
 	/**
@@ -505,7 +507,7 @@
 			if (destinationType.equals(QUEUE_TYPE)
 					|| destinationType.equals(TOPIC_TYPE))
 			{
-				String uri = Configuration.getJndiServerURL();
+				String uri = null;
 				String name = null;
 				PortReference addr = new PortReference();
 				
@@ -526,14 +528,20 @@
                     			addr.addExtension(key.toString(), environment.getProperty(key.toString()));
                     	}
                     }
-                    
-                    
                 }
+                
+                if (uri == null) {
+                    uri = addr.getExtensionValue(Context.PROVIDER_URL) ;
+                }
+                
+                if (uri == null) {
+                    uri = Configuration.getJndiServerURL() ;
+                }
 	
                 if (name == null)
                 	name = destinationName;
                 
-                addr.setAddress(JMS_PROTOCOL + PROTOCOL_SEPARATOR + uri + "/" + name);
+                addr.setAddress(getJmsAddress(uri, name));
 
 				addr.addExtension(DESTINATION_TYPE_TAG, destinationType);
 				
@@ -751,6 +759,23 @@
 	    return new JMSEpr(this);
 	}
 
+	private String getJmsAddress(final String uri, final String name)
+	{
+		try {
+			final URI uriVal = new URI(uri) ;
+			final String host = uriVal.getHost() ;
+			if (host != null) {
+				final int port = uriVal.getPort() ;
+				if (port > 0) {
+					return JMS_PROTOCOL + PROTOCOL_SEPARATOR + host + ":" + port + "/" + name;
+				} else {
+					return JMS_PROTOCOL + PROTOCOL_SEPARATOR + host + "/" + name;
+				}
+			}
+		} catch (final URISyntaxException urise) {}
+		return JMS_PROTOCOL + PROTOCOL_SEPARATOR + uri + "/" + name;
+	}
+
 	public String toString ()
 	{
 		return "JMSEpr [ "+super.getAddr().extendedToString()+" ]";
@@ -776,4 +801,4 @@
 			throw new ExceptionInInitializerError(ex.toString());
 		}
 	}
-}
\ No newline at end of file
+}

Modified: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/addressing/eprs/JMSEprUnitTest.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/addressing/eprs/JMSEprUnitTest.java	2008-11-20 14:05:16 UTC (rev 23985)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/addressing/eprs/JMSEprUnitTest.java	2008-11-20 14:17:24 UTC (rev 23986)
@@ -32,7 +32,7 @@
 import junit.framework.JUnit4TestAdapter;
 
 import org.jboss.soa.esb.addressing.eprs.JMSEpr.AcknowledgeMode;
-import org.jboss.soa.esb.common.Configuration;
+import org.jboss.soa.esb.common.Environment;
 import org.jboss.soa.esb.couriers.CourierException;
 import org.junit.Test;
 
@@ -43,12 +43,16 @@
  */
 public class JMSEprUnitTest
 {
+	private String defaultProvider = "default.test" ;
+	private String extensionProvider = "extension.test" ;
+	private String propertyJndi = "jndiurl.test" ;
 	private String expectedDestination = "/queue/test";
 	private String expectedConnectionFactory = "ConnectionFactory";
 	private String expectedDestinationType = JMSEpr.QUEUE_TYPE;
 	private String expectedSelector = "JMSCorrelationID=1000";
 	private static final boolean NON_PERSISTENT = false;
 	private static final boolean PERSISTENT = true;
+	private static final String JNDI_PREFIX = "jnp://" ;
 	
 	private final Properties nullEnvironment = null;
 	
@@ -188,6 +192,49 @@
 	}
 	
 	@Test
+	public void generatedAddresses()
+	{
+		final String jndiServerUrl = System.getProperty(Environment.JNDI_SERVER_URL) ;
+		try
+		{
+			System.setProperty(Environment.JNDI_SERVER_URL, JNDI_PREFIX + defaultProvider) ;
+			
+			final String queueName = "queueName" ;
+			
+			// should default address to system property
+			final JMSEpr firstEpr = new JMSEpr(ONE_ONE_PROTOCOL, expectedDestinationType,
+				queueName, "connection", null, null, true, null, null, null, true) ;
+			assertEquals("System JNDI_SERVER_URL", "jms://" + defaultProvider + "/" + queueName, firstEpr.getAddr().getAddress()) ;
+			
+			// should use Provider URL extension
+			final Properties environment = new Properties() ;
+			environment.setProperty(Context.PROVIDER_URL, JNDI_PREFIX + extensionProvider) ;
+			final JMSEpr secondEpr = new JMSEpr(ONE_ONE_PROTOCOL, expectedDestinationType,
+				queueName, "connection", environment, null, true, null, null, null, true) ;
+			assertEquals("Extension Context.PROVIDER_URL", "jms://" + extensionProvider + "/" + queueName, secondEpr.getAddr().getAddress()) ;
+			
+			// should use jndi-URL property
+			environment.setProperty(JNDI_URL_TAG, JNDI_PREFIX + propertyJndi) ;
+			final JMSEpr thirdEpr = new JMSEpr(ONE_ONE_PROTOCOL, expectedDestinationType,
+				queueName, "connection", environment, null, true, null, null, null, true) ;
+			assertEquals("Extension Context.PROVIDER_URL", "jms://" + propertyJndi + "/" + queueName, thirdEpr.getAddr().getAddress()) ;
+		}
+		finally
+		{
+			if (jndiServerUrl != null)
+			{
+				System.setProperty(Environment.JNDI_SERVER_URL, jndiServerUrl) ;
+			}
+			else
+			{
+				final Properties properties = System.getProperties() ;
+				properties.remove(Environment.JNDI_SERVER_URL) ;
+				System.setProperties(properties) ;
+			}
+		}
+	}
+	
+	@Test
 	public void acknowledgeEnumTest()
 	{
 		AcknowledgeMode ackMode = AcknowledgeMode.getAckMode( null );




More information about the jboss-svn-commits mailing list