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


Reply via email to