[jboss-svn-commits] JBL Code SVN: r21191 - in labs/jbossesb/trunk/product: rosetta/src/org/jboss/internal/soa/esb/rosetta/pooling and 5 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Jul 23 10:43:06 EDT 2008
Author: kevin.conner at jboss.com
Date: 2008-07-23 10:43:06 -0400 (Wed, 23 Jul 2008)
New Revision: 21191
Modified:
labs/jbossesb/trunk/product/docs/AdministrationGuide.odt
labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/rosetta/pooling/JmsConnectionPoolContainer.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/addressing/eprs/JMSEpr.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/ListenerUtil.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JmsGatewayListener.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/notification/NotifyJMS.java
labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/addressing/eprs/JMSEprUnitTest.java
Log:
Allow additional JNDI properties: JBESB-1717
Modified: labs/jbossesb/trunk/product/docs/AdministrationGuide.odt
===================================================================
(Binary files differ)
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/rosetta/pooling/JmsConnectionPoolContainer.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/rosetta/pooling/JmsConnectionPoolContainer.java 2008-07-23 14:15:14 UTC (rev 21190)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/rosetta/pooling/JmsConnectionPoolContainer.java 2008-07-23 14:43:06 UTC (rev 21191)
@@ -158,11 +158,15 @@
* @param poolKey
* @return
*/
- public static Properties getJndiEnvironment(Map<String,String> poolKey) {
+ static Properties getJndiEnvironment(Map<String,String> poolKey) {
Properties environment = new Properties();
+ final String[] jndiPrefixes = JMSEpr.getJndiPrefixes(environment.getProperty(JMSEpr.JNDI_PREFIXES)) ;
for (String key: poolKey.keySet()) {
- if (key.startsWith("java.naming.")) {
- environment.setProperty(key, poolKey.get(key));
+ for(String jndiPrefix: jndiPrefixes) {
+ if (key.startsWith(jndiPrefix)) {
+ environment.setProperty(key, poolKey.get(key));
+ break ;
+ }
}
}
return environment;
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/addressing/eprs/JMSEpr.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/addressing/eprs/JMSEpr.java 2008-07-23 14:15:14 UTC (rev 21190)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/addressing/eprs/JMSEpr.java 2008-07-23 14:43:06 UTC (rev 21191)
@@ -28,7 +28,11 @@
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Iterator;
+import java.util.Map;
import java.util.Properties;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.TreeSet;
import javax.jms.Session;
import javax.naming.Context;
@@ -90,6 +94,8 @@
public static final String TRANSACTED_TAG = "transacted";
+ public static final String JNDI_PREFIXES = "jndi-prefixes";
+
/**
* JMS Client acknowledgment mode configuration tag
*/
@@ -160,7 +166,10 @@
NodeList nl = header.getChildNodes();
String uri = null;
String name = null;
+ String jndiPrefixesValue = null ;
+ final Map<String, String> extensions = new TreeMap<String, String>() ;
+
for (int i = 0; i < nl.getLength(); i++)
{
String prefix = nl.item(i).getPrefix();
@@ -170,55 +179,74 @@
{
if (tag != null)
{
+ final String value = nl.item(i).getTextContent();
+
if (tag.startsWith("java.naming.")) {
- getAddr().addExtension(tag, nl.item(i).getTextContent());
+ getAddr().addExtension(tag, value);
} else if (tag.equals(SPECIFICATION_VERSION_TAG)) {
- getAddr().addExtension(SPECIFICATION_VERSION_TAG, nl.item(i).getTextContent());
+ getAddr().addExtension(SPECIFICATION_VERSION_TAG, value);
} else if (tag.equals(DESTINATION_NAME_TAG)) {
- name = nl.item(i).getTextContent();
+ name = value;
} else if (tag.equals(CONNECTION_FACTORY_TAG)) {
- getAddr().addExtension(CONNECTION_FACTORY_TAG, nl.item(i).getTextContent());
+ getAddr().addExtension(CONNECTION_FACTORY_TAG, value);
} else if (tag.equals(JNDI_CONTEXT_FACTORY_TAG)) {
- getAddr().addExtension(Context.INITIAL_CONTEXT_FACTORY, nl.item(i).getTextContent());
+ getAddr().addExtension(Context.INITIAL_CONTEXT_FACTORY, value);
} else if (tag.equals(JNDI_PKG_PREFIX_TAG)) {
- getAddr().addExtension(Context.URL_PKG_PREFIXES, nl.item(i).getTextContent());
+ getAddr().addExtension(Context.URL_PKG_PREFIXES, value);
} else if (tag.equals(JNDI_URL_TAG)) {
- uri = nl.item(i).getTextContent();
+ uri = value;
// remember to add this extension!
getAddr().addExtension(Context.PROVIDER_URL, uri);
} else if (tag.equals(MESSAGE_SELECTOR_TAG)) {
- getAddr().addExtension(MESSAGE_SELECTOR_TAG, nl.item(i).getTextContent());
+ getAddr().addExtension(MESSAGE_SELECTOR_TAG, value);
} else if (tag.equals(PERSISTENT_TAG)) {
boolean persistent = true;
- final String persistentStr = nl.item(i).getTextContent();
+ final String persistentStr = value;
if ( persistentStr != null )
persistent = Boolean.parseBoolean(persistentStr);
getAddr().addExtension(PERSISTENT_TAG, String.valueOf(persistent));
} else if (tag.equals(ACKNOWLEDGE_MODE_TAG)) {
- String ackMode = nl.item(i).getTextContent();
+ String ackMode = value;
getAddr().addExtension(ACKNOWLEDGE_MODE_TAG, String.valueOf(ackMode));
} else if (tag.equals(JMS_SECURITY_PRINCIPAL_TAG)) {
- String username = nl.item(i).getTextContent();
+ String username = value;
getAddr().addExtension(JMS_SECURITY_PRINCIPAL_TAG, String.valueOf(username));
} else if (tag.equals(JMS_SECURITY_CREDENTIAL_TAG)) {
- String password = nl.item(i).getTextContent();
+ String password = value;
getAddr().addExtension(JMS_SECURITY_CREDENTIAL_TAG, String.valueOf(password));
} else if (tag.equals(DESTINATION_TYPE_TAG)) {
- getAddr().addExtension(DESTINATION_TYPE_TAG, nl.item(i).getTextContent());
+ getAddr().addExtension(DESTINATION_TYPE_TAG, value);
} else if (tag.equals(TRANSACTED_TAG)) {
boolean transacted = false;
- final String transactedStr = nl.item(i).getTextContent();
+ final String transactedStr = value;
if ( transactedStr != null )
transacted = Boolean.parseBoolean(transactedStr);
getAddr().addExtension(TRANSACTED_TAG, String.valueOf(transacted));
- }
+ } else if (tag.equals(JNDI_PREFIXES)) {
+ jndiPrefixesValue = value ;
+ getAddr().addExtension(JNDI_PREFIXES, value);
+ } else {
+ extensions.put(tag, value);
+ }
}
}
}
+ if (jndiPrefixesValue != null) {
+ final String[] jndiPrefixes = getJndiPrefixes(jndiPrefixesValue) ;
+ for(Map.Entry<String, String> entry: extensions.entrySet()) {
+ for(String jndiPrefix: jndiPrefixes) {
+ final String tag = entry.getKey() ;
+ if (tag.startsWith(jndiPrefix)) {
+ getAddr().addExtension(tag, entry.getValue()) ;
+ break ;
+ }
+ }
+ }
+ }
if (uri != null)
setAddr(new PortReference(JMS_PROTOCOL + PROTOCOL_SEPARATOR + uri + "/" + name));
}
@@ -597,12 +625,24 @@
public final Properties getJndiEnvironment()
{
- Properties properties = new Properties();
+ final Properties properties = new Properties();
+ final String jndiPrefixesValue = getAddr().getExtensionValue(JNDI_PREFIXES) ;
+ if (jndiPrefixesValue != null)
+ {
+ properties.put(JNDI_PREFIXES, jndiPrefixesValue) ;
+ }
+ final String[] jndiPrefixes = getJndiPrefixes(jndiPrefixesValue) ;
+
Iterator<Extension> iter = getAddr().getExtensions();
while (iter.hasNext()) {
Extension extension = iter.next();
- if (extension.getTag().startsWith("java.naming.") && extension.getValue()!=null) {
- properties.put(extension.getTag(), extension.getValue());
+
+ for(String jndiPrefix: jndiPrefixes)
+ {
+ if (extension.getTag().startsWith(jndiPrefix) && extension.getValue()!=null) {
+ properties.put(extension.getTag(), extension.getValue());
+ break ;
+ }
}
}
@@ -615,6 +655,30 @@
return properties;
}
+
+ /**
+ * Get the list of JNDI extension prefixes.
+ * @param jndiPrefixesValue The JNDI prefix list or null if default.
+ * @return The list of JNDI extension prefixes.
+ */
+ public static String[] getJndiPrefixes(final String jndiPrefixesValue)
+ {
+ final Set<String> jndiPrefixesSet = new TreeSet<String>();
+ jndiPrefixesSet.add("java.naming.") ;
+ if (jndiPrefixesValue != null)
+ {
+ final String[] values = jndiPrefixesValue.split(",") ;
+ for(String value: values)
+ {
+ final String trim = value.trim() ;
+ if (trim.length() > 0)
+ {
+ jndiPrefixesSet.add(trim) ;
+ }
+ }
+ }
+ return jndiPrefixesSet.toArray(new String[jndiPrefixesSet.size()]) ;
+ }
/**
* @return the message selector for this EPR, or <code>null</code> if none
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/ListenerUtil.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/ListenerUtil.java 2008-07-23 14:15:14 UTC (rev 21190)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/ListenerUtil.java 2008-07-23 14:43:06 UTC (rev 21191)
@@ -141,9 +141,17 @@
String name = tree.getRequiredAttribute(JMSEpr.DESTINATION_NAME_TAG);
Set<String> names=tree.getAttributeNames();
Properties environment = new Properties();
+ final String jndiPrefixesValue = tree.getAttribute(JMSEpr.JNDI_PREFIXES) ;
+ if (jndiPrefixesValue != null) {
+ environment.put(JMSEpr.JNDI_PREFIXES, jndiPrefixesValue) ;
+ }
+ final String[] jndiPrefixes = JMSEpr.getJndiPrefixes(jndiPrefixesValue) ;
for (String attributeName : names) {
- if (attributeName.startsWith("java.naming.")) {
- environment.setProperty(attributeName, tree.getAttribute(attributeName));
+ for(String jndiPrefix: jndiPrefixes) {
+ if (attributeName.startsWith(jndiPrefix)) {
+ environment.setProperty(attributeName, tree.getAttribute(attributeName));
+ break ;
+ }
}
}
String type = getAttrAndWarn(tree, JMSEpr.DESTINATION_TYPE_TAG,
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JmsGatewayListener.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JmsGatewayListener.java 2008-07-23 14:15:14 UTC (rev 21190)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JmsGatewayListener.java 2008-07-23 14:43:06 UTC (rev 21191)
@@ -359,9 +359,17 @@
if (sJndiPkgPrefix != null)
environment.setProperty(Context.URL_PKG_PREFIXES, sJndiPkgPrefix);
Set<String> names = _config.getAttributeNames();
+ final String jndiPrefixesValue = _config.getAttribute(JMSEpr.JNDI_PREFIXES) ;
+ if (jndiPrefixesValue != null) {
+ environment.setProperty(JMSEpr.JNDI_PREFIXES, jndiPrefixesValue) ;
+ }
+ final String[] jndiPrefixes = JMSEpr.getJndiPrefixes(jndiPrefixesValue) ;
for (String name : names) {
- if (name.startsWith("java.naming.")) {
- environment.setProperty(name, _config.getAttribute(name));
+ for(String jndiPrefix: jndiPrefixes) {
+ if (name.startsWith(jndiPrefix)) {
+ environment.setProperty(name, _config.getAttribute(name));
+ break ;
+ }
}
}
Context oJndiCtx = NamingContextPool.getNamingContext(environment);
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/notification/NotifyJMS.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/notification/NotifyJMS.java 2008-07-23 14:15:14 UTC (rev 21190)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/notification/NotifyJMS.java 2008-07-23 14:43:06 UTC (rev 21191)
@@ -411,9 +411,13 @@
String prefix = configTrees[i].getAttribute(JMSEpr.JNDI_PKG_PREFIX_TAG);
if (prefix!=null) environment.setProperty(Context.URL_PKG_PREFIXES, prefix);
List<KeyValuePair> properties=configTrees[i].childPropertyList();
+ final String[] jndiPrefixes = JMSEpr.getJndiPrefixes(KeyValuePair.getValue(JMSEpr.JNDI_PREFIXES, properties)) ;
for (KeyValuePair property : properties) {
- if (property.getKey().startsWith("java.naming.")) {
- environment.setProperty(property.getKey(), property.getValue());
+ for(String jndiPrefix: jndiPrefixes) {
+ if (property.getKey().startsWith(jndiPrefix)) {
+ environment.setProperty(property.getKey(), property.getValue());
+ break ;
+ }
}
}
Modified: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/addressing/eprs/JMSEprUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/addressing/eprs/JMSEprUnitTest.java 2008-07-23 14:15:14 UTC (rev 21190)
+++ labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/addressing/eprs/JMSEprUnitTest.java 2008-07-23 14:43:06 UTC (rev 21191)
@@ -32,6 +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.couriers.CourierException;
import org.junit.Test;
@@ -231,6 +232,42 @@
assertEquals( transacted, jmsEpr.getTransacted() );
}
+ @Test
+ public void eprWithJndiExtensions()
+ throws CourierException, URISyntaxException
+ {
+ final String testProviderURL = "test://provider" ;
+ final String testInitialContextFactory = "test.InitialContextFactory" ;
+ final String testPrefix1 = "test.prefix1." ;
+ final String testExtension1 = testPrefix1 + "extension" ;
+ final String testExtension1Value = "testExtension1Value" ;
+ final String testPrefix2 = "test.prefix2." ;
+ final String testExtension2 = testPrefix2 + "extension" ;
+ final String testExtension2Value = "testExtension2Value" ;
+ final String testPrefixes = testPrefix1 + ", " + testPrefix2 ;
+
+ final Properties env = new Properties();
+ env.put(JMSEpr.JNDI_PREFIXES, testPrefixes);
+ env.put(Context.PROVIDER_URL, testProviderURL) ;
+ env.put(Context.INITIAL_CONTEXT_FACTORY, testInitialContextFactory) ;
+ env.put(testExtension1, testExtension1Value) ;
+ env.put(testExtension2, testExtension2Value) ;
+ env.put("exclude.extension", "excludeValue") ;
+
+ JMSEpr jmsEpr = new JMSEpr( ONE_ONE_PROTOCOL, expectedDestinationType, expectedDestination ,
+ expectedConnectionFactory, env, expectedSelector, NON_PERSISTENT,
+ AcknowledgeMode.CLIENT_ACKNOWLEDGE.toString());
+
+ final Properties eprProperties = jmsEpr.getJndiEnvironment() ;
+
+ assertEquals("JNDI property count", 5, eprProperties.size()) ;
+ assertEquals("JNDI prefixes", testPrefixes, eprProperties.get(JMSEpr.JNDI_PREFIXES)) ;
+ assertEquals("JNDI provider URL", testProviderURL, eprProperties.get(Context.PROVIDER_URL)) ;
+ assertEquals("JNDI InitialContextFactory", testInitialContextFactory, eprProperties.get(Context.INITIAL_CONTEXT_FACTORY)) ;
+ assertEquals("First extension", testExtension1Value, eprProperties.get(testExtension1)) ;
+ assertEquals("Second extension", testExtension2Value, eprProperties.get(testExtension2)) ;
+ }
+
private void assertDefaults(final String destination, final String connectionFactory, final String destinationType)
{
assertEquals( expectedDestination, destination );
More information about the jboss-svn-commits
mailing list