Author: rmannibucau
Date: Wed Sep 25 09:27:03 2013
New Revision: 1526142

URL: http://svn.apache.org/r1526142
Log:
TOMEE-1047 TOMEE-1046 allowing to deploy N times resource adapters (could be 
great to find a better config than system properties) + allowing to use 
existing resource as jta datasource - skipping some check if it comes from a 
resource adapter. In clear we can now use tranql

Modified:
    
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
    
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java
    
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
    
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
    
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ServiceUtils.java

Modified: 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1526142&r1=1526141&r2=1526142&view=diff
==============================================================================
--- 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
 (original)
+++ 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
 Wed Sep 25 09:27:03 2013
@@ -775,6 +775,7 @@ public class Assembler extends Assembler
                     }
                     for (final ResourceInfo outbound : connector.outbound) {
                         createResource(outbound);
+                        outbound.properties.setProperty("openejb.connector", 
"true"); // set it after as a marker but not as an attribute (no 
getOpenejb().setConnector(...))
                     }
                     for (final MdbContainerInfo inbound : connector.inbound) {
                         createContainer(inbound);

Modified: 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java?rev=1526142&r1=1526141&r2=1526142&view=diff
==============================================================================
--- 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java
 (original)
+++ 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java
 Wed Sep 25 09:27:03 2013
@@ -77,28 +77,32 @@ public class AppModule implements Deploy
         this(classLoader, jarLocation, null, false);
     }
 
-    public <T extends DeploymentModule> AppModule(final T module) {
+    public <T extends DeploymentModule> AppModule(final T... modules) {
+        final T firstModule = modules[0];
+
         this.standaloneModule = true;
-        this.classLoader = module.getClassLoader();
-        this.application = new Application(module.getModuleId());
+        this.classLoader = firstModule.getClassLoader();
+        this.application = new Application(firstModule.getModuleId());
 
-        this.id = new ID(null, application, null, module.getFile(), 
module.getModuleUri(), this);
+        this.id = new ID(null, application, null, firstModule.getFile(), 
firstModule.getModuleUri(), this);
         this.validation = new ValidationContext(this);
 
-        final Class<? extends DeploymentModule> type = module.getClass();
+        for (final T module : modules) {
+            final Class<? extends DeploymentModule> type = module.getClass();
 
-        if (type == EjbModule.class) {
-            getEjbModules().add((EjbModule) module);
-        } else if (type == ClientModule.class) {
-            getClientModules().add((ClientModule) module);
-        } else if (type == ConnectorModule.class) {
-            getConnectorModules().add((ConnectorModule) module);
-        } else if (type == WebModule.class) {
-            getWebModules().add((WebModule) module);
-        } else if (type == PersistenceModule.class) {
-            addPersistenceModule((PersistenceModule) module);
-        } else {
-            throw new IllegalArgumentException("Unknown module type: " + 
type.getName());
+            if (type == EjbModule.class) {
+                getEjbModules().add((EjbModule) module);
+            } else if (type == ClientModule.class) {
+                getClientModules().add((ClientModule) module);
+            } else if (type == ConnectorModule.class) {
+                getConnectorModules().add((ConnectorModule) module);
+            } else if (type == WebModule.class) {
+                getWebModules().add((WebModule) module);
+            } else if (type == PersistenceModule.class) {
+                addPersistenceModule((PersistenceModule) module);
+            } else {
+                throw new IllegalArgumentException("Unknown module type: " + 
type.getName());
+            }
         }
     }
 

Modified: 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java?rev=1526142&r1=1526141&r2=1526142&view=diff
==============================================================================
--- 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
 (original)
+++ 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
 Wed Sep 25 09:27:03 2013
@@ -1366,9 +1366,14 @@ public class AutoConfig implements Dynam
             if (!resourceLocal) {
                 required.put("JtaManaged", "true");
                 jtaDataSourceId = findResourceId(prefix + 
replaceJavaAndSlash(unit.getJtaDataSource()), "DataSource", required, null);
+                if (jtaDataSourceId == null) { // test with 
javax.sql.DataSource before DataSource since RA can register resources without 
our shortcut
+                    jtaDataSourceId = 
findResourceId(replaceJavaAndSlash(unit.getJtaDataSource()), 
"javax.sql.DataSource", required, null);
+                }
+                /* this shouldn't be mandatory anymore since our DataSource 
has as alias javax.sql.DataSource
                 if (jtaDataSourceId == null) {
                     jtaDataSourceId = 
findResourceId(replaceJavaAndSlash(unit.getJtaDataSource()), "DataSource", 
required, null);
                 }
+                */
             }
 
             required.put("JtaManaged", "false");

Modified: 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java?rev=1526142&r1=1526141&r2=1526142&view=diff
==============================================================================
--- 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
 (original)
+++ 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
 Wed Sep 25 09:27:03 2013
@@ -185,8 +185,28 @@ public class DeploymentLoader implements
                 final String jarLocation = URLs.toFilePath(baseUrl);
                 final ConnectorModule connectorModule = 
createConnectorModule(jarLocation, jarLocation, getOpenEJBClassLoader(), null);
 
+                final List<ConnectorModule> connectorModules = new 
ArrayList<ConnectorModule>();
+
+                // let it be able to deploy the same connector several times
+                final String id = connectorModule.getModuleId();
+                if 
(!"true".equalsIgnoreCase(SystemInstance.get().getProperty("openejb.connector." 
+ id + ".skip-default", "false"))) {
+                    connectorModules.add(connectorModule);
+                }
+
+                final String aliases = 
SystemInstance.get().getProperty("openejb.connector." + id + ".aliases");
+                if (aliases != null) {
+                    for (final String alias : aliases.split(",")) {
+                        final ConnectorModule aliasModule = 
createConnectorModule(jarLocation, jarLocation, getOpenEJBClassLoader(), alias);
+                        connectorModules.add(aliasModule);
+                    }
+                }
+
+
+
                 // Wrap the resource module with an Application Module
-                return new AppModule(connectorModule);
+                final AppModule appModule = new 
AppModule(connectorModules.toArray(new 
ConnectorModule[connectorModules.size()]));
+
+                return appModule;
             }
 
             if (WebModule.class.equals(moduleClass)) {

Modified: 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ServiceUtils.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ServiceUtils.java?rev=1526142&r1=1526141&r2=1526142&view=diff
==============================================================================
--- 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ServiceUtils.java
 (original)
+++ 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ServiceUtils.java
 Wed Sep 25 09:27:03 2013
@@ -160,7 +160,11 @@ public class ServiceUtils {
         return null;
     }
 
-    public static boolean implies(Properties required, Properties available){
+    public static boolean implies(Properties required, Properties available) {
+        if (available.containsKey("openejb.connector")) { // created from a 
connector so our JtaManaged etc can't be used
+            return true;
+        }
+
         for (Map.Entry<Object, Object> entry : required.entrySet()) {
             Object value = available.get(entry.getKey());
 


Reply via email to