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("*******************************************"); } + }
