Author: cschneider
Date: Mon Jul 27 15:55:19 2015
New Revision: 1692902
URL: http://svn.apache.org/r1692902
Log:
[ARIES-1362] Support additional coordinations for transactions
Modified:
aries/trunk/transaction/transaction-blueprint/pom.xml
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxInterceptorImpl.java
aries/trunk/transaction/transaction-blueprint/src/main/resources/OSGI-INF/blueprint/transaction.xml
aries/trunk/transaction/transaction-itests/pom.xml
aries/trunk/transaction/transaction-itests/src/test/java/org/apache/aries/transaction/itests/AbstractIntegrationTest.java
Modified: aries/trunk/transaction/transaction-blueprint/pom.xml
URL:
http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-blueprint/pom.xml?rev=1692902&r1=1692901&r2=1692902&view=diff
==============================================================================
--- aries/trunk/transaction/transaction-blueprint/pom.xml (original)
+++ aries/trunk/transaction/transaction-blueprint/pom.xml Mon Jul 27 15:55:19
2015
@@ -60,6 +60,11 @@
<scope>provided</scope>
</dependency>
<dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
<groupId>org.apache.aries.blueprint</groupId>
<artifactId>org.apache.aries.blueprint.core</artifactId>
<version>1.0.0</version>
@@ -76,12 +81,7 @@
<version>1.2</version>
<scope>provided</scope>
</dependency>
-
- <dependency>
- <groupId>org.osgi</groupId>
- <artifactId>org.osgi.compendium</artifactId>
- <scope>test</scope>
- </dependency>
+
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
Modified:
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxInterceptorImpl.java
URL:
http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxInterceptorImpl.java?rev=1692902&r1=1692901&r2=1692902&view=diff
==============================================================================
---
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxInterceptorImpl.java
(original)
+++
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxInterceptorImpl.java
Mon Jul 27 15:55:19 2015
@@ -27,6 +27,8 @@ import org.apache.aries.blueprint.Interc
import org.apache.aries.transaction.annotations.TransactionPropagationType;
import org.apache.aries.transaction.exception.TransactionRollbackException;
import org.osgi.service.blueprint.reflect.ComponentMetadata;
+import org.osgi.service.coordinator.Coordination;
+import org.osgi.service.coordinator.Coordinator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -35,6 +37,7 @@ public class TxInterceptorImpl implement
LoggerFactory.getLogger(TxInterceptorImpl.class);
private TransactionManager tm;
+ private Coordinator coordinator;
private TxComponentMetaDataHelper metaDataHelper;
public int getRank()
@@ -56,7 +59,9 @@ public class TxInterceptorImpl implement
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Calling begin for method {} with tx strategy {}.", m,
txAttribute);
}
- return txAttribute.begin(tm);
+ TransactionToken token = txAttribute.begin(tm);
+ coordinator.begin("txInterceptor", 0);
+ return token;
}
public void postCallWithException(ComponentMetadata cm, Method m,
@@ -64,15 +69,15 @@ public class TxInterceptorImpl implement
{
if (!(preCallToken instanceof TransactionToken))
{
- return;
+ return;
}
+ endCoordination();
final TransactionToken token = (TransactionToken)preCallToken;
try {
Transaction tran = token.getActiveTransaction();
if (tran != null && isRollBackException(ex)) {
tran.setRollbackOnly();
}
-
token.getTransactionAttribute().finish(tm, token);
}
catch (Exception e)
@@ -82,10 +87,6 @@ public class TxInterceptorImpl implement
}
}
- private boolean isRollBackException(Throwable ex) {
- return ex instanceof RuntimeException || ex instanceof Error;
- }
-
public void postCallWithReturn(ComponentMetadata cm, Method m,
Object returnType, Object preCallToken) throws Exception
{
@@ -93,7 +94,7 @@ public class TxInterceptorImpl implement
if (preCallToken == null) {
return;
}
-
+ endCoordination();
if (preCallToken instanceof TransactionToken)
{
final TransactionToken token = (TransactionToken)preCallToken;
@@ -112,11 +113,28 @@ public class TxInterceptorImpl implement
}
}
+ private void endCoordination() {
+ try {
+ Coordination coord = coordinator.pop();
+ coord.end();
+ } catch (Exception e) {
+ LOGGER.warn("Error ending coordination ", e);
+ }
+ }
+
+ private boolean isRollBackException(Throwable ex) {
+ return ex instanceof RuntimeException || ex instanceof Error;
+ }
public final void setTransactionManager(TransactionManager manager)
{
tm = manager;
}
+
+ public void setCoordinator(Coordinator coordinator)
+ {
+ this.coordinator = coordinator;
+ }
public final void setTxMetaDataHelper(TxComponentMetaDataHelper
transactionEnhancer)
{
Modified:
aries/trunk/transaction/transaction-blueprint/src/main/resources/OSGI-INF/blueprint/transaction.xml
URL:
http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-blueprint/src/main/resources/OSGI-INF/blueprint/transaction.xml?rev=1692902&r1=1692901&r2=1692902&view=diff
==============================================================================
---
aries/trunk/transaction/transaction-blueprint/src/main/resources/OSGI-INF/blueprint/transaction.xml
(original)
+++
aries/trunk/transaction/transaction-blueprint/src/main/resources/OSGI-INF/blueprint/transaction.xml
Mon Jul 27 15:55:19 2015
@@ -47,10 +47,13 @@
<bean id="txinterceptor"
class="org.apache.aries.transaction.TxInterceptorImpl">
<property name="transactionManager" ref="tm"/>
+ <property name="coordinator" ref="coordinator"/>
<property ref="txenhancer" name="txMetaDataHelper"/>
</bean>
<reference id="tm" interface="javax.transaction.TransactionManager"/>
+ <reference id="coordinator"
interface="org.osgi.service.coordinator.Coordinator"/>
+
<service interface="org.osgi.service.blueprint.container.BlueprintListener">
<bean class="org.apache.aries.transaction.parsing.TxBlueprintListener">
Modified: aries/trunk/transaction/transaction-itests/pom.xml
URL:
http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-itests/pom.xml?rev=1692902&r1=1692901&r2=1692902&view=diff
==============================================================================
--- aries/trunk/transaction/transaction-itests/pom.xml (original)
+++ aries/trunk/transaction/transaction-itests/pom.xml Mon Jul 27 15:55:19 2015
@@ -63,6 +63,12 @@
<version>1.0.3</version>
</dependency>
<dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.coordinator</artifactId>
+ <version>1.0.0</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.apache.aries.transaction</groupId>
<artifactId>org.apache.aries.transaction.manager</artifactId>
<scope>test</scope>
Modified:
aries/trunk/transaction/transaction-itests/src/test/java/org/apache/aries/transaction/itests/AbstractIntegrationTest.java
URL:
http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-itests/src/test/java/org/apache/aries/transaction/itests/AbstractIntegrationTest.java?rev=1692902&r1=1692901&r2=1692902&view=diff
==============================================================================
---
aries/trunk/transaction/transaction-itests/src/test/java/org/apache/aries/transaction/itests/AbstractIntegrationTest.java
(original)
+++
aries/trunk/transaction/transaction-itests/src/test/java/org/apache/aries/transaction/itests/AbstractIntegrationTest.java
Mon Jul 27 15:55:19 2015
@@ -85,6 +85,7 @@ public abstract class AbstractIntegratio
mavenBundle("org.apache.geronimo.specs",
"geronimo-jta_1.1_spec"),
mavenBundle("org.apache.geronimo.specs",
"geronimo-j2ee-connector_1.6_spec"),
mavenBundle("org.apache.geronimo.specs",
"geronimo-validation_1.0_spec"),
+ mavenBundle("org.apache.felix",
"org.apache.felix.coordinator"),
mavenBundle("org.apache.geronimo.components",
"geronimo-connector"),
mavenBundle("org.apache.derby", "derby"),
mavenBundle("org.apache.aries", "org.apache.aries.util"),