Author: rmannibucau
Date: Thu Jan 10 01:01:05 2013
New Revision: 1431169
URL: http://svn.apache.org/viewvc?rev=1431169&view=rev
Log:
avoiding to create multiple configfactory + using ContextHandler without need
of proxy in BeanContext
Modified:
openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/JaxbOpenejb.java
Modified:
openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java?rev=1431169&r1=1431168&r2=1431169&view=diff
==============================================================================
---
openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
(original)
+++
openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
Thu Jan 10 01:01:05 2013
@@ -22,6 +22,7 @@ import org.apache.openejb.OpenEJBRuntime
import org.apache.openejb.OpenEjbContainer;
import org.apache.openejb.assembler.classic.AppInfo;
import org.apache.openejb.assembler.classic.Assembler;
+import org.apache.openejb.assembler.classic.OpenEjbConfigurationFactory;
import org.apache.openejb.assembler.classic.WebAppBuilder;
import org.apache.openejb.config.AppModule;
import org.apache.openejb.config.ConfigurationFactory;
@@ -165,7 +166,7 @@ public class OpenEJBDeployableContainer
}
assembler = SystemInstance.get().getComponent(Assembler.class);
- configurationFactory = new ConfigurationFactory();
+ configurationFactory = (ConfigurationFactory)
SystemInstance.get().getComponent(OpenEjbConfigurationFactory.class);
if
("true".equalsIgnoreCase(PROPERTIES.getProperty(OpenEjbContainer.OPENEJB_EMBEDDED_REMOTABLE))
&& SystemInstance.get().getComponent(WebAppBuilder.class) ==
null) {
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java?rev=1431169&r1=1431168&r2=1431169&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
Thu Jan 10 01:01:05 2013
@@ -29,6 +29,7 @@ import org.apache.openejb.core.intercept
import org.apache.openejb.core.interceptor.InterceptorInstance;
import org.apache.openejb.core.interceptor.InterceptorStack;
import org.apache.openejb.core.ivm.EjbHomeProxyHandler;
+import org.apache.openejb.core.ivm.naming.ContextWrapper;
import org.apache.openejb.core.timer.EjbTimerService;
import org.apache.openejb.core.timer.EjbTimerServiceImpl;
import org.apache.openejb.core.transaction.EjbTransactionUtil;
@@ -65,14 +66,14 @@ import javax.enterprise.context.spi.Cont
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.Bean;
import javax.naming.Context;
+import javax.naming.Name;
import javax.naming.NameNotFoundException;
+import javax.naming.NamingException;
import javax.persistence.EntityManagerFactory;
import java.lang.annotation.Annotation;
import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
-import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
@@ -269,7 +270,7 @@ public class BeanContext extends Deploym
}
this.moduleContext = moduleContext;
- this.jndiContext = (Context)
Proxy.newProxyInstance(BeanContext.class.getClassLoader(), new
Class[]{Context.class}, new ContextHandler(jndiContext));
+ this.jndiContext = new ContextHandler(jndiContext);
this.localbean = localBean;
this.componentType = componentType;
this.beanClass = beanClass;
@@ -1712,27 +1713,37 @@ public class BeanContext extends Deploym
private Method createMethod;
}
- private static class ContextHandler implements InvocationHandler {
-
- private final Context delegate;
+ private static class ContextHandler extends ContextWrapper {
public ContextHandler(final Context jndiContext) {
- delegate = jndiContext;
+ super(jndiContext);
}
@Override
- public Object invoke(final Object proxy, final Method method, final
Object[] args) throws Throwable {
+ public Object lookup(final Name name) throws NamingException {
try {
- return method.invoke(delegate, args);
- } catch (InvocationTargetException nnfe) {
- if (nnfe.getTargetException() instanceof NameNotFoundException
&& "lookup".equals(method.getName())) {
- try {
- return
method.invoke(SystemInstance.get().getComponent(ContainerSystem.class).getJNDIContext(),
args);
- } catch (InvocationTargetException nnfe2) {
- // ignore, let it be thrown
- }
+ return context.lookup(name);
+ } catch (NameNotFoundException nnfe) {
+ try {
+ return
SystemInstance.get().getComponent(ContainerSystem.class).getJNDIContext().lookup(name);
+ } catch (NameNotFoundException nnfe2) {
+ // ignore, let it be thrown
+ }
+ throw nnfe;
+ }
+ }
+
+ @Override
+ public Object lookup(String name) throws NamingException {
+ try {
+ return context.lookup(name);
+ } catch (NameNotFoundException nnfe) {
+ try {
+ return
SystemInstance.get().getComponent(ContainerSystem.class).getJNDIContext().lookup(name);
+ } catch (NameNotFoundException nnfe2) {
+ // ignore, let it be thrown
}
- throw nnfe.getTargetException();
+ throw nnfe;
}
}
}
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1431169&r1=1431168&r2=1431169&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
Thu Jan 10 01:01:05 2013
@@ -56,6 +56,7 @@ import org.apache.openejb.cdi.OptimizedL
import org.apache.openejb.cdi.ThreadSingletonServiceImpl;
import org.apache.openejb.classloader.ClassLoaderConfigurer;
import org.apache.openejb.component.ClassLoaderEnricher;
+import org.apache.openejb.config.ConfigurationFactory;
import org.apache.openejb.core.ConnectorReference;
import org.apache.openejb.core.CoreContainerSystem;
import org.apache.openejb.core.CoreUserTransaction;
@@ -292,8 +293,13 @@ public class Assembler extends Assembler
final Options options = new Options(props,
SystemInstance.get().getOptions());
final String className = options.get("openejb.configurator",
"org.apache.openejb.config.ConfigurationFactory");
- configFactory = (OpenEjbConfigurationFactory)
toolkit.newInstance(className);
+ if
("org.apache.openejb.config.ConfigurationFactory".equals(className)) {
+ configFactory = new ConfigurationFactory(); // no need to use
reflection
+ } else {
+ configFactory = (OpenEjbConfigurationFactory)
toolkit.newInstance(className);
+ }
configFactory.init(props);
+ SystemInstance.get().setComponent(OpenEjbConfigurationFactory.class,
configFactory);
}
public static void installNaming() {
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/JaxbOpenejb.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/JaxbOpenejb.java?rev=1431169&r1=1431168&r2=1431169&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/JaxbOpenejb.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/JaxbOpenejb.java
Thu Jan 10 01:01:05 2013
@@ -184,8 +184,9 @@ public abstract class JaxbOpenejb {
SAXParser parser = Saxs.namespaceAwareFactory().newSAXParser();
final ServicesJar servicesJar1 = new ServicesJar();
+ final PropertiesAdapter propertiesAdapter = new PropertiesAdapter();
- parser.parse(inputSource, new DefaultHandler(){
+ parser.parse(inputSource, new DefaultHandler() {
private ServiceProvider provider;
private StringBuilder content;
@@ -204,8 +205,8 @@ public abstract class JaxbOpenejb {
provider.setParent(att.getValue("", "parent"));
String typesString = att.getValue("", "types");
if (typesString != null){
- ListAdapter listAdapter = new ListAdapter();
- List<String> types = listAdapter.unmarshal(typesString);
+ final ListAdapter listAdapter = new ListAdapter();
+ final List<String> types =
listAdapter.unmarshal(typesString);
provider.getTypes().addAll(types);
}
servicesJar1.getServiceProvider().add(provider);
@@ -220,7 +221,6 @@ public abstract class JaxbOpenejb {
if (provider == null || content == null) return;
try {
- PropertiesAdapter propertiesAdapter = new
PropertiesAdapter();
provider.getProperties().putAll(propertiesAdapter.unmarshal(content.toString()));
} catch (Exception e) {
throw new SAXException(e);