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