You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by tv...@apache.org on 2012/03/30 13:37:57 UTC

svn commit: r1307370 - in /openejb/trunk/openejb/tomee/tomee-loader/src: main/java/org/apache/tomee/loader/service/helper/ test/java/org/apache/tomee/loader/test/

Author: tveronezi
Date: Fri Mar 30 11:37:56 2012
New Revision: 1307370

URL: http://svn.apache.org/viewvc?rev=1307370&view=rev
Log:
https://issues.apache.org/jira/browse/TOMEE-142

(in progress task)

-preparing code for the "ejb invoker" feature

Modified:
    openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/helper/JndiHelper.java
    openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/helper/JndiHelperImpl.java
    openejb/trunk/openejb/tomee/tomee-loader/src/test/java/org/apache/tomee/loader/test/DummyEjb.java
    openejb/trunk/openejb/tomee/tomee-loader/src/test/java/org/apache/tomee/loader/test/UserSessionTest.java

Modified: openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/helper/JndiHelper.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/helper/JndiHelper.java?rev=1307370&r1=1307369&r2=1307370&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/helper/JndiHelper.java (original)
+++ openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/helper/JndiHelper.java Fri Mar 30 11:37:56 2012
@@ -17,6 +17,7 @@
 
 package org.apache.tomee.loader.service.helper;
 
+import javax.naming.Context;
 import java.lang.reflect.Method;
 import java.util.List;
 import java.util.Map;
@@ -24,6 +25,11 @@ import java.util.Map;
 public interface JndiHelper {
 
     Map<String, Object> getJndi();
+
     List<Method> getJndiMethods(String path);
 
+    Context getContext(String user, String password);
+
+    Object invokeJndiMethod(Context context, String path, String methodName, Object... params);
+
 }

Modified: openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/helper/JndiHelperImpl.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/helper/JndiHelperImpl.java?rev=1307370&r1=1307369&r2=1307370&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/helper/JndiHelperImpl.java (original)
+++ openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/helper/JndiHelperImpl.java Fri Mar 30 11:37:56 2012
@@ -21,9 +21,12 @@ import org.apache.openejb.AppContext;
 import org.apache.openejb.BeanContext;
 import org.apache.openejb.ModuleContext;
 import org.apache.tomee.loader.service.ServiceContext;
+import org.apache.tomee.loader.service.ServiceException;
 
 import javax.naming.Context;
+import javax.naming.InitialContext;
 import javax.naming.NamingException;
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -31,6 +34,7 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Properties;
 
 public class JndiHelperImpl implements JndiHelper {
 
@@ -61,6 +65,67 @@ public class JndiHelperImpl implements J
     }
 
     @Override
+    public Context getContext(String user, String password) {
+        final Properties ctxParams = new Properties();
+        ctxParams.put("java.naming.factory.initial", "org.apache.openejb.client.LocalInitialContextFactory");
+
+        if (user != null && !"".equals(user.trim())) {
+            ctxParams.put("java.naming.security.principal", user);
+        }
+
+        if (password != null) {
+            ctxParams.put("java.naming.security.credentials", password);
+        }
+
+        final Context ctx;
+        try {
+            ctx = new InitialContext(ctxParams);
+        } catch (NamingException e) {
+            throw new ServiceException(e);
+        }
+        return ctx;
+    }
+
+
+    @Override
+    public Object invokeJndiMethod(Context context, String path, String methodName, Object... params) {
+        final Object obj;
+        try {
+            obj = context.lookup(path);
+        } catch (NamingException e) {
+            throw new ServiceException(e);
+        }
+        final Class<?> cls = obj.getClass();
+
+        final Method method;
+        try {
+            if(params == null) {
+                method = cls.getMethod(methodName);
+            } else {
+                final Class<?>[] parameterTypes = new Class<?>[params.length];
+                for (int i = 0; i < params.length; i++) {
+                    parameterTypes[i] = params[i].getClass();
+                }
+                method = cls.getMethod(methodName, parameterTypes);
+            }
+        } catch (NoSuchMethodException e) {
+            throw new ServiceException(e);
+        }
+
+        final Object result;
+        try {
+            result = method.invoke(obj, params);
+
+        } catch (IllegalAccessException e) {
+            throw new ServiceException(e);
+        } catch (InvocationTargetException e) {
+            throw new ServiceException(e);
+        }
+        return result;
+    }
+
+
+    @Override
     public Map<String, Object> getJndi() {
         final Map<String, Object> root = JndiHelperImpl.createTreeNode(ROOT_NODE_TYPE, "/", null);
 
@@ -134,7 +199,7 @@ public class JndiHelperImpl implements J
             }
             resultingPath.append(leafName);
 
