Author: dblevins
Date: Thu Jun 24 12:40:59 2010
New Revision: 957532

URL: http://svn.apache.org/viewvc?rev=957532&view=rev
Log:
Splitting up CoreDeploymentInfo into scoped contexts

Added:
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/AppContext.java
   (with props)
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BeanContext.java
   (contents, props changed)
      - copied, changed from r957453, 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/DeploymentContext.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/DeploymentContext.java
   (with props)
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ModuleContext.java
   (with props)
Modified:
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarBuilder.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
    
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/AuthorBean.java
    
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/BookBean.java
    
openejb/trunk/openejb3/container/openejb-junit/src/main/java/org/apache/openejb/junit/LocalClientRunner.java
    
openejb/trunk/openejb3/server/openejb-ejbd/src/test/java/org/apache/openejb/server/ejbd/DeploymentIndexTest.java

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=957532&r1=957531&r2=957532&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
 Thu Jun 24 12:40:59 2010
@@ -75,6 +75,7 @@ import org.apache.openejb.core.CoreUserT
 import org.apache.openejb.core.JndiFactory;
 import org.apache.openejb.core.SimpleTransactionSynchronizationRegistry;
 import org.apache.openejb.core.TransactionSynchronizationRegistryWrapper;
+import org.apache.openejb.core.AppContext;
 import org.apache.openejb.core.ivm.naming.IvmContext;
 import org.apache.openejb.core.ivm.naming.IvmJndiFactory;
 import org.apache.openejb.core.timer.EjbTimerServiceImpl;
@@ -480,6 +481,8 @@ public class Assembler extends Assembler
                 classLoader = 
ClassLoaderUtil.createClassLoader(appInfo.jarPath, new URL 
[]{generatedJar.toURI().toURL()}, classLoader);
             }
 
+            AppContext appContext = new AppContext(appInfo.jarPath, 
SystemInstance.get(), classLoader);
+            
             // JPA - Persistence Units MUST be processed first since they will 
add ClassFileTransformers
             // to the class loader which must be added before any classes are 
loaded
             PersistenceBuilder persistenceBuilder = new 
PersistenceBuilder(persistenceClassLoaderHandler);
@@ -520,7 +523,7 @@ public class Assembler extends Assembler
             List<DeploymentInfo> allDeployments = new 
ArrayList<DeploymentInfo>();
 
             // EJB
