Author: dblevins
Date: Fri Apr  8 20:07:19 2011
New Revision: 1090420

URL: http://svn.apache.org/viewvc?rev=1090420&view=rev
Log:
OPENEJB-1183: javax.ejb.embeddable.EJBContainer
OPENEJB-1510: org.apache.openejb.OpenEjbContainer.inject(object)
Rewrite of EJBContainer and classpath scanning logic.  Faster startup, less 
memory, better exception handling, dependency injection support for the invoker.

Removed:
    openejb/trunk/openejb3/examples/simple-stateless/src/main/resources/
Modified:
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationComposer.java
    
openejb/trunk/openejb3/examples/simple-stateless/src/test/java/org/superbiz/calculator/CalculatorTest.java
    
openejb/trunk/openejb3/examples/spring-integration/src/test/java/org/superbiz/spring/MoviesTest.java

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java?rev=1090420&r1=1090419&r2=1090420&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java
 Fri Apr  8 20:07:19 2011
@@ -26,6 +26,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
+import java.util.Set;
 
 import javax.ejb.embeddable.EJBContainer;
 import javax.ejb.spi.EJBContainerProvider;
@@ -35,9 +36,22 @@ import javax.naming.NameNotFoundExceptio
 import javax.naming.NamingException;
 import org.apache.openejb.assembler.classic.AppInfo;
 import org.apache.openejb.assembler.classic.Assembler;
+import org.apache.openejb.config.AppModule;
 import org.apache.openejb.config.ConfigurationFactory;
-import org.apache.openejb.config.DeploymentsResolver;
+import org.apache.openejb.config.EjbModule;
+import org.apache.openejb.config.NewLoaderLogic;
+import org.apache.openejb.config.ValidationFailedException;
+import org.apache.openejb.jee.EjbJar;
+import org.apache.openejb.jee.ManagedBean;
+import org.apache.openejb.jee.TransactionType;
+import org.apache.openejb.jee.oejb3.EjbDeployment;
+import org.apache.openejb.jee.oejb3.OpenejbJar;
 import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.spi.ContainerSystem;
+import org.apache.openejb.util.Join;
+import org.apache.openejb.util.LogCategory;
+import org.apache.openejb.util.Logger;
+import org.apache.openejb.util.OptionsLog;
 import org.apache.xbean.naming.context.ContextFlyweight;
 
 /**
@@ -45,10 +59,14 @@ import org.apache.xbean.naming.context.C
  */
 public class OpenEjbContainer extends EJBContainer {
 
+    static Logger logger = Logger.getInstance(LogCategory.OPENEJB_STARTUP, 
OpenEjbContainer.class);
+
+    private static OpenEjbContainer instance;
+    
     private final Context context;
 
     private OpenEjbContainer(Context context) {
-        this.context = context;
+        this.context = new GlobalContext(context);
     }
 
     @Override
@@ -66,34 +84,96 @@ public class OpenEjbContainer extends EJ
         return context;
     }
 