-            jndiEntry.put("path", resultingPath.toString());
+            jndiEntry.put("path", "java:" + resultingPath.toString());
             return;
         }
 

Modified: openejb/trunk/openejb/tomee/tomee-loader/src/test/java/org/apache/tomee/loader/test/DummyEjb.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-loader/src/test/java/org/apache/tomee/loader/test/DummyEjb.java?rev=1307370&r1=1307369&r2=1307370&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-loader/src/test/java/org/apache/tomee/loader/test/DummyEjb.java (original)
+++ openejb/trunk/openejb/tomee/tomee-loader/src/test/java/org/apache/tomee/loader/test/DummyEjb.java Fri Mar 30 11:37:56 2012
@@ -21,7 +21,7 @@ import javax.ejb.Stateless;
 @Stateless
 public class DummyEjb {
 
-    public String sayHi() {
-        return "Hi, buddy!";
+    public String sayHi(String name) {
+        return "Hi " + name + "!";
     }
 }

Modified: openejb/trunk/openejb/tomee/tomee-loader/src/test/java/org/apache/tomee/loader/test/UserSessionTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-loader/src/test/java/org/apache/tomee/loader/test/UserSessionTest.java?rev=1307370&r1=1307369&r2=1307370&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-loader/src/test/java/org/apache/tomee/loader/test/UserSessionTest.java (original)
+++ openejb/trunk/openejb/tomee/tomee-loader/src/test/java/org/apache/tomee/loader/test/UserSessionTest.java Fri Mar 30 11:37:56 2012
@@ -46,6 +46,8 @@ public class UserSessionTest {
 
         final ServiceContext service = new ServiceContextImpl();
         final Map<String, Object> result = service.getJndiHelper().getJndi();
+        final Context context = service.getJndiHelper().getContext(null, null);
+
         org.junit.Assert.assertNotNull(result);
         org.junit.Assert.assertFalse(result.isEmpty());
 
@@ -58,15 +60,19 @@ public class UserSessionTest {
         for (String name : names) {
             Object srv = null;
             try {
-                srv = service.getOpenEJBHelper().lookup(name);
+                srv = context.lookup(name);
 
             } catch (NamingException e) {
                 //not found
             }
 
             if (DummyEjb.class.isInstance(srv)) {
-                final DummyEjb dummyEjb = DummyEjb.class.cast(srv);
-                System.out.println(name + " -> dummyEjb.sayHi() -> " + dummyEjb.sayHi());
+                System.out.println(name + " -> dummyEjb.sayHi() -> " + service.getJndiHelper().invokeJndiMethod(
+                        context,
+                        name,
+                        "sayHi",
+                        "buddy"
+                ));
                 showMethods(service, name);
             } else {
                 if (srv == null) {
@@ -79,11 +85,11 @@ public class UserSessionTest {
         }
         System.out.println("*******************************************");
     }
-    
+
     private void showMethods(final ServiceContext service, String name) {
         //show methods
         final List<Method> methods = service.getJndiHelper().getJndiMethods(name);
-        for(Method method : methods) {
+        for (Method method : methods) {
             System.out.println("    METHOD -> " + method);
         }
     }