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


Reply via email to