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 2014/04/06 21:05:32 UTC

svn commit: r1585329 - in /tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb: assembler/classic/ resource/jdbc/dbcp/ resource/jdbc/managed/local/ resource/jdbc/managed/xa/

Author: rmannibucau
Date: Sun Apr  6 19:05:31 2014
New Revision: 1585329

URL: http://svn.apache.org/r1585329
Log:
TOMEE-1169 xa datasource support

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/resource/jdbc/dbcp/DbcpDataSourceCreator.java
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/local/ManagedConnection.java
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/xa/ManagedXAConnection.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=1585329&r1=1585328&r2=1585329&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 Sun Apr  6 19:05:31 2014
@@ -2287,7 +2287,10 @@ public class Assembler extends Assembler
                 importer.doImport();
             }
 
-            logUnusedProperties(DataSourceFactory.forgetRecipe(service, serviceRecipe), serviceInfo);
+            final ObjectRecipe recipe = DataSourceFactory.forgetRecipe(service, serviceRecipe);
+            if (recipe != serviceRecipe || !serviceInfo.properties.containsKey("XaDataSource")) {
+                logUnusedProperties(recipe, serviceInfo);
+            } // else logged on xadatasource itself
 
             final Properties prop = serviceInfo.properties;
             String url = prop.getProperty("JdbcUrl", prop.getProperty("url"));
@@ -2618,7 +2621,11 @@ public class Assembler extends Assembler
         }
 
         final ObjectRecipe serviceRecipe = prepareRecipe(info);
+        final Object value = info.properties.remove("SkipImplicitAttributes"); // we don't want this one to go in recipe
         serviceRecipe.setAllProperties(info.properties);
+        if (value != null) {
+            info.properties.put("SkipImplicitAttributes", value);
+        }
 
         if (serviceLogger.isDebugEnabled()) {
             for (final Map.Entry<String, Object> entry : serviceRecipe.getProperties().entrySet()) {

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpDataSourceCreator.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpDataSourceCreator.java?rev=1585329&r1=1585328&r2=1585329&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpDataSourceCreator.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpDataSourceCreator.java Sun Apr  6 19:05:31 2014
@@ -16,12 +16,16 @@
  */
 package org.apache.openejb.resource.jdbc.dbcp;
 
+import org.apache.openejb.OpenEJB;
+import org.apache.openejb.resource.jdbc.managed.local.ManagedDataSource;
+import org.apache.openejb.resource.jdbc.managed.xa.ManagedXADataSource;
 import org.apache.openejb.resource.jdbc.pool.PoolDataSourceCreator;
 import org.apache.openejb.resource.jdbc.pool.XADataSourceResource;
 
 import javax.sql.CommonDataSource;
 import javax.sql.DataSource;
 import javax.sql.XADataSource;
+import javax.transaction.TransactionManager;
 import java.util.Properties;
 
 // just a sample showing how to implement a datasourcecreator
@@ -33,7 +37,21 @@ public class DbcpDataSourceCreator exten
     }
 
     @Override
+    public DataSource managed(final String name, final CommonDataSource ds) {
+        final TransactionManager transactionManager = OpenEJB.getTransactionManager();
+        if (ds instanceof XADataSource) {
+            return new ManagedXADataSource(ds, transactionManager);
+        }
+        return new ManagedDataSource(DataSource.class.cast(ds), transactionManager);
+    }
+
+    @Override
     public CommonDataSource pool(final String name, final String driver, final Properties properties) {
+        final String xa = String.class.cast(properties.remove("XaDataSource"));
+        if (xa != null) {
+            return XADataSourceResource.proxy(Thread.currentThread().getContextClassLoader(), xa);
+        }
+
         if (!properties.containsKey("JdbcDriver")) {
             properties.setProperty("driverClassName", driver);
         }
@@ -41,14 +59,7 @@ public class DbcpDataSourceCreator exten
 
         final BasicDataSource ds = build(BasicDataSource.class, properties);
         ds.setDriverClassName(driver);
-
-        final String xa = String.class.cast(properties.remove("XaDataSource"));
-        if (xa != null) {
-            cleanProperty(ds, "xadatasource");
-
-            final XADataSource xaDs = XADataSourceResource.proxy(Thread.currentThread().getContextClassLoader(), xa);
-            ds.setDelegate(xaDs);
-        }
+        // if (xa != null) ds.setDelegate(XADataSourceResource.proxy(Thread.currentThread().getContextClassLoader(), xa));
 
         return ds;
     }

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/local/ManagedConnection.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/local/ManagedConnection.java?rev=1585329&r1=1585328&r2=1585329&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/local/ManagedConnection.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/local/ManagedConnection.java Sun Apr  6 19:05:31 2014
@@ -118,7 +118,7 @@ public class ManagedConnection implement
                         transaction.registerSynchronization(new ClosingSynchronization(delegate, connectionByTx));
 
                         try {
-                            delegate.setAutoCommit(false);
+                            setAutoCommit(false);
                         } catch (final SQLException xae) { // we are alreay in a transaction so this can't be called from a user perspective - some XA DataSource prevents it in their code
                             final String message = "Can't set auto commit to false cause the XA datasource doesn't support it, this is likely an issue";
                             if (LOGGER.isDebugEnabled()) { // we don't want to print the exception by default
@@ -139,6 +139,10 @@ public class ManagedConnection implement
         }
     }
 
+    protected void setAutoCommit(final boolean value) throws SQLException {
+        delegate.setAutoCommit(value);
+    }
+
     private static Object invoke(final Method method, final Connection delegate, final Object[] args) throws Throwable {
         try {
             return method.invoke(delegate, args);

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/xa/ManagedXAConnection.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/xa/ManagedXAConnection.java?rev=1585329&r1=1585328&r2=1585329&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/xa/ManagedXAConnection.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/xa/ManagedXAConnection.java Sun Apr  6 19:05:31 2014
@@ -37,4 +37,9 @@ public class ManagedXAConnection extends
     public XAResource getXAResource() throws SQLException {
         return xaConnection.getXAResource();
     }
+
+    @Override
+    protected void setAutoCommit(final boolean value) throws SQLException {
+        // no-op
+    }
 }