Author: gawor
Date: Tue Sep 21 15:27:23 2010
New Revision: 999462

URL: http://svn.apache.org/viewvc?rev=999462&view=rev
Log:
OPENEJB-1359: Inject app/AppName & module/ModuleName. Use module-name as 
moduleId if set

Added:
    
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/ModuleNameInjectionTest.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/config/ClientModule.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConnectorModule.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbModule.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/WebModule.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=999462&r1=999461&r2=999462&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
 Tue Sep 21 15:27:23 2010
@@ -501,7 +501,7 @@ public class Assembler extends Assembler
         List<Injection> appInjections = 
injectionBuilder.buildInjections(appInfo.globalJndiEnc);
         
appInjections.addAll(injectionBuilder.buildInjections(appInfo.appJndiEnc));
         Context globalJndiContext = new JndiEncBuilder(appInfo.globalJndiEnc, 
appInjections, null, classLoader).build(JndiEncBuilder.JndiScope.global);
-        Context appJndiContext = new JndiEncBuilder(appInfo.appJndiEnc, 
appInjections, null, classLoader).build(JndiEncBuilder.JndiScope.app);
+        Context appJndiContext = new JndiEncBuilder(appInfo.appJndiEnc, 
appInjections, appInfo.appId, classLoader).build(JndiEncBuilder.JndiScope.app);
 
         try {
             // Generate the cmp2/cmp1 concrete subclasses

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ClientModule.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ClientModule.java?rev=999462&r1=999461&r2=999462&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ClientModule.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ClientModule.java
 Tue Sep 21 15:27:23 2010
@@ -18,7 +18,6 @@ package org.apache.openejb.config;
 
 import org.apache.openejb.jee.ApplicationClient;
 import org.apache.xbean.finder.AbstractFinder;
-import org.apache.xbean.finder.ClassFinder;
 
 import java.util.Map;
 import java.util.HashMap;
@@ -51,8 +50,10 @@ public class ClientModule implements Dep
         this.jarLocation = jarLocation;
         this.mainClass = mainClass;
 
-        if (moduleId == null){
-            if (applicationClient != null && applicationClient.getId() != 
null){
+        if (moduleId == null) {
+            if (applicationClient != null && applicationClient.getModuleName() 
!= null) {
+                moduleId = applicationClient.getModuleName();
+            } else if (applicationClient != null && applicationClient.getId() 
!= null) {
                 moduleId = applicationClient.getId();
             } else {
                 File file = new File(jarLocation);

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConnectorModule.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConnectorModule.java?rev=999462&r1=999461&r2=999462&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConnectorModule.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConnectorModule.java
 Tue Sep 21 15:27:23 2010
@@ -50,8 +50,10 @@ public class ConnectorModule implements 
         this.classLoader = classLoader;
         this.jarLocation = jarLocation;
 
-        if (moduleId == null){
-            if (connector != null && connector.getId() != null){
+        if (moduleId == null) {
+            if (connector != null && connector.getModuleName() != null) {
+                moduleId = connector.getModuleName();
+            } else if (connector != null && connector.getId() != null) { 
                 moduleId = connector.getId();
             } else {
                 File file = new File(jarLocation);

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbModule.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbModule.java?rev=999462&r1=999461&r2=999462&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbModule.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbModule.java
 Tue Sep 21 15:27:23 2010
@@ -22,7 +22,6 @@ import org.apache.openejb.jee.EjbJar;
 import org.apache.openejb.jee.Webservices;
 import org.apache.openejb.jee.oejb3.OpenejbJar;
 import org.apache.xbean.finder.AbstractFinder;
-import org.apache.xbean.finder.ClassFinder;
 
 import java.io.File;
 import java.util.Map;
@@ -53,11 +52,11 @@ public class EjbModule implements WsModu
 
     private ClientModule clientModule;
 
-    public EjbModule(EjbJar ejbJar){
+    public EjbModule(EjbJar ejbJar) {
         this(Thread.currentThread().getContextClassLoader(), null, ejbJar, 
null);
     }
 
-    public EjbModule(EjbJar ejbJar, OpenejbJar openejbJar){
+    public EjbModule(EjbJar ejbJar, OpenejbJar openejbJar) {
         this(Thread.currentThread().getContextClassLoader(), null, ejbJar, 
openejbJar);
     }
 
@@ -80,13 +79,15 @@ public class EjbModule implements WsModu
         }
         this.jarLocation = jarURI;
 
-        if (moduleId == null){
-            if (ejbJar != null && ejbJar.getId() != null && 
!ejbJar.getId().equals("")){
+        if (moduleId == null) {
+            if (ejbJar != null && ejbJar.getModuleName() != null) {
+                moduleId = ejbJar.getModuleName();
+            } else if (ejbJar != null && ejbJar.getId() != null) {
                 moduleId = ejbJar.getId();
             } else {
                 File file = new File(jarURI);
                 moduleId = file.getName();
-                if (moduleId == null){
+                if (moduleId == null) {
                     moduleId = jarURI;
                 } else if (moduleId.endsWith(".jar")) {
                     moduleId = moduleId.substring(0, moduleId.length() - 
".jar".length() );

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/WebModule.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/WebModule.java?rev=999462&r1=999461&r2=999462&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/WebModule.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/WebModule.java
 Tue Sep 21 15:27:23 2010
@@ -23,14 +23,12 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
-import java.util.concurrent.atomic.AtomicReference;
 
 import org.apache.openejb.jee.FacesConfig;
 import org.apache.openejb.jee.TldTaglib;
 import org.apache.openejb.jee.WebApp;
 import org.apache.openejb.jee.Webservices;
 import org.apache.xbean.finder.AbstractFinder;
-import org.apache.xbean.finder.ClassFinder;
 
 /**
  * @version $Rev$ $Date$
@@ -71,8 +69,10 @@ public class WebModule implements WsModu
 
         if (webApp != null) webApp.setContextRoot(contextRoot);
 
-        if (moduleId == null){
-            if (webApp != null && webApp.getId() != null){
+        if (moduleId == null) {
+            if (webApp != null && webApp.getModuleName() != null) {
+                moduleId = webApp.getModuleName();
+            } else if (webApp != null && webApp.getId() != null) {
                 moduleId = webApp.getId();
             } else {
                 File file = new File(jarLocation);

Added: 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/ModuleNameInjectionTest.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/ModuleNameInjectionTest.java?rev=999462&view=auto
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/ModuleNameInjectionTest.java
 (added)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/ModuleNameInjectionTest.java
 Tue Sep 21 15:27:23 2010
@@ -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.openejb.config;
+
+import javax.annotation.Resource;
+import javax.ejb.SessionContext;
+import javax.ejb.Stateless;
+import javax.naming.InitialContext;
+
+import junit.framework.TestCase;
+
+import org.apache.openejb.assembler.classic.Assembler;
+import org.apache.openejb.assembler.classic.ProxyFactoryInfo;
+import org.apache.openejb.assembler.classic.SecurityServiceInfo;
+import org.apache.openejb.assembler.classic.StatelessSessionContainerInfo;
+import org.apache.openejb.assembler.classic.TransactionServiceInfo;
+import org.apache.openejb.core.ivm.naming.InitContextFactory;
+import org.apache.openejb.jee.Application;
+import org.apache.openejb.jee.EjbJar;
+import org.apache.openejb.jee.EnvEntry;
+import org.apache.openejb.jee.InjectionTarget;
+import org.apache.openejb.jee.StatelessBean;
+
+/**
+ * @version $Revision$ $Date$
+ */
+public class ModuleNameInjectionTest extends TestCase {
+
+    public void testInjections() throws Exception {       
+        InitialContext ctx = new InitialContext();
+
+        Object object = ctx.lookup("WidgetBeanLocal");
+
+        assertTrue("instanceof widget", object instanceof Widget);
+
+        Widget widget = (Widget) object;
+
+        assertEquals("myApp", widget.getAppName());
+        assertEquals("myEjbModule", widget.getModuleName());
+    }
+
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        System.setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY, 
InitContextFactory.class.getName());
+
+        ConfigurationFactory config = new ConfigurationFactory();
+        Assembler assembler = new Assembler();
+
+        
assembler.createProxyFactory(config.configureService(ProxyFactoryInfo.class));
+        
assembler.createTransactionManager(config.configureService(TransactionServiceInfo.class));
+        
assembler.createSecurityService(config.configureService(SecurityServiceInfo.class));
+
+        // containers
+        StatelessSessionContainerInfo statelessContainerInfo = 
config.configureService(StatelessSessionContainerInfo.class);
+        statelessContainerInfo.properties.setProperty("TimeOut", "10");
+        statelessContainerInfo.properties.setProperty("MaxSize", "0");
+        statelessContainerInfo.properties.setProperty("StrictPooling", 
"false");
+        assembler.createContainer(statelessContainerInfo);
+
+        // Setup the descriptor information
+
+        StatelessBean bean = new StatelessBean(WidgetBean.class);
+        bean.addBusinessLocal(Widget.class.getName());
+        bean.addBusinessRemote(RemoteWidget.class.getName());
+
+        EjbJar ejbJar = new EjbJar();
+        ejbJar.setModuleName("myEjbModule");
+        ejbJar.addEnterpriseBean(bean);
+                
+        EnvEntry entry;
+        
+        entry = new EnvEntry("moduleName", (String) null, null);
+        entry.setLookupName("java:module/ModuleName");
+        entry.getInjectionTarget().add((new 
InjectionTarget(WidgetBean.class.getName(), "moduleName")));
+        bean.getEnvEntry().add(entry);
+        
+        entry = new EnvEntry("appName", (String) null, null);
+        entry.setLookupName("java:app/AppName");
+        entry.getInjectionTarget().add((new 
InjectionTarget(WidgetBean.class.getName(), "appName")));
+        bean.getEnvEntry().add(entry);
+
+        AppModule app = new AppModule(this.getClass().getClassLoader(), 
"test-app", new Application("myApp"), false);
+        app.getEjbModules().add(new EjbModule(ejbJar));
+
+        assembler.createApplication(config.configureApplication(app));
+    }
+    
+    public static interface Widget {
+        String getModuleName();
+        String getAppName();
+    }
+
+    public static interface RemoteWidget extends Widget {
+    }
+
+    @Stateless
+    public static class WidgetBean implements Widget, RemoteWidget {
+
+        private SessionContext sessionContext;
+        
+        @Resource
+        private String appName;
+
+        @Resource
+        private String moduleName;
+
+        public String getAppName() {
+            return appName;
+        }
+        
+        public String getModuleName() {
+            return moduleName;         
+        }
+    }
+}

Propchange: 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/ModuleNameInjectionTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/ModuleNameInjectionTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/ModuleNameInjectionTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain


Reply via email to