Skip to content

Commit

Permalink
Resolve requested changes from feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
graben committed Aug 2, 2023
1 parent 21d8adf commit 1b83a2b
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 23 deletions.
5 changes: 0 additions & 5 deletions agroal-narayana/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,5 @@
<artifactId>jboss-transaction-spi</artifactId>
<version>${version.org.jboss.jboss-transaction-spi}</version>
</dependency>
<dependency>
<groupId>org.jboss.narayana.jta</groupId>
<artifactId>narayana-jta</artifactId>
<version>${version.org.jboss.narayana}</version>
</dependency>
</dependencies>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@

import io.agroal.api.transaction.TransactionAware;
import org.jboss.tm.ConnectableResource;
import org.jboss.tm.LastResource;

/**
* @author <a href="lbarreiro@redhat.com">Luis Barreiro</a>
*/
public class ConnectableLocalXAResource extends LocalXAResource implements ConnectableResource {
public class ConnectableLocalXAResource extends LocalXAResource implements ConnectableResource, LastResource {

public ConnectableLocalXAResource(TransactionAware transactionAware, String jndiName) {
super( transactionAware, jndiName );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@

package io.agroal.narayana;

import com.arjuna.ats.jta.resources.LastResourceCommitOptimisation;
import io.agroal.api.transaction.TransactionAware;
import org.jboss.tm.LastResource;
import org.jboss.tm.XAResourceWrapper;
Expand All @@ -21,11 +20,11 @@
* @author <a href="lbarreiro@redhat.com">Luis Barreiro</a>
* @author <a href="jesper.pedersen@redhat.com">Jesper Pedersen</a>
*/
public class LocalXAResource implements XAResourceWrapper, LastResource, LastResourceCommitOptimisation {
public class LocalXAResource implements XAResourceWrapper, LastResource {

private static final String PRODUCT_NAME = LocalXAResource.class.getPackage().getImplementationTitle();
private static final String PRODUCT_VERSION = LocalXAResource.class.getPackage().getImplementationVersion();

private final TransactionAware transactionAware;
private final String jndiName;
private Xid currentXid;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,9 @@ public NarayanaTransactionIntegration(TransactionManager transactionManager, Tra
}

public NarayanaTransactionIntegration(TransactionManager transactionManager, TransactionSynchronizationRegistry transactionSynchronizationRegistry, String jndiName, boolean connectable, boolean firstResource, XAResourceRecoveryRegistry recoveryRegistry) {
if (connectable && firstResource) {
throw new IllegalArgumentException("Setting connectable and firstResource to true is disallowed at the same time.");
}
this.transactionManager = transactionManager;
this.transactionSynchronizationRegistry = transactionSynchronizationRegistry;
this.jndiName = jndiName;
Expand All @@ -93,6 +96,20 @@ public enum TransactionPhase {
TRANSACTION_NONE, TRANSACTION_ACTIVE, TRANSACTION_COMPLETING, TRANSACTION_DONE
}

private XAResource createXaResource(TransactionAware transactionAware, XAResource xaResource) {
if ( xaResource != null ) {
if ( firstResource ) {
return new FirstResourceBaseXAResource( transactionAware, xaResource, jndiName );
} else {
return new BaseXAResource( transactionAware, xaResource, jndiName );
}
} else if ( connectable ) {
return new ConnectableLocalXAResource( transactionAware, jndiName );
} else {
return new LocalXAResource( transactionAware, jndiName );
}
}

@Override
public void associate(TransactionAware transactionAware, XAResource xaResource) throws SQLException {
try {
Expand All @@ -101,20 +118,7 @@ public void associate(TransactionAware transactionAware, XAResource xaResource)
if ( transactionSynchronizationRegistry.getResource( key ) == null ) {
transactionSynchronizationRegistry.registerInterposedSynchronization( new InterposedSynchronization( transactionAware ) );
transactionSynchronizationRegistry.putResource( key, transactionAware );

XAResource xaResourceToEnlist;
if ( xaResource != null ) {
if ( firstResource ) {
xaResourceToEnlist = new FirstResourceBaseXAResource( transactionAware, xaResource, jndiName );
} else {
xaResourceToEnlist = new BaseXAResource( transactionAware, xaResource, jndiName );
}
} else if ( connectable ) {
xaResourceToEnlist = new ConnectableLocalXAResource( transactionAware, jndiName );
} else {
xaResourceToEnlist = new LocalXAResource( transactionAware, jndiName );
}
transactionManager.getTransaction().enlistResource( xaResourceToEnlist );
transactionManager.getTransaction().enlistResource( createXaResource( transactionAware, xaResource ) );
} else {
transactionAware.transactionStart();
}
Expand Down

0 comments on commit 1b83a2b

Please sign in to comment.