-            EjbJarBuilder ejbJarBuilder = new EjbJarBuilder(props, 
classLoader);
+            EjbJarBuilder ejbJarBuilder = new EjbJarBuilder(props, appContext);
             for (EjbJarInfo ejbJar : appInfo.ejbJars) {
                 HashMap<String, DeploymentInfo> deployments = 
ejbJarBuilder.build(ejbJar);
 

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarBuilder.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarBuilder.java?rev=957532&r1=957531&r2=957532&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarBuilder.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarBuilder.java
 Thu Jun 24 12:40:59 2010
@@ -21,6 +21,8 @@ import org.apache.openejb.Container;
 import org.apache.openejb.DeploymentInfo;
 import org.apache.openejb.OpenEJBException;
 import org.apache.openejb.core.CoreDeploymentInfo;
+import org.apache.openejb.core.ModuleContext;
+import org.apache.openejb.core.AppContext;
 import org.apache.openejb.util.Messages;
 
 import java.util.ArrayList;
@@ -33,22 +35,22 @@ import java.util.Properties;
 public class EjbJarBuilder {
     protected static final Messages messages = new 
Messages("org.apache.openejb.util.resources");
 
-    private final ClassLoader classLoader;
     private final Properties props;
+    private AppContext context;
 
-    public EjbJarBuilder(Properties props, ClassLoader classLoader) {
+    public EjbJarBuilder(Properties props, AppContext context) {
         this.props = props;
-        this.classLoader = classLoader;
+        this.context = context;
     }
 
     public HashMap<String, DeploymentInfo> build(EjbJarInfo ejbJar) throws 
OpenEJBException {
         HashMap<String, DeploymentInfo> deployments = new HashMap<String, 
DeploymentInfo>();
 
-        InterceptorBindingBuilder interceptorBindingBuilder = new 
InterceptorBindingBuilder(classLoader, ejbJar);
+        InterceptorBindingBuilder interceptorBindingBuilder = new 
InterceptorBindingBuilder(context.getClassLoader(), ejbJar);
 
         for (EnterpriseBeanInfo ejbInfo : ejbJar.enterpriseBeans) {
             try {
-                EnterpriseBeanBuilder deploymentBuilder = new 
EnterpriseBeanBuilder(classLoader, ejbInfo, ejbJar.moduleId, new 
ArrayList<String>());
+                EnterpriseBeanBuilder deploymentBuilder = new 
EnterpriseBeanBuilder(ejbInfo, new ArrayList<String>(), new 
ModuleContext(ejbJar.moduleId, context));
                 CoreDeploymentInfo deployment = (CoreDeploymentInfo) 
deploymentBuilder.build();
 
                 interceptorBindingBuilder.build(deployment, ejbInfo);
@@ -56,7 +58,9 @@ public class EjbJarBuilder {
                 deployment.setJarPath(ejbJar.jarPath);
                 deployments.put(ejbInfo.ejbDeploymentId, deployment);
 
+                // TODO: replace with get() on application context or parent
                 Container container = (Container) 
props.get(ejbInfo.containerId);
+                
                 if (container == null) throw new 
IllegalStateException("Container does not exist: " + ejbInfo.containerId + ".  
Referenced by deployment: " + deployment.getDeploymentID());
                 // Don't deploy to the container, yet. That will be done by 
deploy() once Assembler as finished configuring the DeploymentInfo
                 deployment.setContainer(container);

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java?rev=957532&r1=957531&r2=957532&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java
 Thu Jun 24 12:40:59 2010
@@ -23,7 +23,8 @@ import org.apache.openejb.OpenEJBExcepti
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.spi.ContainerSystem;
 import org.apache.openejb.core.CoreDeploymentInfo;
-import org.apache.openejb.core.DeploymentContext;
+import org.apache.openejb.core.BeanContext;
+import org.apache.openejb.core.ModuleContext;
 import org.apache.openejb.core.cmp.CmpUtil;
 import org.apache.openejb.util.Index;
 import org.apache.openejb.util.Messages;
@@ -47,15 +48,14 @@ import java.util.concurrent.TimeUnit;
 class EnterpriseBeanBuilder {
     protected static final Messages messages = new 
Messages("org.apache.openejb.util.resources");
     private final EnterpriseBeanInfo bean;
-    private final String moduleId;
     private final List<String> defaultInterceptors;
     private final BeanType ejbType;
-    private final ClassLoader cl;
     private List<Exception> warnings = new ArrayList<Exception>();
+    private ModuleContext moduleContext;
 
-    public EnterpriseBeanBuilder(ClassLoader cl, EnterpriseBeanInfo bean, 
String moduleId, List<String> defaultInterceptors) {
+    public EnterpriseBeanBuilder(EnterpriseBeanInfo bean, List<String> 
defaultInterceptors, ModuleContext moduleContext) {
+        this.moduleContext = moduleContext;
         this.bean = bean;
-        this.moduleId = moduleId;
         this.defaultInterceptors = defaultInterceptors;
 
         if (bean.type == EnterpriseBeanInfo.STATEFUL) {
@@ -74,7 +74,6 @@ class EnterpriseBeanBuilder {
         } else {
             throw new UnsupportedOperationException("No building support for 
bean type: " + bean);
         }
-        this.cl = cl;
     }
 
     public Object build() throws OpenEJBException {
@@ -120,28 +119,28 @@ class EnterpriseBeanBuilder {
         final String transactionType = bean.transactionType;
 
         // determind the injections
-        InjectionBuilder injectionBuilder = new InjectionBuilder(cl);
+        InjectionBuilder injectionBuilder = new 
InjectionBuilder(moduleContext.getClassLoader());
         List<Injection> injections = 
injectionBuilder.buildInjections(bean.jndiEnc);
 
         // build the enc
-        JndiEncBuilder jndiEncBuilder = new JndiEncBuilder(bean.jndiEnc, 
injections, transactionType, moduleId, cl);
+        JndiEncBuilder jndiEncBuilder = new JndiEncBuilder(bean.jndiEnc, 
injections, transactionType, moduleContext.getId(), 
moduleContext.getClassLoader());
         Context root = jndiEncBuilder.build();
 
-        DeploymentContext deploymentContext = new 
DeploymentContext(bean.ejbDeploymentId, cl, root);
+        BeanContext beanContext = new BeanContext(bean.ejbDeploymentId, root, 
moduleContext);
+        beanContext.getProperties().putAll(bean.properties);
+
         CoreDeploymentInfo deployment;
         if (BeanType.MESSAGE_DRIVEN != ejbType) {
-            deployment = new CoreDeploymentInfo(deploymentContext, ejbClass, 
home, remote, localhome, local, serviceEndpoint, businessLocals, 
businessRemotes, primaryKey, ejbType);
+            deployment = new CoreDeploymentInfo(beanContext, ejbClass, home, 
remote, localhome, local, serviceEndpoint, businessLocals, businessRemotes, 
primaryKey, ejbType);
         } else {
             MessageDrivenBeanInfo messageDrivenBeanInfo = 
(MessageDrivenBeanInfo) bean;
             Class mdbInterface = loadClass(messageDrivenBeanInfo.mdbInterface, 
"classNotFound.mdbInterface");
-            deployment = new CoreDeploymentInfo(deploymentContext, ejbClass, 
mdbInterface, messageDrivenBeanInfo.activationProperties);
+            deployment = new CoreDeploymentInfo(beanContext, ejbClass, 
mdbInterface, messageDrivenBeanInfo.activationProperties);
             deployment.setDestinationId(messageDrivenBeanInfo.destinationId);
         }
 
         deployment.setEjbName(bean.ejbName);
 
-        deployment.setModuleId(moduleId);
-
         deployment.setRunAs(bean.runAs);
 
         for (SecurityRoleReferenceInfo roleReferenceInfo : 
bean.securityRoleReferences) {
@@ -160,8 +159,6 @@ class EnterpriseBeanBuilder {
 
         deployment.getInjections().addAll(injections);
 
-        deployment.getProperties().putAll(bean.properties);
-
         // ejbTimeout
         deployment.setEjbTimeout(getTimeout(ejbClass, bean.timeoutMethod));
 
@@ -389,8 +386,8 @@ class EnterpriseBeanBuilder {
 //            clazz.getInterfaces();
             return clazz;
         } catch (NoClassDefFoundError e) {
-            if (clazz.getClassLoader() != cl) {
-                String message = SafeToolkit.messages.format("cl0008", 
className, clazz.getClassLoader(), cl, e.getMessage());
+            if (clazz.getClassLoader() != moduleContext.getClassLoader()) {
+                String message = SafeToolkit.messages.format("cl0008", 
className, clazz.getClassLoader(), moduleContext.getClassLoader(), 
e.getMessage());
                 throw new 
OpenEJBException(AssemblerTool.messages.format(messageCode, className, 
bean.ejbDeploymentId, message), e);
             } else {
                 String message = SafeToolkit.messages.format("cl0009", 
className, clazz.getClassLoader(), e.getMessage());
@@ -401,7 +398,7 @@ class EnterpriseBeanBuilder {
 
     private Class load(String className, String messageCode) throws 
OpenEJBException {
         try {
-            return Class.forName(className, true, cl);
+            return Class.forName(className, true, 
moduleContext.getClassLoader());
         } catch (ClassNotFoundException e) {
             String message = SafeToolkit.messages.format("cl0007", className, 
bean.codebase);
             throw new 
OpenEJBException(AssemblerTool.messages.format(messageCode, className, 
bean.ejbDeploymentId, message));

Added: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/AppContext.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/AppContext.java?rev=957532&view=auto
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/AppContext.java
 (added)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/AppContext.java
 Thu Jun 24 12:40:59 2010
@@ -0,0 +1,42 @@
+/**
+ * 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.openejb.core;
+
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.loader.Options;
+
+/**
+ * @version $Rev$ $Date$
+*/
+public class AppContext extends DeploymentContext {
+    private final SystemInstance systemInstance;
+    private final ClassLoader classLoader;
+
+    public AppContext(String id, SystemInstance systemInstance, ClassLoader 
classLoader) {
+        super(id, systemInstance.getOptions());
+        this.classLoader = classLoader;
+        this.systemInstance = systemInstance;
+    }
+
+    public ClassLoader getClassLoader() {
+        return classLoader;
+    }
+
+    public SystemInstance getSystemInstance() {
+        return systemInstance;
+    }
+}

Propchange: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/AppContext.java
------------------------------------------------------------------------------
    svn:eol-style = native

Copied: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BeanContext.java
 (from r957453, 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/DeploymentContext.java)
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BeanContext.java?p2=openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BeanContext.java&p1=openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/DeploymentContext.java&r1=957453&r2=957532&rev=957532&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/DeploymentContext.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BeanContext.java
 Thu Jun 24 12:40:59 2010
@@ -18,32 +18,35 @@ package org.apache.openejb.core;
 
 import javax.naming.Context;
 
-/**
- * @org.apache.xbean.XBean element="deploymentContext"
- */
-public class DeploymentContext {
-    private final ClassLoader classLoader;
-    private final Object id;
+public class BeanContext extends DeploymentContext {
+
+    private final ModuleContext moduleContext;
     private final Context jndiContext;
+    private Object containerData;
 
-    public DeploymentContext(Object id, ClassLoader classLoader, Context 
jndiContext) {
-        this.classLoader = classLoader;
-        this.id = id;
+    public BeanContext(String id, Context jndiContext, ModuleContext 
moduleContext) {
+        super(id, moduleContext.getOptions());
+        this.moduleContext = moduleContext;
         this.jndiContext = jndiContext;
     }
 
-    public ClassLoader getClassLoader() {
-        return classLoader;
+    public Object getContainerData() {
+        return containerData;
     }
 
-    /**
-     * @org.apache.xbean.Property alias="deploymentId"
-     */
-    public Object getId() {
-        return id;
+    public void setContainerData(Object containerData) {
+        this.containerData = containerData;
+    }
+
+    public ClassLoader getClassLoader() {
+        return moduleContext.getClassLoader();
     }
 
     public Context getJndiContext() {
         return jndiContext;
     }
+
+    public ModuleContext getModuleContext() {
+        return moduleContext;
+    }
 }

Propchange: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BeanContext.java
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author Id Revision HeadURL

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java?rev=957532&r1=957531&r2=957532&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
 Thu Jun 24 12:40:59 2010
@@ -99,17 +99,12 @@ public class CoreDeploymentInfo implemen
     private EJBHome ejbHomeRef;
     private EJBLocalHome ejbLocalHomeRef;
     private String destinationId;
-    private final Map<Class, Object> data = new HashMap<Class, Object>();
-
-    private final Properties properties = new Properties();
 
     private String ejbName;
     private String moduleId;
     private String runAs;
 
-    private Object containerData;
-
-    private final DeploymentContext context;
+    private final BeanContext context;
 
     private Method createMethod = null;
 
@@ -182,7 +177,7 @@ public class CoreDeploymentInfo implemen
         return null;
     }
 
-    public CoreDeploymentInfo(DeploymentContext context,
+    public CoreDeploymentInfo(BeanContext context,
                               Class beanClass, Class homeInterface,
                               Class remoteInterface,
                               Class localHomeInterface,
@@ -300,7 +295,7 @@ public class CoreDeploymentInfo implemen
         }
     }
 
-    public CoreDeploymentInfo(DeploymentContext context, Class beanClass, 
Class mdbInterface, Map<String, String> activationProperties) throws 
SystemException {
+    public CoreDeploymentInfo(BeanContext context, Class beanClass, Class 
mdbInterface, Map<String, String> activationProperties) throws SystemException {
         this.context = context;
         this.beanClass = beanClass;
         this.mdbInterface = mdbInterface;
@@ -325,18 +320,8 @@ public class CoreDeploymentInfo implemen
         this.destroyed = destroyed;
     }
 
-    @SuppressWarnings({"unchecked"})
-    public <T> T get(Class<T> type) {
-        return (T)data.get(type);
-    }
-
-    @SuppressWarnings({"unchecked"})
-    public <T> T set(Class<T> type, T value) {
-        return (T) data.put(type, value);
-    }
-
     public Properties getProperties() {
-        return properties;
+        return context.getProperties();
     }
 
     public List<Injection> getInjections() {
@@ -351,12 +336,22 @@ public class CoreDeploymentInfo implemen
         this.extendedEntityManagerFactories = extendedEntityManagerFactories;
     }
 
+    @SuppressWarnings({"unchecked"})
+    public <T> T get(Class<T> type) {
+        return context.get(type);
+    }
+
+    @SuppressWarnings({"unchecked"})
+    public <T> T set(Class<T> type, T value) {
+        return context.set(type, value);
+    }
+
     public Object getContainerData() {
-        return containerData;
+        return context.getContainerData();
     }
 
     public void setContainerData(Object containerData) {
-        this.containerData = containerData;
+        context.setContainerData(containerData);
     }
 
     public void setContainer(Container container) {
@@ -1102,7 +1097,7 @@ public class CoreDeploymentInfo implemen
     }
 
     public String getModuleID() {
-        return moduleId;
+        return context.getModuleContext().getId();
     }
 
     public String getRunAs() {

Added: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/DeploymentContext.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/DeploymentContext.java?rev=957532&view=auto
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/DeploymentContext.java
 (added)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/DeploymentContext.java
 Thu Jun 24 12:40:59 2010
@@ -0,0 +1,60 @@
+/**
+ * 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.openejb.core;
+
+import org.apache.openejb.loader.Options;
+
+import java.util.Properties;
+import java.util.Map;
+import java.util.HashMap;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class DeploymentContext {
+    private final String id;
+    private final Map<Class, Object> data = new HashMap<Class, Object>();
+    private final Properties properties = new Properties();
+    private Options options;
+
+    public DeploymentContext(String id, Options parent) {
+        this.id = id;
+        this.options = new Options(properties, parent);
+    }
+
+    public Properties getProperties() {
+        return properties;
+    }
+
+    @SuppressWarnings({"unchecked"})
+        public <T> T get(Class<T> type) {
+        return (T)data.get(type);
+    }
+
+    @SuppressWarnings({"unchecked"})
+        public <T> T set(Class<T> type, T value) {
+        return (T) data.put(type, value);
+    }
+
+    public Options getOptions() {
+        return options;
+    }
+
+    public String getId() {
+        return id;
+    }
+}

Propchange: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/DeploymentContext.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ModuleContext.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ModuleContext.java?rev=957532&view=auto
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ModuleContext.java
 (added)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ModuleContext.java
 Thu Jun 24 12:40:59 2010
@@ -0,0 +1,37 @@
+/**
+ * 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.openejb.core;
+
+/**
+ * @version $Rev$ $Date$
+*/
+public class ModuleContext extends DeploymentContext {
+    private final AppContext appContext;
+
+    public ModuleContext(String id, AppContext appContext) {
+        super(id, appContext.getOptions());
+        this.appContext = appContext;
+    }
+
+    public AppContext getAppContext() {
+        return appContext;
+    }
+
+    public ClassLoader getClassLoader() {
+        return appContext.getClassLoader();
+    }
+}

Propchange: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ModuleContext.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/AuthorBean.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/AuthorBean.java?rev=957532&r1=957531&r2=957532&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/AuthorBean.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/AuthorBean.java
 Thu Jun 24 12:40:59 2010
@@ -20,9 +20,12 @@ package org.apache.openejb.core.cmp.jpa;
 import org.apache.openejb.core.cmp.cmp2.Cmp2Entity;
 import org.apache.openejb.core.cmp.cmp2.SetValuedCmr;
 import org.apache.openejb.core.CoreDeploymentInfo;
-import org.apache.openejb.core.DeploymentContext;
+import org.apache.openejb.core.BeanContext;
+import org.apache.openejb.core.AppContext;
+import org.apache.openejb.core.ModuleContext;
 import org.apache.openejb.BeanType;
 import org.apache.openejb.SystemException;
+import org.apache.openejb.loader.SystemInstance;
 
 import javax.ejb.EntityBean;
 import javax.ejb.EntityContext;
@@ -33,7 +36,7 @@ public class AuthorBean implements Entit
     public static Object deploymentInfo;
     static {
         try {
-            deploymentInfo = new CoreDeploymentInfo(new 
DeploymentContext("author", Author.class.getClassLoader(), null),
+            deploymentInfo = new CoreDeploymentInfo(new BeanContext("author", 
null, new ModuleContext("", new AppContext("", SystemInstance.get(), 
Author.class.getClassLoader()))),
                     AuthorBean.class,
                     null,
                     null,

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/BookBean.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/BookBean.java?rev=957532&r1=957531&r2=957532&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/BookBean.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/BookBean.java
 Thu Jun 24 12:40:59 2010
@@ -20,9 +20,12 @@ package org.apache.openejb.core.cmp.jpa;
 import org.apache.openejb.core.cmp.cmp2.SetValuedCmr;
 import org.apache.openejb.core.cmp.cmp2.Cmp2Entity;
 import org.apache.openejb.core.CoreDeploymentInfo;
-import org.apache.openejb.core.DeploymentContext;
+import org.apache.openejb.core.BeanContext;
+import org.apache.openejb.core.AppContext;
+import org.apache.openejb.core.ModuleContext;
 import org.apache.openejb.BeanType;
 import org.apache.openejb.SystemException;
+import org.apache.openejb.loader.SystemInstance;
 
 import javax.ejb.EntityBean;
 import javax.ejb.EntityContext;
@@ -33,7 +36,7 @@ public class BookBean implements EntityB
     public static Object deploymentInfo;
     static {
         try {
-            deploymentInfo = new CoreDeploymentInfo(new 
DeploymentContext("book", Book.class.getClassLoader(), null),
+            deploymentInfo = new CoreDeploymentInfo(new BeanContext("book", 
null, new ModuleContext("", new AppContext("", SystemInstance.get(), 
Book.class.getClassLoader()))),
                     BookBean.class,
                     null,
                     null,

Modified: 
openejb/trunk/openejb3/container/openejb-junit/src/main/java/org/apache/openejb/junit/LocalClientRunner.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-junit/src/main/java/org/apache/openejb/junit/LocalClientRunner.java?rev=957532&r1=957531&r2=957532&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-junit/src/main/java/org/apache/openejb/junit/LocalClientRunner.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-junit/src/main/java/org/apache/openejb/junit/LocalClientRunner.java
 Thu Jun 24 12:40:59 2010
@@ -20,13 +20,14 @@ import org.apache.openejb.BeanType;
 import org.apache.openejb.SystemException;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.core.CoreDeploymentInfo;
-import org.apache.openejb.core.DeploymentContext;
+import org.apache.openejb.core.BeanContext;
 import org.apache.openejb.core.ThreadContext;
+import org.apache.openejb.core.AppContext;
+import org.apache.openejb.core.ModuleContext;
 import org.apache.openejb.core.transaction.JtaTransactionPolicyFactory;
 import org.apache.openejb.core.transaction.TransactionType;
 import org.apache.openejb.core.transaction.TransactionPolicy;
 import org.apache.openejb.core.ivm.naming.IvmContext;
-import org.apache.xbean.finder.ClassFinder;
 import org.junit.internal.runners.model.ReflectiveCallable;
 import org.junit.internal.runners.statements.Fail;
 import org.junit.runners.BlockJUnit4ClassRunner;
@@ -107,8 +108,8 @@ public class LocalClientRunner extends B
 
     private CoreDeploymentInfo createDeployment(Class<?> testClass) {
         try {
-            DeploymentContext deployment = new DeploymentContext(null, 
testClass.getClassLoader(), new IvmContext());
-            return new CoreDeploymentInfo(deployment, testClass, null, null, 
null, null, null, null, null, null, BeanType.MANAGED);
+            BeanContext beanContext = new BeanContext(null, new IvmContext(), 
new ModuleContext("", new AppContext("", SystemInstance.get(), 
testClass.getClassLoader())));
+            return new CoreDeploymentInfo(beanContext, testClass, null, null, 
null, null, null, null, null, null, BeanType.MANAGED);
         } catch (SystemException e) {
             throw new IllegalStateException(e);
         }

Modified: 
openejb/trunk/openejb3/server/openejb-ejbd/src/test/java/org/apache/openejb/server/ejbd/DeploymentIndexTest.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-ejbd/src/test/java/org/apache/openejb/server/ejbd/DeploymentIndexTest.java?rev=957532&r1=957531&r2=957532&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/server/openejb-ejbd/src/test/java/org/apache/openejb/server/ejbd/DeploymentIndexTest.java
 (original)
+++ 
openejb/trunk/openejb3/server/openejb-ejbd/src/test/java/org/apache/openejb/server/ejbd/DeploymentIndexTest.java
 Thu Jun 24 12:40:59 2010
@@ -21,25 +21,28 @@ import java.rmi.RemoteException;
 
 import org.apache.openejb.DeploymentInfo;
 import org.apache.openejb.SystemException;
+import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.client.EJBMetaDataImpl;
 import org.apache.openejb.client.EJBRequest;
 import org.apache.openejb.client.InterfaceType;
 import org.apache.openejb.core.CoreDeploymentInfo;
-import org.apache.openejb.core.DeploymentContext;
+import org.apache.openejb.core.BeanContext;
+import org.apache.openejb.core.AppContext;
+import org.apache.openejb.core.ModuleContext;
 import org.junit.Before;
 import org.junit.Test;
 
 public class DeploymentIndexTest {
 
     private Method method;
-    private DeploymentContext dc;
+    private BeanContext dc;
     private DeploymentInfo deploymentInfo;
     private DeploymentIndex deploymentIndex;
 
     @Before
     public void setUp() throws SystemException {
         method = Method.class.getMethods()[0];
-        dc = new DeploymentContext("aDeploymentId", null, null);
+        dc = new BeanContext("aDeploymentId", null, new ModuleContext("", new 
AppContext("", SystemInstance.get(), null)));
         deploymentInfo = new CoreDeploymentInfo(dc, DeploymentIndexTest.class, 
null, null, null, null, null, null, null, null, null);
         deploymentIndex = new DeploymentIndex(new DeploymentInfo[] { 
deploymentInfo, deploymentInfo });
     }


Reply via email to