+    public <T> T inject(T object) {
+        
+        assert object != null;
+
+        final Class<?> clazz = object.getClass();
+
+        final BeanContext context = resolve(clazz);
+
+        if (context == null) throw new 
NoInjectionMetaDataException(clazz.getName());
+        
+        final InjectionProcessor processor = new InjectionProcessor(object, 
context.getInjections(), context.getJndiContext());
+
+        try {
+            return (T) processor.createInstance();
+        } catch (OpenEJBException e) {
+            throw new InjectionException(clazz.getName(), e);
+        }
+    }
+
+    private <T> BeanContext resolve(Class<?> clazz) {
+
+        final ContainerSystem containerSystem = 
SystemInstance.get().getComponent(ContainerSystem.class);
+
+        while (clazz != null && clazz != Object.class) {
+
+            {
+                final BeanContext context = 
containerSystem.getBeanContext(clazz.getName());
+
+                if (context != null) return context;
+            }
+
+            for (BeanContext context : containerSystem.deployments()) {
+
+                if (clazz == context.getBeanClass()) return context;
+
+            }
+
+            clazz = clazz.getSuperclass();
+        }
+
+        return null;
+    }
+
+    public static class NoInjectionMetaDataException extends 
IllegalStateException {
+        public NoInjectionMetaDataException(String s) {
+            super(s);
+        }
+    }
+
+    public static class InjectionException extends IllegalStateException {
+        public InjectionException(String message, Throwable cause) {
+            super(message, cause);
+        }
+    }
 
     public static class Provider implements EJBContainerProvider {
 
         @Override
-        public EJBContainer createEJBContainer(Map<?, ?> properties) {
-            if (isOtherProvider(properties)) return null;
+        public EJBContainer createEJBContainer(Map<?, ?> map) {
+            if (isOtherProvider(map)) return null;
 
+            if (instance != null) {
+                logger.warning("EJBContainer already initialized.  Call 
ejbContainer.close() to allow reinitialization");
+                return instance;
+            }
 
-            String appId = (String) properties.get(EJBContainer.APP_NAME);
+            String appId = (String) map.get(EJBContainer.APP_NAME);
 
             try {
-                Properties props = new Properties();
-                props.put(DeploymentsResolver.DEPLOYMENTS_CLASSPATH_PROPERTY, 
Boolean.toString(false));
-                //This causes scan of the entire classpath except for default 
excludes.  This may be quite slow.
-                props.put(DeploymentsResolver.CLASSPATH_INCLUDE, ".*");
-                props.putAll(properties);
+                Properties properties = new Properties();
+                properties.putAll(map);
 
+                SystemInstance.reset();
+                SystemInstance.init(properties);
+                SystemInstance.get().setProperty("openejb.embedded", "true");
+                SystemInstance.get().setProperty(EJBContainer.class.getName(), 
"true");
 
-                OpenEJB.init(props);
+                OptionsLog.install();
 
-                ConfigurationFactory configurationFactory = new 
ConfigurationFactory();
+                OpenEJB.init(properties);
 
 
-                ClassLoader classLoader = getClass().getClassLoader();
+                final ConfigurationFactory configurationFactory = new 
ConfigurationFactory();
 
-                List<File> moduleLocations;
+                final List<File> moduleLocations;
 
-                Object modules = properties.get(EJBContainer.MODULES);
+                final Object modules = map.get(EJBContainer.MODULES);
+
+                // will be updated if needed
+                ClassLoader classLoader = getClass().getClassLoader();
 
                 if (modules instanceof String) {
 
@@ -107,6 +187,7 @@ public class OpenEjbContainer extends EJ
 
                 } else if (modules instanceof String[]) {
 
+                    // TODO Optimize this so we look specifically for modules 
by name
                     moduleLocations = 
configurationFactory.getModulesFromClassPath(null, classLoader);
 
                     int matched = 0;
@@ -127,7 +208,9 @@ public class OpenEjbContainer extends EJ
                     }
 
                     if (matched != ((String[])modules).length) {
-                        throw new IllegalStateException("some modules not 
matched on classpath");
+
+                        throw specifiedModulesNotFound();
+                        
                     }
 
                 } else if (modules instanceof File) {
@@ -152,58 +235,104 @@ public class OpenEjbContainer extends EJ
 
                 } else {
 
-                    throw new IllegalStateException("Unrecognized modules 
property");
+                    throw invalidModulesValue(modules);
 
                 }
 
 
-
                 if (moduleLocations.isEmpty()) {
-                    throw new IllegalStateException("No modules to deploy 
found");
+
+                    throw new NoModulesFoundException("No modules to deploy 
found");
+                    
+                }
+
+                // TODO With this load method we can finally do some checking 
on module ids to really implement EJBContainer.MODULES String/String[]
+                final AppModule appModule = 
configurationFactory.loadApplication(classLoader, appId, moduleLocations);
+
+                final Set<String> callers = NewLoaderLogic.callers();
+                final EjbJar ejbJar = new EjbJar();
+                final OpenejbJar openejbJar = new OpenejbJar();
+
+                for (String caller : callers) {
+
+                    final ManagedBean bean = ejbJar.addEnterpriseBean(new 
ManagedBean(caller, caller));
+
+                    // set it to bean so it can get UserTransaction injection
+                    bean.setTransactionType(TransactionType.BEAN);
+
+                    final EjbDeployment ejbDeployment = 
openejbJar.addEjbDeployment(bean);
+                    
+                    // important in case any other deploment id formats are 
specified
+                    ejbDeployment.setDeploymentId(caller);
                 }
 
-                AppInfo appInfo = 
configurationFactory.configureApplication(classLoader, appId, moduleLocations);
+                appModule.getEjbModules().add(new EjbModule(ejbJar, 
openejbJar));
 
-                Assembler assembler = 
SystemInstance.get().getComponent(Assembler.class);
+
+
+                final AppInfo appInfo;
+                try {
+
+                    appInfo = 
configurationFactory.configureApplication(appModule);
+
+                } catch (ValidationFailedException e) {
+
+                    logger.warning("configureApplication.loadFailed", 
appModule.getModuleId(), e.getMessage()); // DO not include the stacktrace in 
the message
+
+                    throw new InvalidApplicationException(e);
+
+                } catch (OpenEJBException e) {
+                    // DO NOT REMOVE THE EXCEPTION FROM THIS LOG MESSAGE
+                    // removing this message causes NO messages to be printed 
when embedded
+                    logger.warning("configureApplication.loadFailed", e, 
appModule.getModuleId(), e.getMessage());
+
+                    throw new ConfigureApplicationException(e);
+                }
+
+                final Assembler assembler = 
SystemInstance.get().getComponent(Assembler.class);
 
                 final AppContext appContext;
 
                 try {
                     appContext = assembler.createApplication(appInfo, 
classLoader);
                 } catch (Exception e) {
-                    throw new IllegalStateException("Could not deploy embedded 
app", e);
+                    throw new AssembleApplicationException(e);
                 }
 
-                final Context globalJndiContext = 
appContext.getGlobalJndiContext();
-                return new OpenEjbContainer(new ContextFlyweight() {
+                return instance = new 
OpenEjbContainer(appContext.getGlobalJndiContext());
 
-                    @Override
-                    protected Context getContext() throws NamingException {
-                        return globalJndiContext;
-                    }
+            } catch (OpenEJBException e) {
 
-                    @Override
-                    protected Name getName(Name name) throws NamingException {
-                        String first = name.get(0);
-                        if (!first.startsWith("java:")) throw new 
NameNotFoundException("Name must be in java: namespace");
-                        first = first.substring("java:".length());
-                        name = name.getSuffix(1);
-                        return name.add(0, first);
-                    }
+                throw new InitializationException(e);
 
-                    @Override
-                    protected String getName(String name) throws 
NamingException {
-                        if (!name.startsWith("java:")) throw new 
NameNotFoundException("Name must be in java: namespace");
-                        return name.substring("java:".length());
-                    }
-                });
-            } catch (OpenEJBException e) {
-                throw new IllegalStateException(e);
             } catch (MalformedURLException e) {
-                throw new IllegalStateException(e);
+
+                throw new InitializationException(e);
+
+            } catch (Exception e) {
+
+                if (e instanceof IllegalStateException) {
+
+                    throw (IllegalStateException) e;
+                }
+
+                throw new InitializationException(e);
             }
         }
 
+        // TODO, report some information
+        private IllegalStateException specifiedModulesNotFound() {
+            return new NoSuchModuleException("some modules not matched on 
classpath");
+        }
+
+        private InvalidModulesPropertyException invalidModulesValue(Object 
value) {
+            String[] spec = {"java.lang.String","java.lang.String[]", 
"java.io.File", "java.io.File[]"};
+//            TODO
+//            String[] vendor = {"java.lang.Class","java.lang.Class[]", 
"java.net.URL", "java.io.URL[]"};
+            String type = (value == null) ? null : value.getClass().getName();
+            return new InvalidModulesPropertyException(String.format("Invalid 
'%s' value '%s'. Valid values are: %s", EJBContainer.MODULES, type, 
Join.join(", ", spec)));
+        }
+
         private static boolean isOtherProvider(Map<?, ?> properties) {
             Object provider = properties.get(EJBContainer.PROVIDER);
 
@@ -229,4 +358,90 @@ public class OpenEjbContainer extends EJ
             return matches;
         }
     }
+
+    private class GlobalContext extends ContextFlyweight {
+        private final Context globalJndiContext;
+
+        public GlobalContext(Context globalJndiContext) {
+            this.globalJndiContext = globalJndiContext;
+        }
+
+        @Override
+        protected Context getContext() throws NamingException {
+            return globalJndiContext;
+        }
+
+        @Override
+        protected Name getName(Name name) throws NamingException {
+            String first = name.get(0);
+            if (!first.startsWith("java:")) throw new 
NameNotFoundException("Name must be in java: namespace");
+            first = first.substring("java:".length());
+            name = name.getSuffix(1);
+            return name.add(0, first);
+        }
+
+        @Override
+        protected String getName(String name) throws NamingException {
+            if (!name.startsWith("java:")) throw new 
NameNotFoundException("Name must be in java: namespace");
+            return name.substring("java:".length());
+        }
+
+        @Override
+        public void bind(Name name, Object obj) throws NamingException {
+            if (name.size() == 1 && "bind".equals(name.get(0))) inject(obj);
+            else super.bind(name, obj);
+        }
+
+        @Override
+        public void bind(String name, Object obj) throws NamingException {
+            if (name != null && "bind".equals(name)) inject(obj);
+            else super.bind(name, obj);
+        }
+    }
+
+    public static class InitializationException extends IllegalStateException {
+        public InitializationException(String s) {
+            super(s);
+        }
+
+        public InitializationException(Throwable cause) {
+            super(cause);
+        }
+    }
+
+    public static class InvalidModulesPropertyException extends 
InitializationException {
+        public InvalidModulesPropertyException(String s) {
+            super(s);
+        }
+    }
+
+    public static class NoSuchModuleException extends InitializationException {
+        public NoSuchModuleException(String s) {
+            super(s);
+        }
+    }
+
+    public static class NoModulesFoundException extends 
InitializationException {
+        public NoModulesFoundException(String s) {
+            super(s);
+        }
+    }
+
+    public static class ConfigureApplicationException extends 
InitializationException {
+        public ConfigureApplicationException(Throwable cause) {
+            super(cause);
+        }
+    }
+
+    public static class AssembleApplicationException extends 
InitializationException {
+        public AssembleApplicationException(Throwable cause) {
+            super(cause);
+        }
+    }
+
+    public static class InvalidApplicationException extends 
InitializationException {
+        public InvalidApplicationException(Throwable cause) {
+            super(cause);
+        }
+    }
 }

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java?rev=1090420&r1=1090419&r2=1090420&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
 Fri Apr  8 20:07:19 2011
@@ -556,6 +556,25 @@ public class ConfigurationFactory implem
      * @throws OpenEJBException on error
      */
     public AppInfo configureApplication(ClassLoader classLoader, String id, 
List<File> jarFiles) throws OpenEJBException {
+        AppModule collection = loadApplication(classLoader, id, jarFiles);
+
+        AppInfo appInfo;
+        try {
+            appInfo = configureApplication(collection);
+        } catch (ValidationFailedException e) {
+            logger.warning("configureApplication.loadFailed", 
collection.getModuleId(), e.getMessage()); // DO not include the stacktrace in 
the message
+            throw e;
+        } catch (OpenEJBException e) {
+            // DO NOT REMOVE THE EXCEPTION FROM THIS LOG MESSAGE
+            // removing this message causes NO messages to be printed when 
embedded
+            logger.warning("configureApplication.loadFailed", e, 
collection.getModuleId(), e.getMessage());
+            throw e;
+        }
+
+        return appInfo;
+    }
+
+    public AppModule loadApplication(ClassLoader classLoader, String id, 
List<File> jarFiles) throws OpenEJBException {
         final boolean standaloneModule = id == null;
         if (standaloneModule) {
             id = "";
@@ -608,21 +627,7 @@ public class ConfigurationFactory implem
                 throw e;
             }
         }
-
-        AppInfo appInfo;
-        try {
-            appInfo = configureApplication(collection);
-        } catch (ValidationFailedException e) {
-            logger.warning("configureApplication.loadFailed", id, 
e.getMessage()); // DO not include the stacktrace in the message
-            throw e;
-        } catch (OpenEJBException e) {
-            // DO NOT REMOVE THE EXCEPTION FROM THIS LOG MESSAGE
-            // removing this message causes NO messages to be printed when 
embedded
-            logger.warning("configureApplication.loadFailed", e, id, 
e.getMessage());
-            throw e;
-        }
-
-        return appInfo;
+        return collection;
     }
 
     public EjbJarInfo configureApplication(EjbJar ejbJar) throws 
OpenEJBException {

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java?rev=1090420&r1=1090419&r2=1090420&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
 Fri Apr  8 20:07:19 2011
@@ -189,18 +189,11 @@ public class DeploymentsResolver impleme
             urlSet = 
urlSet.excludePaths(System.getProperty("sun.boot.class.path", ""));
             urlSet = urlSet.exclude(".*/JavaVM.framework/.*");
 
-//            if (shouldFilter(include, exclude, requireDescriptors)) {
-//                urlSet = NewLoaderLogic.applyBuiltinExcludes(urlSet);
-//            }
-
             // save the prefiltered list of jars before excluding system apps
             // so that we can choose not to filter modules with descriptors on 
the full list
             UrlSet prefiltered = urlSet;
 
             // we should exclude system apps before and apply user properties 
after
-//            if (filterSystemApps){
-//                urlSet = 
urlSet.exclude(".*/openejb-[^/]+(.(jar|ear|war)(!/)?|/target/(test-)?classes/?)");
-//            }
 
             final IncludeExcludeFilter filter = new 
IncludeExcludeFilter(Filters.patterns(include), Filters.patterns(exclude));
             // filter using user parameters
@@ -208,9 +201,12 @@ public class DeploymentsResolver impleme
 
             if (prefiltered.size() == urlSet.size()) {
                 urlSet = NewLoaderLogic.applyBuiltinExcludes(urlSet);
+
+                if (filterSystemApps){
+                    urlSet = 
urlSet.exclude(".*/openejb-[^/]+(.(jar|ear|war)(!/)?|/target/(test-)?classes/?)");
+                }
             }
-//            urlSet = urlSet.exclude(exclude);
-//            urlSet = urlSet.include(includes);
+
 
             List<URL> urls = urlSet.getUrls();
             int size = urls.size();

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java?rev=1090420&r1=1090419&r2=1090420&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java
 Fri Apr  8 20:07:19 2011
@@ -112,10 +112,9 @@ public class JndiEncInfoBuilder {
     }
 
     public void build(JndiConsumer jndiConsumer, String ejbName, String 
moduleId, JndiEncInfo moduleJndiEnc, JndiEncInfo compJndiEnc) throws 
OpenEJBException {
-        assert ejbName != null;
-        assert moduleJndiEnc != null : format("%s moduleJndiEnc is null", 
ejbName);
-        assert compJndiEnc != null : format("%s compJndiEnc is null", ejbName);
-        assert jndiConsumer != null : format("%s jndiConsumer is null", 
ejbName);
+        assert moduleJndiEnc != null;
+        assert compJndiEnc != null;
+        assert jndiConsumer != null;
         
         URI moduleUri = null;
         if (moduleId != null) {

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationComposer.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationComposer.java?rev=1090420&r1=1090419&r2=1090420&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationComposer.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationComposer.java
 Fri Apr  8 20:07:19 2011
@@ -264,7 +264,7 @@ public class ApplicationComposer extends
                     final ContainerSystem containerSystem = 
SystemInstance.get().getComponent(ContainerSystem.class);
                     final BeanContext context = 
containerSystem.getBeanContext(javaClass.getName());
 
-                    InjectionProcessor processor = new 
InjectionProcessor(testInstance, context.getInjections(), 
context.getJndiContext());
+                    final InjectionProcessor processor = new 
InjectionProcessor(testInstance, context.getInjections(), 
context.getJndiContext());
 
                     processor.createInstance();
 

Modified: 
openejb/trunk/openejb3/examples/simple-stateless/src/test/java/org/superbiz/calculator/CalculatorTest.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/simple-stateless/src/test/java/org/superbiz/calculator/CalculatorTest.java?rev=1090420&r1=1090419&r2=1090420&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/examples/simple-stateless/src/test/java/org/superbiz/calculator/CalculatorTest.java
 (original)
+++ 
openejb/trunk/openejb3/examples/simple-stateless/src/test/java/org/superbiz/calculator/CalculatorTest.java
 Fri Apr  8 20:07:19 2011
@@ -16,8 +16,11 @@
  */
 package org.superbiz.calculator;
 
+import java.util.HashMap;
+import java.util.Map;
 import java.util.Properties;
 
+import javax.ejb.embeddable.EJBContainer;
 import javax.naming.Context;
 import javax.naming.InitialContext;
 
@@ -26,14 +29,18 @@ import junit.framework.TestCase;
 public class CalculatorTest extends TestCase {
 
        //START SNIPPET: setup  
-       private InitialContext initialContext;
+       private Context context;
 
     protected void setUp() throws Exception {
-        Properties properties = new Properties();
-        properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, 
"org.apache.openejb.client.LocalInitialContextFactory");
 
-        initialContext = new InitialContext(properties);
+//        Map<Object, Object> map = new HashMap<Object, Object>();
+//        map.put(EJBContainer.APP_NAME, "test");
+//        EJBContainer ejbContainer = EJBContainer.createEJBContainer(map);
+        EJBContainer ejbContainer = EJBContainer.createEJBContainer();
+
+        context = ejbContainer.getContext();
     }
+    
     //END SNIPPET: setup    
 
     /**
@@ -43,7 +50,7 @@ public class CalculatorTest extends Test
      */
     //START SNIPPET: remote
     public void testCalculatorViaRemoteInterface() throws Exception {
-        Object object = initialContext.lookup("CalculatorImplRemote");
+        Object object = 
context.lookup("java:global/simple-stateless/CalculatorImpl!"+CalculatorRemote.class.getName());
 
                assertNotNull(object);
                assertTrue(object instanceof CalculatorRemote);
@@ -60,7 +67,7 @@ public class CalculatorTest extends Test
      */
     //START SNIPPET: local    
     public void testCalculatorViaLocalInterface() throws Exception {
-        Object object = initialContext.lookup("CalculatorImplLocal");
+        Object object = 
context.lookup("java:global/simple-stateless/CalculatorImpl");
 
                assertNotNull(object);
                assertTrue(object instanceof CalculatorLocal);

Modified: 
openejb/trunk/openejb3/examples/spring-integration/src/test/java/org/superbiz/spring/MoviesTest.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/spring-integration/src/test/java/org/superbiz/spring/MoviesTest.java?rev=1090420&r1=1090419&r2=1090420&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/examples/spring-integration/src/test/java/org/superbiz/spring/MoviesTest.java
 (original)
+++ 
openejb/trunk/openejb3/examples/spring-integration/src/test/java/org/superbiz/spring/MoviesTest.java
 Fri Apr  8 20:07:19 2011
@@ -28,6 +28,8 @@ public class MoviesTest extends TestCase
         //Uncomment for debug logging
         //org.apache.log4j.BasicConfigurator.configure();
 
+        
System.setProperty("openejb.deployments.classpath.include",".*/spring-integration.*");
+        
         ClassPathXmlApplicationContext context = new 
ClassPathXmlApplicationContext("movies.xml");
 
         // Can I lookup the Cineplex EJB via the Spring ApplicationContext


Reply via email to