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/28 14:11:06 UTC

svn commit: r1306283 - in /openejb/trunk/openejb/tomee/tomee-loader/src: main/java/org/apache/tomee/loader/listener/ main/java/org/apache/tomee/loader/service/ main/java/org/apache/tomee/loader/service/helper/ main/java/org/apache/tomee/loader/servlet/...

Author: tveronezi
Date: Wed Mar 28 12:11:06 2012
New Revision: 1306283

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

(in progress task)

-using what Romain did here (http://code.google.com/p/rmannibucau/source/browse/#hg%2Fopenejb%2Ftomee-webapp-ng%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Ftomee%2Fwebapp%2Fjsf).

Thanks Romain!

Added:
    openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/helper/JndiTreeHelperImpl.java
      - copied, changed from r1306242, openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/helper/JndiHelperImpl.java
    openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/helper/OpenEJBHelper.java
    openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/helper/OpenEJBHelperImpl.java
    openejb/trunk/openejb/tomee/tomee-loader/src/test/java/org/apache/tomee/loader/test/DummyEjb.java
Modified:
    openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/listener/UserSessionListener.java
    openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/ServiceContext.java
    openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/ServiceContextImpl.java
    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/main/java/org/apache/tomee/loader/service/helper/TestHelperImpl.java
    openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/servlet/JndiServlet.java
    openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/servlet/TestServlet.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/listener/UserSessionListener.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/listener/UserSessionListener.java?rev=1306283&r1=1306282&r2=1306283&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/listener/UserSessionListener.java (original)
+++ openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/listener/UserSessionListener.java Wed Mar 28 12:11:06 2012
@@ -35,11 +35,7 @@ public class UserSessionListener impleme
 
     @Override
     public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
-        final ServiceContext servletsService = (ServiceContext) httpSessionEvent.getSession().getAttribute(USER_CONTEXT);
-        if (servletsService == null) {
-            return; //do nothing
-        }
-        servletsService.close();
+        //do nothing
     }
 
     public static ServiceContext getServiceContext(HttpSession session) {

Modified: openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/ServiceContext.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/ServiceContext.java?rev=1306283&r1=1306282&r2=1306283&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/ServiceContext.java (original)
+++ openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/ServiceContext.java Wed Mar 28 12:11:06 2012
@@ -17,18 +17,16 @@
 
 package org.apache.tomee.loader.service;
 
-import javax.naming.Context;
-import java.util.List;
-import java.util.Map;
+import org.apache.tomee.loader.service.helper.JndiHelper;
+import org.apache.tomee.loader.service.helper.OpenEJBHelper;
+import org.apache.tomee.loader.service.helper.TestHelper;
 
 public interface ServiceContext {
 
-    void close();
+    OpenEJBHelper getOpenEJBHelper();
 
-    List<Map<String, Object>> getJndi(String path);
+    JndiHelper getJndiHelper();
 
-    List<Map<String, Object>> getTest();
-
-    Context getContext();
+    TestHelper getTestHelper();
 
 }

Modified: openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/ServiceContextImpl.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/ServiceContextImpl.java?rev=1306283&r1=1306282&r2=1306283&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/ServiceContextImpl.java (original)
+++ openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/ServiceContextImpl.java Wed Mar 28 12:11:06 2012
@@ -19,60 +19,37 @@ package org.apache.tomee.loader.service;
 
 import org.apache.tomee.loader.service.helper.JndiHelper;
 import org.apache.tomee.loader.service.helper.JndiHelperImpl;
+import org.apache.tomee.loader.service.helper.OpenEJBHelper;
+import org.apache.tomee.loader.service.helper.OpenEJBHelperImpl;
 import org.apache.tomee.loader.service.helper.TestHelper;
 import org.apache.tomee.loader.service.helper.TestHelperImpl;
 
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
 import java.util.List;
 import java.util.Map;
-import java.util.Properties;
 
 public class ServiceContextImpl implements ServiceContext {
-    private final Context ctx;
+    private final OpenEJBHelper openEJBHelper;
     private final JndiHelper jndiHelper;
     private final TestHelper testHelper;
 
-    public void close() {
-        if (this.ctx == null) {
-            return; //do nothing
-        }
-
-        try {
-            this.ctx.close();
-        } catch (NamingException e) {
-            throw new ServiceException(e);
-        }
-    }
-
     public ServiceContextImpl() {
-        Context ctx = null;
-        {
-            final Properties properties = new Properties();
-            properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
-            properties.put("openejb.loader", "embed");
-            try {
-                ctx = new InitialContext(properties);
-            } catch (NamingException e) {
-                throw new ServiceException(e);
-            }
-        }
-        this.ctx = ctx;
+        this.openEJBHelper = new OpenEJBHelperImpl();
         this.jndiHelper = new JndiHelperImpl(this);
         this.testHelper = new TestHelperImpl(this);
     }
 
-
-    public List<Map<String, Object>> getJndi(String path) {
-        return this.jndiHelper.getJndi(path);
+    @Override
+    public OpenEJBHelper getOpenEJBHelper() {
+        return openEJBHelper;
     }
 
-    public List<Map<String, Object>> getTest() {
-        return this.testHelper.getTestResults();
+    @Override
+    public JndiHelper getJndiHelper() {
+        return jndiHelper;
     }
 
-    public Context getContext() {
-        return this.ctx;
+    @Override
+    public TestHelper getTestHelper() {
+        return testHelper;
     }
 }

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=1306283&r1=1306282&r2=1306283&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 Wed Mar 28 12:11:06 2012
@@ -17,11 +17,10 @@
 
 package org.apache.tomee.loader.service.helper;
 
-import java.util.List;
 import java.util.Map;
 
 public interface JndiHelper {
 
-    List<Map<String, Object>> getJndi(String path);
+    Map<String, Object> getJndi();
 
 }

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=1306283&r1=1306282&r2=1306283&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 Wed Mar 28 12:11:06 2012
@@ -17,17 +17,12 @@
 
 package org.apache.tomee.loader.service.helper;
 
+import org.apache.openejb.AppContext;
 import org.apache.openejb.BeanContext;
-import org.apache.openejb.core.ivm.BaseEjbProxyHandler;
-import org.apache.openejb.loader.SystemInstance;
-import org.apache.openejb.spi.ContainerSystem;
-import org.apache.openejb.util.proxy.ProxyManager;
+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.NameClassPair;
-import javax.naming.NamingEnumeration;
 import javax.naming.NamingException;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -36,6 +31,12 @@ import java.util.Map;
 
 public class JndiHelperImpl implements JndiHelper {
 
+    public static final String CONTEXT_NODE_TYPE = "context";
+    public static final String LEAF_NODE_TYPE = "leaf";
+    public static final String APPLICATION_NODE_TYPE = "application";
+    public static final String MODULE_NODE_TYPE = "module";
+    public static final String ROOT_NODE_TYPE = "root";
+
     private final ServiceContext srvCtx;
 
     public JndiHelperImpl(ServiceContext srvCtx) {
@@ -43,78 +44,58 @@ public class JndiHelperImpl implements J
     }
 
     @Override
-    public List<Map<String, Object>> getJndi(String path) {
-        final List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
+    public Map<String, Object> getJndi() {
+        final Map<String, Object> root = JndiHelperImpl.createTreeNode(ROOT_NODE_TYPE, "/", null);
 
-        try {
-            mountJndiList(result, this.srvCtx.getContext(), path);
-        } catch (NamingException e) {
-            //Throwing a runtimeexception instead.
-            throw new ServiceException(e);
-        }
+        for (AppContext appContext : this.srvCtx.getOpenEJBHelper().getAppContexts()) {
+            final Map<String, Object> appNode = JndiHelperImpl.createTreeNode(APPLICATION_NODE_TYPE, appContext.getId(), root);
 
-        return result;
-    }
-
-    private void mountJndiList(List<Map<String, Object>> jndi, Context context, String root) throws NamingException {
-        final NamingEnumeration namingEnumeration;
-        try {
-            namingEnumeration = context.list(root);
-        } catch (NamingException e) {
-            //not found?
-            return;
-        }
-        while (namingEnumeration.hasMoreElements()) {
-            final NameClassPair pair = (NameClassPair) namingEnumeration.next();
-            final String key = pair.getName();
-
-            System.out.println("(A)");
-
-            final Object obj;
-            try {
-                obj = context.lookup(key);
-            } catch (NamingException e) {
-                //not found?
-                continue;
+            // is there a simpler way?
+            // id = guarantee unity
+            final Map<String, ModuleContext> modules = new HashMap<String, ModuleContext>();
+            for (BeanContext beanContext : appContext.getBeanContexts()) {
+                if (!beanContext.getBeanClass().equals(BeanContext.Comp.class)) {
+                    final ModuleContext moduleContext = beanContext.getModuleContext();
+                    modules.put(moduleContext.getUniqueId(), moduleContext);
+                }
             }
 
-            if (Context.class.isInstance(obj)) {
-                mountJndiList(jndi, Context.class.cast(obj), key);
-            } else {
-                final Map<String, Object> dto = new HashMap<String, Object>();
-                dto.put("path", key);
-                dto.put("name", pair.getName());
-                dto.put("value", getStr(obj));
-
-                jndi.add(dto);
+            for (ModuleContext module : modules.values()) {
+                final Map<String, Object> moduleNode = JndiHelperImpl.createTreeNode(MODULE_NODE_TYPE, appContext.getId(), appNode);
+                addSubContext(module.getModuleJndiContext(), "module", moduleNode);
             }
-        }
-    }
 
-    private void populateClassList(List<String> list, List<Class> classes) {
-        if (classes == null) {
-            return;
-        }
-        for (Class<?> cls : classes) {
-            list.add(getStr(cls));
+            addSubContext(appContext.getAppJndiContext(), "app", appNode);
+            addSubContext(appContext.getGlobalJndiContext(), "global", appNode);
         }
-    }
 
-    private BeanContext getDeployment(String deploymentID) {
-        ContainerSystem containerSystem = SystemInstance.get().getComponent(ContainerSystem.class);
-        BeanContext ejb = containerSystem.getBeanContext(deploymentID);
-        return ejb;
+        return root;
     }
 
-    private String getDeploymentId(Object ejbObj) throws NamingException {
-        final BaseEjbProxyHandler handler = (BaseEjbProxyHandler) ProxyManager.getInvocationHandler(ejbObj);
-        return getStr(handler.deploymentID);
+    private void addSubContext(final Context context, final String subContext, final Map<String, Object> parent) {
+        final Map<String, Object> subNode = JndiHelperImpl.createTreeNode(CONTEXT_NODE_TYPE, subContext, parent);
+
+        try {
+            JndiTreeHelperImpl.runOnJndiTree((Context) context.lookup(subContext), subNode);
+        } catch (NamingException e) {
+            //do nothing
+        }
     }
 
-    private String getStr(Object value) {
-        if (value == null) {
-            return null;
+    public static Map<String, Object> createTreeNode(String type, String path, Map<String, Object> parent) {
+        final Map<String, Object> result = new HashMap<String, Object>();
+        result.put("type", type);
+        result.put("path", path);
+        
+        if(parent != null) {
+            List<Map<String, Object>> children = (List<Map<String, Object>>) parent.get("children");
+            if(children == null) {
+                children = new ArrayList<Map<String, Object>>();
+                parent.put("children", children);
+            }
+            children.add(result);
         }
-        return String.valueOf(value);
+
+        return result;
     }
 }

Copied: openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/helper/JndiTreeHelperImpl.java (from r1306242, 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/JndiTreeHelperImpl.java?p2=openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/helper/JndiTreeHelperImpl.java&p1=openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/helper/JndiHelperImpl.java&r1=1306242&r2=1306283&rev=1306283&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/JndiTreeHelperImpl.java Wed Mar 28 12:11:06 2012
@@ -17,104 +17,56 @@
 
 package org.apache.tomee.loader.service.helper;
 
-import org.apache.openejb.BeanContext;
-import org.apache.openejb.core.ivm.BaseEjbProxyHandler;
-import org.apache.openejb.loader.SystemInstance;
-import org.apache.openejb.spi.ContainerSystem;
-import org.apache.openejb.util.proxy.ProxyManager;
-import org.apache.tomee.loader.service.ServiceContext;
-import org.apache.tomee.loader.service.ServiceException;
-
+import javax.naming.Binding;
 import javax.naming.Context;
-import javax.naming.NameClassPair;
 import javax.naming.NamingEnumeration;
 import javax.naming.NamingException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
-public class JndiHelperImpl implements JndiHelper {
+public class JndiTreeHelperImpl {
 
-    private final ServiceContext srvCtx;
+    private final Context context;
+    private final String path;
 
-    public JndiHelperImpl(ServiceContext srvCtx) {
-        this.srvCtx = srvCtx;
+    private JndiTreeHelperImpl(Context ctx, String name) {
+        path = name;
+        context = ctx;
     }
 
-    @Override
-    public List<Map<String, Object>> getJndi(String path) {
-        final List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
-
+    private Map<String, Object> runOnTree(final Map<String, Object> root) {
+        final NamingEnumeration<Binding> ne;
         try {
-            mountJndiList(result, this.srvCtx.getContext(), path);
+            ne = context.listBindings(path);
         } catch (NamingException e) {
-            //Throwing a runtimeexception instead.
-            throw new ServiceException(e);
+            return root;
         }
 
-        return result;
-    }
-
-    private void mountJndiList(List<Map<String, Object>> jndi, Context context, String root) throws NamingException {
-        final NamingEnumeration namingEnumeration;
-        try {
-            namingEnumeration = context.list(root);
-        } catch (NamingException e) {
-            //not found?
-            return;
-        }
-        while (namingEnumeration.hasMoreElements()) {
-            final NameClassPair pair = (NameClassPair) namingEnumeration.next();
-            final String key = pair.getName();
-
-            System.out.println("(A)");
-
-            final Object obj;
+        while (ne.hasMoreElements()) {
+            final Binding current;
             try {
-                obj = context.lookup(key);
-            } catch (NamingException e) {
-                //not found?
+                current = ne.next();
+            } catch (NamingException nnfe) {
                 continue;
             }
 
-            if (Context.class.isInstance(obj)) {
-                mountJndiList(jndi, Context.class.cast(obj), key);
-            } else {
-                final Map<String, Object> dto = new HashMap<String, Object>();
-                dto.put("path", key);
-                dto.put("name", pair.getName());
-                dto.put("value", getStr(obj));
+            final String name = current.getName();
+            final String fullName = path.concat("/").concat(name);
+            final Object obj = current.getObject();
 
-                jndi.add(dto);
+            if (obj != null && obj instanceof Context) {
+                runOnJndiTree(context, JndiHelperImpl.createTreeNode(JndiHelperImpl.CONTEXT_NODE_TYPE, name, root), fullName);
+            } else {
+                JndiHelperImpl.createTreeNode(JndiHelperImpl.LEAF_NODE_TYPE, fullName, root);
             }
         }
+        return root;
     }
 
-    private void populateClassList(List<String> list, List<Class> classes) {
-        if (classes == null) {
-            return;
-        }
-        for (Class<?> cls : classes) {
-            list.add(getStr(cls));
-        }
+    private static Map<String, Object> runOnJndiTree(final Context ctx, final Map<String, Object> root, final String prefix) {
+        return (new JndiTreeHelperImpl(ctx, prefix)).runOnTree(root);
     }
 
-    private BeanContext getDeployment(String deploymentID) {
-        ContainerSystem containerSystem = SystemInstance.get().getComponent(ContainerSystem.class);
-        BeanContext ejb = containerSystem.getBeanContext(deploymentID);
-        return ejb;
-    }
-
-    private String getDeploymentId(Object ejbObj) throws NamingException {
-        final BaseEjbProxyHandler handler = (BaseEjbProxyHandler) ProxyManager.getInvocationHandler(ejbObj);
-        return getStr(handler.deploymentID);
-    }
-
-    private String getStr(Object value) {
-        if (value == null) {
-            return null;
-        }
-        return String.valueOf(value);
+    public static Map<String, Object> runOnJndiTree(final Context ctx, final Map<String, Object> root) {
+        return (new JndiTreeHelperImpl(ctx, "")).runOnTree(root);
     }
 }

Added: openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/helper/OpenEJBHelper.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/helper/OpenEJBHelper.java?rev=1306283&view=auto
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/helper/OpenEJBHelper.java (added)
+++ openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/helper/OpenEJBHelper.java Wed Mar 28 12:11:06 2012
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.tomee.loader.service.helper;
+
+import org.apache.openejb.AppContext;
+
+import javax.naming.NamingException;
+import java.util.List;
+
+public interface OpenEJBHelper {
+
+    List<AppContext> getAppContexts();
+    Object lookup(String path) throws NamingException;
+
+}

Added: openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/helper/OpenEJBHelperImpl.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/helper/OpenEJBHelperImpl.java?rev=1306283&view=auto
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/helper/OpenEJBHelperImpl.java (added)
+++ openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/helper/OpenEJBHelperImpl.java Wed Mar 28 12:11:06 2012
@@ -0,0 +1,131 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.tomee.loader.service.helper;
+
+import org.apache.openejb.AppContext;
+import org.apache.openejb.BeanContext;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.spi.ContainerSystem;
+
+import javax.naming.NamingException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+public class OpenEJBHelperImpl implements OpenEJBHelper {
+    private final ContainerSystem container = SystemInstance.get().getComponent(ContainerSystem.class);
+
+    @Override
+    public List<AppContext> getAppContexts() {
+        return container.getAppContexts();
+    }
+
+    @Override
+    public Object lookup(String path) throws NamingException {
+        return container.getJNDIContext().lookup(path);
+    }
+
+    public AppContext app(final String name) {
+        for (AppContext appContext : getAppContexts()) {
+            final String appName = appContext.getId();
+            if (appName.equals(name)) {
+                return appContext;
+            }
+        }
+        return null;
+    }
+
+    public BeanContext bean(final String app, final String name) {
+        AppContext appCtx = app(app);
+        if (appCtx == null) {
+            return null;
+        }
+        for (BeanContext ctx : appCtx.getBeanContexts()) {
+            if (ctx.getDeploymentID().equals(name)) {
+                return ctx;
+            }
+        }
+        return null;
+    }
+
+    public Method method(final String app, final String name, final long id) {
+        final BeanContext bean = bean(app, name);
+        if (bean != null) {
+            final Collection<MethodInfo> methods = methods(baseClass(bean));
+            for (MethodInfo method : methods) {
+                if (method.getId() == id) {
+                    return method.getMethod();
+                }
+            }
+        }
+        return null;
+    }
+
+    public Class<?> baseClass(BeanContext beanContext) {
+        if (beanContext.isLocalbean()) {
+            return beanContext.getBeanClass();
+        } else if (beanContext.getBusinessLocalInterfaces().size() > 0) {
+            return beanContext.getBusinessLocalInterface();
+        } else if (beanContext.getBusinessRemoteInterface() != null) {
+            return beanContext.getBusinessRemoteInterface();
+        }
+        return beanContext.getBeanClass();
+    }
+
+    public List<MethodInfo> methods(Class<?> beanClass) {
+        final List<MethodInfo> methods = new ArrayList<MethodInfo>();
+        Class<?> current = beanClass;
+        do {
+            for (Method method : current.getDeclaredMethods()) {
+                methods.add(new MethodInfo(method.toGenericString()
+                        .replace(beanClass.getName().concat("."), "")
+                        .replace("java.lang.", ""),
+                        method.hashCode(), method));
+            }
+            current = current.getSuperclass();
+        } while (current != null && !current.equals(Object.class));
+        return methods;
+    }
+
+
+
+    public static class MethodInfo {
+        private String signature;
+        private long id;
+        private Method method;
+
+        public MethodInfo(String signature, long id, Method mtd) {
+            this.signature = signature;
+            this.id = id;
+            this.method = mtd;
+        }
+
+        public String getSignature() {
+            return signature;
+        }
+
+        public long getId() {
+            return id;
+        }
+
+        public Method getMethod() {
+            return method;
+        }
+    }
+}

Modified: openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/helper/TestHelperImpl.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/helper/TestHelperImpl.java?rev=1306283&r1=1306282&r2=1306283&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/helper/TestHelperImpl.java (original)
+++ openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/service/helper/TestHelperImpl.java Wed Mar 28 12:11:06 2012
@@ -18,10 +18,7 @@
 package org.apache.tomee.loader.service.helper;
 
 import org.apache.tomee.loader.service.ServiceContext;
-import org.apache.tomee.loader.service.ServiceException;
 
-import javax.naming.Context;
-import javax.naming.NamingException;
 import java.io.File;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
@@ -87,7 +84,7 @@ public class TestHelperImpl implements T
             }
 
             try {
-                final Object obj = lookup(this.srvCtx.getContext(), Object.class, "");
+                final Object obj = this.srvCtx.getOpenEJBHelper().lookup("");
                 if (obj.getClass().getName().equals("org.apache.openejb.core.ivm.naming.IvmContext")) {
                     result.add(createDTO("testLookup", true));
                 } else {
@@ -100,16 +97,6 @@ public class TestHelperImpl implements T
         return result;
     }
 
-    public <T> T lookup(Context ctx, Class<T> cls, String path) {
-        final Object obj;
-        try {
-            obj = ctx.lookup(path);
-        } catch (NamingException e) {
-            throw new ServiceException(e);
-        }
-        return cls.cast(obj);
-    }
-
     private Map<String, Object> createDTO(String key, boolean success) {
         Map<String, Object> result = new HashMap<String, Object>();
         result.put("key", key);

Modified: openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/servlet/JndiServlet.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/servlet/JndiServlet.java?rev=1306283&r1=1306282&r2=1306283&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/servlet/JndiServlet.java (original)
+++ openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/servlet/JndiServlet.java Wed Mar 28 12:11:06 2012
@@ -27,7 +27,6 @@ import javax.servlet.http.HttpServletReq
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
 public class JndiServlet extends HttpServlet {
@@ -47,8 +46,8 @@ public class JndiServlet extends HttpSer
         resp.getWriter().write(json);
     }
 
-    public List<Map<String, Object>> get(HttpServletRequest req) throws NamingException {
-        return UserSessionListener.getServiceContext(req.getSession()).getJndi("");
+    public Map<String, Object> get(HttpServletRequest req) throws NamingException {
+        return UserSessionListener.getServiceContext(req.getSession()).getJndiHelper().getJndi();
     }
 
 }

Modified: openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/servlet/TestServlet.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/servlet/TestServlet.java?rev=1306283&r1=1306282&r2=1306283&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/servlet/TestServlet.java (original)
+++ openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/servlet/TestServlet.java Wed Mar 28 12:11:06 2012
@@ -48,8 +48,7 @@ public class TestServlet extends HttpSer
     }
 
     private List<Map<String, Object>> get(HttpServletRequest req) throws NamingException {
-        return UserSessionListener.getServiceContext(req.getSession()).getTest();
-
+        return UserSessionListener.getServiceContext(req.getSession()).getTestHelper().getTestResults();
     }
 
 }

Added: 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=1306283&view=auto
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-loader/src/test/java/org/apache/tomee/loader/test/DummyEjb.java (added)
+++ openejb/trunk/openejb/tomee/tomee-loader/src/test/java/org/apache/tomee/loader/test/DummyEjb.java Wed Mar 28 12:11:06 2012
@@ -0,0 +1,11 @@
+package org.apache.tomee.loader.test;
+
+import javax.ejb.Stateless;
+
+@Stateless
+public class DummyEjb {
+
+    public String sayHi() {
+        return "Hi, buddy!";
+    }
+}

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=1306283&r1=1306282&r2=1306283&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 Wed Mar 28 12:11:06 2012
@@ -20,21 +20,35 @@ import org.apache.tomee.loader.service.S
 import org.apache.tomee.loader.service.ServiceContextImpl;
 import org.junit.Test;
 
-import java.util.List;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
 import java.util.Map;
+import java.util.Properties;
 
 public class UserSessionTest {
 
     @Test()
     public void test() throws Exception {
+        {
+            final Properties properties = new Properties();
+            properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+            properties.put("openejb.loader", "embed");
+            try {
+                new InitialContext(properties);
+            } catch (NamingException e) {
+                throw new RuntimeException(e);
+            }
+        }
 
         final ServiceContext service = new ServiceContextImpl();
-        final List<Map<String, Object>> result = service.getJndi("");
+        final Map<String, Object> result = service.getJndiHelper().getJndi();
         org.junit.Assert.assertNotNull(result);
         org.junit.Assert.assertFalse(result.isEmpty());
 
-        for(Map<String, Object> bean : result) {
-            System.out.println("BEAN -> " + bean);
-        }
+        System.out.println("*******************************************");
+        System.out.println(result);
+        System.out.println("*******************************************");
     }
+
 }