You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2011/09/02 00:44:12 UTC

svn commit: r1164293 - in /openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb: assembler/classic/ config/

Author: rmannibucau
Date: Thu Sep  1 22:44:11 2011
New Revision: 1164293

URL: http://svn.apache.org/viewvc?rev=1164293&view=rev
Log:
setting resources at app level\nTODO:\n* read openejb.xml in the app classloader and add resources\n* remove some warning about unused fields for datasource definition support

Modified:
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/AppInfo.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/Module.java

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/AppInfo.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/AppInfo.java?rev=1164293&r1=1164292&r2=1164293&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/AppInfo.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/AppInfo.java Thu Sep  1 22:44:11 2011
@@ -35,6 +35,7 @@ public class AppInfo extends InfoObject 
     public final List<PersistenceUnitInfo> persistenceUnits = new ArrayList<PersistenceUnitInfo>();
     public final List<String> libs = new ArrayList<String>();
     public final Set<String> watchedResources = new TreeSet<String>();
+    public final Set<ResourceInfo> resourceInfos = new TreeSet<ResourceInfo>();
     public final JndiEncInfo globalJndiEnc = new JndiEncInfo();
     public final JndiEncInfo appJndiEnc = new JndiEncInfo();
     public String cmpMappingsXml;

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java?rev=1164293&r1=1164292&r2=1164293&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java Thu Sep  1 22:44:11 2011
@@ -339,6 +339,7 @@ public class AnnotationDeployer implemen
     public static class DiscoverAnnotatedBeans implements DynamicDeployer {
         public AppModule deploy(AppModule appModule) throws OpenEJBException {
             for (EjbModule ejbModule : appModule.getEjbModules()) {
+                ejbModule.setAppModule(appModule);
                 setModule(ejbModule);
                 try {
                     deploy(ejbModule);
@@ -347,6 +348,7 @@ public class AnnotationDeployer implemen
                 }
             }
             for (ClientModule clientModule : appModule.getClientModules()) {
+                clientModule.setAppModule(appModule);
                 setModule(clientModule);
                 try {
                     deploy(clientModule);
@@ -355,6 +357,7 @@ public class AnnotationDeployer implemen
                 }
             }
             for (ConnectorModule connectorModule : appModule.getConnectorModules()) {
+                connectorModule.setAppModule(appModule);
                 setModule(connectorModule);
                 try {
                     deploy(connectorModule);
@@ -363,6 +366,7 @@ public class AnnotationDeployer implemen
                 }
             }
             for (WebModule webModule : appModule.getWebModules()) {
+                webModule.setAppModule(appModule);
                 setModule(webModule);
                 try {
                     deploy(webModule);
@@ -1288,7 +1292,7 @@ public class AnnotationDeployer implemen
 
             for (DataSourceDefinition dsDef : datasources) {
                 org.apache.openejb.config.sys.Resource def = getDatasourceDefinitaion(dsDef);
-                module.getResources().add(def);
+                module.addResource(def);
             }
         }
 

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java?rev=1164293&r1=1164292&r2=1164293&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java Thu Sep  1 22:44:11 2011
@@ -19,7 +19,6 @@ package org.apache.openejb.config;
 import org.apache.openejb.OpenEJBException;
 import org.apache.openejb.assembler.classic.AppInfo;
 import org.apache.openejb.assembler.classic.ClientInfo;
-import org.apache.openejb.assembler.classic.CommonInfoObject;
 import org.apache.openejb.assembler.classic.ConnectorInfo;
 import org.apache.openejb.assembler.classic.EjbJarInfo;
 import org.apache.openejb.assembler.classic.EnterpriseBeanInfo;
@@ -66,7 +65,6 @@ import org.apache.openejb.util.MakeTxLoo
 import org.apache.openejb.util.Messages;
 import org.apache.openejb.util.References;
 
-import javax.sql.DataSource;
 import javax.xml.bind.JAXBException;
 import java.io.File;
 import java.io.IOException;
@@ -109,6 +107,8 @@ class AppInfoBuilder {
         if (appInfo.appId == null) throw new IllegalArgumentException("AppInfo.appId cannot be null");
         if (appInfo.path == null) appInfo.path = appInfo.appId;
 
+        buildAppResources(appModule, appInfo);
+
         //
         //  J2EE Connectors
         //
@@ -170,7 +170,6 @@ class AppInfoBuilder {
                 ejbJarInfo.portInfos.addAll(configureWebservices(ejbModule.getWebservices()));
                 ejbJarInfo.uniqueId = ejbModule.getUniqueId();
                 ejbJarInfo.repositories = ejbModule.getRepositories();
-                copyDatasources(ejbModule, ejbJarInfo);
                 configureWebserviceSecurity(ejbJarInfo, ejbModule);
 
                 ejbJarInfos.put(ejbModule, ejbJarInfo);
@@ -271,18 +270,16 @@ class AppInfoBuilder {
 
     }
 
-    private void copyDatasources(Module module, CommonInfoObject info) {
+    private void buildAppResources(AppModule module, AppInfo info) {
         for (Resource def : module.getResources()) {
-            if (!DataSource.class.getName().equals(def.getType())) {
-                continue;
-            }
-
             ResourceInfo resourceInfo = new ResourceInfo();
-            resourceInfo.id = module.getUniqueId() + "/" + def.getJndi().replace("java:", "");
+            resourceInfo.id = module.getModuleId() + "/" + def.getJndi().replace("java:", "");
 
             resourceInfo.service = "Resource";
             resourceInfo.types.add(def.getType());
             resourceInfo.properties = def.getProperties();
+
+            info.resourceInfos.add(resourceInfo);
         }
     }
 

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java?rev=1164293&r1=1164292&r2=1164293&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java Thu Sep  1 22:44:11 2011
@@ -17,6 +17,8 @@
 package org.apache.openejb.config;
 
 import java.util.HashSet;
+
+import org.apache.openejb.config.sys.Resource;
 import org.apache.openejb.jee.Application;
 import org.apache.openejb.jee.jpa.EntityMappings;
 
@@ -44,6 +46,7 @@ public class AppModule implements Deploy
     private final List<ClientModule> clientModules = new ArrayList<ClientModule>();
     private final List<EjbModule> ejbModules = new ArrayList<EjbModule>();
     private final List<PersistenceModule> persistenceModules = new ArrayList<PersistenceModule>();
+    private final Collection<Resource> resources = new ArrayList<Resource>();
     private final ClassLoader classLoader;
     private EntityMappings cmpMappings;
     private final Map<String,Object> altDDs = new HashMap<String,Object>();
@@ -252,6 +255,10 @@ public class AppModule implements Deploy
         return watchedResources;
     }
 
+    public Collection<Resource> getResources() {
+        return resources;
+    }
+
     public Collection<DeploymentModule> getDeploymentModule() {
         ArrayList<DeploymentModule> modules = new ArrayList<DeploymentModule>();
         modules.addAll(ejbModules);

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java?rev=1164293&r1=1164292&r2=1164293&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java Thu Sep  1 22:44:11 2011
@@ -146,6 +146,8 @@ public class AutoConfig implements Dynam
     public synchronized AppModule deploy(AppModule appModule) throws OpenEJBException {
         AppResources appResources = new AppResources(appModule);
 
+        processDataSourceDefinitions(appModule);
+
         for (EjbModule ejbModule : appModule.getEjbModules()) {
             processActivationConfig(ejbModule);
         }
@@ -766,8 +768,6 @@ public class AutoConfig implements Dynam
             ejbModule.setOpenejbJar(openejbJar);
         }
 
-        processDataSourceDefinitions(ejbModule);
-
         Map<String, EjbDeployment> deployments = openejbJar.getDeploymentsByEjbName();
 
         for (EnterpriseBean bean : ejbModule.getEjbJar().getEnterpriseBeans()) {
@@ -827,7 +827,7 @@ public class AutoConfig implements Dynam
         }
     }
 
-    private void processDataSourceDefinitions(Module module) throws OpenEJBException {
+    private void processDataSourceDefinitions(AppModule module) throws OpenEJBException {
         Collection<Resource> datasources = module.getResources();
 
         for (Resource datasource : datasources) {
@@ -844,7 +844,7 @@ public class AutoConfig implements Dynam
             properties.remove("LoginTimeout");
 
             ResourceInfo resourceInfo = configFactory.configureService(datasource, ResourceInfo.class);
-            installResource(module.getUniqueId(), resourceInfo);
+            installResource(module.getModuleId(), resourceInfo);
         }
 
         datasources.clear();

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/Module.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/Module.java?rev=1164293&r1=1164292&r2=1164293&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/Module.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/Module.java Thu Sep  1 22:44:11 2011
@@ -19,12 +19,8 @@ package org.apache.openejb.config;
 import org.apache.openejb.config.sys.Resource;
 import org.apache.openejb.jee.bval.ValidationConfigType;
 
-import java.util.ArrayList;
-import java.util.Collection;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Map;
-import java.util.Set;
 
 public class Module {
     private static int currentId = 1; // unique id to be able to bind something for each module in the jndi tree
@@ -36,7 +32,7 @@ public class Module {
     private ValidationConfigType validationConfig;
     private final Map<String, Object> altDDs = new HashMap<String, Object>();
     private String uniqueId;
-    private final Collection<Resource> resources = new ArrayList<Resource>();
+    private AppModule appModule = null;
 
     public Module() {
         uniqueId = Integer.toString(currentId++);
@@ -74,7 +70,13 @@ public class Module {
         this.classLoader = classLoader;
     }
 
-    public Collection<Resource> getResources() {
-        return resources;
+    public void addResource(Resource resource) {
+        if (appModule != null) {
+            appModule.getResources().add(resource);
+        }
+    }
+
+    public void setAppModule(AppModule appModule) {
+        this.appModule = appModule;
     }
 }