You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by gn...@apache.org on 2014/06/02 10:14:09 UTC
svn commit: r1599114 - in /aries/trunk/transaction: transaction-itests/
transaction-jdbc/
transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/
transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/
Author: gnodet
Date: Mon Jun 2 08:14:08 2014
New Revision: 1599114
URL: http://svn.apache.org/r1599114
Log:
[ARIES-1150] Add support for creating non xa DataSource
Added:
aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/AbstractMCFFactory.java
- copied, changed from r1599113, aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/XADataSourceMCFFactory.java
aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/DataSourceMCFFactory.java
Modified:
aries/trunk/transaction/transaction-itests/pom.xml
aries/trunk/transaction/transaction-jdbc/pom.xml
aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/RecoverableDataSource.java
aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/XADataSourceMCFFactory.java
Modified: aries/trunk/transaction/transaction-itests/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-itests/pom.xml?rev=1599114&r1=1599113&r2=1599114&view=diff
==============================================================================
--- aries/trunk/transaction/transaction-itests/pom.xml (original)
+++ aries/trunk/transaction/transaction-itests/pom.xml Mon Jun 2 08:14:08 2014
@@ -78,7 +78,7 @@
<groupId>org.apache.aries.transaction</groupId>
<artifactId>org.apache.aries.transaction.jdbc</artifactId>
<scope>test</scope>
- <version>2.0.1-SNAPSHOT</version>
+ <version>2.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.aries.transaction</groupId>
Modified: aries/trunk/transaction/transaction-jdbc/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-jdbc/pom.xml?rev=1599114&r1=1599113&r2=1599114&view=diff
==============================================================================
--- aries/trunk/transaction/transaction-jdbc/pom.xml (original)
+++ aries/trunk/transaction/transaction-jdbc/pom.xml Mon Jun 2 08:14:08 2014
@@ -31,7 +31,7 @@
<groupId>org.apache.aries.transaction</groupId>
<artifactId>org.apache.aries.transaction.jdbc</artifactId>
<name>Apache Aries Transaction Enlisting JDBC Datasource</name>
- <version>2.0.1-SNAPSHOT</version>
+ <version>2.1.0-SNAPSHOT</version>
<packaging>bundle</packaging>
<scm>
Modified: aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/RecoverableDataSource.java
URL: http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/RecoverableDataSource.java?rev=1599114&r1=1599113&r2=1599114&view=diff
==============================================================================
--- aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/RecoverableDataSource.java (original)
+++ aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/RecoverableDataSource.java Mon Jun 2 08:14:08 2014
@@ -19,11 +19,14 @@
package org.apache.aries.transaction.jdbc;
import org.apache.aries.transaction.AriesTransactionManager;
+import org.apache.aries.transaction.jdbc.internal.AbstractMCFFactory;
import org.apache.aries.transaction.jdbc.internal.ConnectionManagerFactory;
+import org.apache.aries.transaction.jdbc.internal.DataSourceMCFFactory;
import org.apache.aries.transaction.jdbc.internal.Recovery;
import org.apache.aries.transaction.jdbc.internal.XADataSourceMCFFactory;
import org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement;
+import javax.sql.CommonDataSource;
import javax.sql.DataSource;
import javax.sql.XADataSource;
import java.io.PrintWriter;
@@ -42,7 +45,7 @@ import java.sql.SQLFeatureNotSupportedEx
*/
public class RecoverableDataSource implements DataSource {
- private XADataSource dataSource;
+ private CommonDataSource dataSource;
private AriesTransactionManager transactionManager;
private String name;
private String exceptionSorter = "all";
@@ -55,7 +58,7 @@ public class RecoverableDataSource imple
private boolean pooling = true;
private int poolMaxSize = 10;
private int poolMinSize = 0;
- private String transaction = "xa";
+ private String transaction;
private DataSource delegate;
@@ -68,11 +71,11 @@ public class RecoverableDataSource imple
}
/**
- * The XADataSource to wrap.
+ * The CommonDataSource to wrap.
*
* @org.apache.xbean.Property required=true
*/
- public void setDataSource(XADataSource dataSource) {
+ public void setDataSource(CommonDataSource dataSource) {
this.dataSource = dataSource;
}
@@ -161,7 +164,20 @@ public class RecoverableDataSource imple
* @org.apache.xbean.InitMethod
*/
public void start() throws Exception {
- XADataSourceMCFFactory mcf = new XADataSourceMCFFactory();
+ AbstractMCFFactory mcf;
+ if (dataSource instanceof DataSource) {
+ mcf = new DataSourceMCFFactory();
+ if (transaction == null) {
+ transaction = "local";
+ }
+ } else if (dataSource instanceof XADataSource) {
+ mcf = new XADataSourceMCFFactory();
+ if (transaction == null) {
+ transaction = "xa";
+ }
+ } else {
+ throw new IllegalArgumentException("dataSource must be of type javax.sql.DataSource/XADataSource");
+ }
mcf.setDataSource(dataSource);
mcf.setExceptionSorterAsString(exceptionSorter);
mcf.setUserName(username);
@@ -183,7 +199,9 @@ public class RecoverableDataSource imple
delegate = (DataSource) mcf.getConnectionFactory().createConnectionFactory(cm.getConnectionManager());
- Recovery.recover(name, dataSource, transactionManager);
+ if (dataSource instanceof XADataSource) {
+ Recovery.recover(name, (XADataSource) dataSource, transactionManager);
+ }
}
//---------------------------
Copied: aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/AbstractMCFFactory.java (from r1599113, aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/XADataSourceMCFFactory.java)
URL: http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/AbstractMCFFactory.java?p2=aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/AbstractMCFFactory.java&p1=aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/XADataSourceMCFFactory.java&r1=1599113&r2=1599114&rev=1599114&view=diff
==============================================================================
--- aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/XADataSourceMCFFactory.java (original)
+++ aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/AbstractMCFFactory.java Mon Jun 2 08:14:08 2014
@@ -18,45 +18,33 @@
*/
package org.apache.aries.transaction.jdbc.internal;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.resource.spi.ManagedConnectionFactory;
+import javax.sql.CommonDataSource;
+import javax.sql.XADataSource;
+
import org.tranql.connector.AllExceptionsAreFatalSorter;
-import org.tranql.connector.CredentialExtractor;
import org.tranql.connector.ExceptionSorter;
import org.tranql.connector.NoExceptionsAreFatalSorter;
-import org.tranql.connector.jdbc.AbstractXADataSourceMCF;
import org.tranql.connector.jdbc.ConfigurableSQLStateExceptionSorter;
import org.tranql.connector.jdbc.KnownSQLStateExceptionSorter;
-import javax.resource.ResourceException;
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ResourceAdapterInternalException;
-import javax.sql.XAConnection;
-import javax.sql.XADataSource;
-
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.List;
+public abstract class AbstractMCFFactory {
-public class XADataSourceMCFFactory {
-
- private XADataSource dataSource;
+ private CommonDataSource dataSource;
private ExceptionSorter exceptionSorter = new AllExceptionsAreFatalSorter();
private String userName;
private String password;
- private ManagedConnectionFactory connectionFactory;
+ ManagedConnectionFactory connectionFactory;
public ManagedConnectionFactory getConnectionFactory() {
return connectionFactory;
}
- public void init() throws Exception {
- if (dataSource == null) {
- throw new IllegalArgumentException("dataSource must be set");
- }
- if (connectionFactory == null) {
- connectionFactory = new XADataSourceMCF();
- }
- }
+ public abstract void init() throws Exception;
public void setExceptionSorterAsString(String sorter) {
if ("all".equalsIgnoreCase(sorter)) {
@@ -78,11 +66,11 @@ public class XADataSourceMCFFactory {
}
}
- public XADataSource getDataSource() {
+ public CommonDataSource getDataSource() {
return dataSource;
}
- public void setDataSource(XADataSource dataSource) {
+ public void setDataSource(CommonDataSource dataSource) {
this.dataSource = dataSource;
}
@@ -110,34 +98,4 @@ public class XADataSourceMCFFactory {
this.password = password;
}
- public class XADataSourceMCF extends AbstractXADataSourceMCF<XADataSource> {
-
- public XADataSourceMCF() {
- super(XADataSourceMCFFactory.this.dataSource, XADataSourceMCFFactory.this.exceptionSorter);
- }
-
- public String getUserName() {
- return userName;
- }
-
- public String getPassword() {
- return password;
- }
-
- protected XAConnection getPhysicalConnection(CredentialExtractor credentialExtractor) throws ResourceException {
- try {
- String userName = credentialExtractor.getUserName();
- String password = credentialExtractor.getPassword();
- if (userName != null) {
- return xaDataSource.getXAConnection(userName, password);
- } else {
- return xaDataSource.getXAConnection();
- }
- } catch (SQLException e) {
- throw new ResourceAdapterInternalException("Unable to obtain physical connection to " + xaDataSource, e);
- }
- }
-
- }
-
}
Added: aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/DataSourceMCFFactory.java
URL: http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/DataSourceMCFFactory.java?rev=1599114&view=auto
==============================================================================
--- aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/DataSourceMCFFactory.java (added)
+++ aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/DataSourceMCFFactory.java Mon Jun 2 08:14:08 2014
@@ -0,0 +1,50 @@
+/*
+ * 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.aries.transaction.jdbc.internal;
+
+import javax.sql.DataSource;
+
+import org.tranql.connector.jdbc.AbstractLocalDataSourceMCF;
+
+public class DataSourceMCFFactory extends AbstractMCFFactory {
+
+ @Override
+ public void init() throws Exception {
+ if (getDataSource() == null) {
+ throw new IllegalArgumentException("dataSource must be set");
+ }
+ if (connectionFactory == null) {
+ connectionFactory = new DataSourceMCF();
+ }
+ }
+
+ public class DataSourceMCF extends AbstractLocalDataSourceMCF<DataSource> {
+ public DataSourceMCF() {
+ super((DataSource) DataSourceMCFFactory.this.getDataSource(), DataSourceMCFFactory.this.getExceptionSorter(), true);
+ }
+
+ public String getUserName() {
+ return DataSourceMCFFactory.this.getUserName();
+ }
+
+ public String getPassword() {
+ return DataSourceMCFFactory.this.getPassword();
+ }
+ }
+}
Modified: aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/XADataSourceMCFFactory.java
URL: http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/XADataSourceMCFFactory.java?rev=1599114&r1=1599113&r2=1599114&view=diff
==============================================================================
--- aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/XADataSourceMCFFactory.java (original)
+++ aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/XADataSourceMCFFactory.java Mon Jun 2 08:14:08 2014
@@ -36,21 +36,10 @@ import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
-public class XADataSourceMCFFactory {
-
- private XADataSource dataSource;
- private ExceptionSorter exceptionSorter = new AllExceptionsAreFatalSorter();
- private String userName;
- private String password;
-
- private ManagedConnectionFactory connectionFactory;
-
- public ManagedConnectionFactory getConnectionFactory() {
- return connectionFactory;
- }
+public class XADataSourceMCFFactory extends AbstractMCFFactory {
public void init() throws Exception {
- if (dataSource == null) {
+ if (getDataSource() == null) {
throw new IllegalArgumentException("dataSource must be set");
}
if (connectionFactory == null) {
@@ -58,72 +47,22 @@ public class XADataSourceMCFFactory {
}
}
- public void setExceptionSorterAsString(String sorter) {
- if ("all".equalsIgnoreCase(sorter)) {
- this.exceptionSorter = new AllExceptionsAreFatalSorter();
- } else if ("none".equalsIgnoreCase(sorter)) {
- this.exceptionSorter = new NoExceptionsAreFatalSorter();
- } else if ("known".equalsIgnoreCase(sorter)) {
- this.exceptionSorter = new KnownSQLStateExceptionSorter();
- } else if (sorter.toLowerCase().startsWith("custom(") && sorter.endsWith(")")) {
- List<String> states = new ArrayList<String>();
- for (String s : sorter.substring(7, sorter.length() - 2).split(",")) {
- if (s != null && s.length() > 0) {
- states.add(s);
- }
- }
- this.exceptionSorter = new ConfigurableSQLStateExceptionSorter(states);
- } else {
- throw new IllegalArgumentException("Unknown exceptionSorter " + sorter);
- }
- }
-
- public XADataSource getDataSource() {
- return dataSource;
- }
-
- public void setDataSource(XADataSource dataSource) {
- this.dataSource = dataSource;
- }
-
- public ExceptionSorter getExceptionSorter() {
- return exceptionSorter;
- }
-
- public void setExceptionSorter(ExceptionSorter exceptionSorter) {
- this.exceptionSorter = exceptionSorter;
- }
-
- public String getUserName() {
- return userName;
- }
-
- public void setUserName(String userName) {
- this.userName = userName;
- }
-
- public String getPassword() {
- return password;
- }
-
- public void setPassword(String password) {
- this.password = password;
- }
-
public class XADataSourceMCF extends AbstractXADataSourceMCF<XADataSource> {
public XADataSourceMCF() {
- super(XADataSourceMCFFactory.this.dataSource, XADataSourceMCFFactory.this.exceptionSorter);
+ super((XADataSource) XADataSourceMCFFactory.this.getDataSource(), XADataSourceMCFFactory.this.getExceptionSorter());
}
public String getUserName() {
- return userName;
+ return XADataSourceMCFFactory.this.getUserName();
}
+ @Override
public String getPassword() {
- return password;
+ return XADataSourceMCFFactory.this.getPassword();
}
+ @Override
protected XAConnection getPhysicalConnection(CredentialExtractor credentialExtractor) throws ResourceException {
try {
String userName = credentialExtractor.getUserName();