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