Author: rmannibucau
Date: Tue Aug 14 15:59:23 2012
New Revision: 1372951
URL: http://svn.apache.org/viewvc?rev=1372951&view=rev
Log:
queue and topic management in client (as connection factory - to rework later)
Modified:
openejb/trunk/openejb/server/openejb-client/src/main/java/org/apache/openejb/client/JNDIContext.java
Modified:
openejb/trunk/openejb/server/openejb-client/src/main/java/org/apache/openejb/client/JNDIContext.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-client/src/main/java/org/apache/openejb/client/JNDIContext.java?rev=1372951&r1=1372950&r2=1372951&view=diff
==============================================================================
---
openejb/trunk/openejb/server/openejb-client/src/main/java/org/apache/openejb/client/JNDIContext.java
(original)
+++
openejb/trunk/openejb/server/openejb-client/src/main/java/org/apache/openejb/client/JNDIContext.java
Tue Aug 14 15:59:23 2012
@@ -314,24 +314,15 @@ public class JNDIContext implements Init
String url = uri.getSchemeSpecificPart();
return new ClientDataSource(driver, url, null, null);
} else if (scheme.equals("connectionfactory")) {
- uri = new URI(uri.getSchemeSpecificPart());
- String driver = uri.getScheme();
- String url = uri.getSchemeSpecificPart();
- ClassLoader classLoader =
Thread.currentThread().getContextClassLoader();
- if (classLoader == null) getClass().getClassLoader();
- if (classLoader == null) ClassLoader.getSystemClassLoader();
- try {
- Class<?> clazz = Class.forName(driver, true, classLoader);
- Constructor<?> constructor =
clazz.getConstructor(String.class);
- Object connectionFactory = constructor.newInstance(url);
- return connectionFactory;
- } catch (Exception e) {
- throw new IllegalStateException("Cannot use
ConnectionFactory in client VM without the classh: "+driver, e);
- }
+ return build(uri);
} else if (scheme.equals("javamail")) {
return javax.mail.Session.getDefaultInstance(new Properties());
} else if (scheme.equals("orb")) {
return getDefaultOrb();
+ } else if (scheme.equals("queue")) {
+ return build(uri);
+ } else if (scheme.equals("topic")) {
+ return build(uri);
} else {
throw new UnsupportedOperationException("Unsupported Naming
URI scheme '" + scheme + "'");
}
@@ -340,6 +331,22 @@ public class JNDIContext implements Init
}
}
+ private Object build(final URI inputUri) throws URISyntaxException {
+ final URI uri = new URI(inputUri.getSchemeSpecificPart());
+ String driver = uri.getScheme();
+ String url = uri.getSchemeSpecificPart();
+ ClassLoader classLoader =
Thread.currentThread().getContextClassLoader();
+ if (classLoader == null) getClass().getClassLoader();
+ if (classLoader == null) ClassLoader.getSystemClassLoader();
+ try {
+ final Class<?> clazz = Class.forName(driver, true, classLoader);
+ final Constructor<?> constructor =
clazz.getConstructor(String.class);
+ return constructor.newInstance(url);
+ } catch (Exception e) {
+ throw new IllegalStateException("Cannot use " + driver + " with
parameter " + url, e);
+ }
+ }
+
private DataSource createDataSource(DataSourceMetaData dataSourceMetaData)
{
return new ClientDataSource(dataSourceMetaData);
}