Commit 74aecad8 authored by terrymanu's avatar terrymanu
Browse files

week xa => local transaction

parent b0e04aa1
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -30,7 +30,7 @@ import io.shardingsphere.transaction.common.TransactionContextHolder;
import io.shardingsphere.transaction.common.config.JDBCTransactionConfiguration;
import io.shardingsphere.transaction.common.event.TransactionEvent;
import io.shardingsphere.transaction.common.event.TransactionEventFactory;
import io.shardingsphere.transaction.common.event.WeakXaTransactionEvent;
import io.shardingsphere.transaction.common.event.LocalTransactionEvent;

import javax.sql.DataSource;
import java.sql.Connection;
@@ -93,7 +93,7 @@ public abstract class AbstractConnectionAdapter extends AbstractUnsupportedOpera
    @Override
    public final void setAutoCommit(final boolean autoCommit) {
        this.autoCommit = autoCommit;
        TransactionContextHolder.set(new TransactionContext(new LocalTransactionManager(), TransactionType.XA, WeakXaTransactionEvent.class));
        TransactionContextHolder.set(new TransactionContext(new LocalTransactionManager(), TransactionType.XA, LocalTransactionEvent.class));
        recordMethodInvocation(Connection.class, "setAutoCommit", new Class[] {boolean.class}, new Object[] {autoCommit});
        EventBusInstance.getInstance().post(buildTransactionEvent(TCLType.BEGIN));
    }
@@ -183,10 +183,10 @@ public abstract class AbstractConnectionAdapter extends AbstractUnsupportedOpera
    
    private TransactionEvent buildTransactionEvent(final TCLType tclType) {
        TransactionEvent result = TransactionEventFactory.create(tclType);
        if (result instanceof WeakXaTransactionEvent) {
            WeakXaTransactionEvent weakXaTransactionEvent = (WeakXaTransactionEvent) result;
            weakXaTransactionEvent.setCachedConnections(cachedConnections.values());
            weakXaTransactionEvent.setAutoCommit(autoCommit);
        if (result instanceof LocalTransactionEvent) {
            LocalTransactionEvent localTransactionEvent = (LocalTransactionEvent) result;
            localTransactionEvent.setCachedConnections(cachedConnections.values());
            localTransactionEvent.setAutoCommit(autoCommit);
        }
        return result;
    }
+8 −8
Original line number Diff line number Diff line
@@ -19,7 +19,7 @@ package io.shardingsphere.transaction.api.local;

import io.shardingsphere.transaction.api.TransactionManager;
import io.shardingsphere.transaction.common.event.TransactionEvent;
import io.shardingsphere.transaction.common.event.WeakXaTransactionEvent;
import io.shardingsphere.transaction.common.event.LocalTransactionEvent;

import javax.transaction.Status;
import java.sql.Connection;
@@ -36,11 +36,11 @@ public final class LocalTransactionManager implements TransactionManager {
    
    @Override
    public void begin(final TransactionEvent transactionEvent) throws SQLException {
        WeakXaTransactionEvent weakXaTransactionEvent = (WeakXaTransactionEvent) transactionEvent;
        LocalTransactionEvent localTransactionEvent = (LocalTransactionEvent) transactionEvent;
        Collection<SQLException> exceptions = new LinkedList<>();
        for (Connection each : weakXaTransactionEvent.getCachedConnections()) {
        for (Connection each : localTransactionEvent.getCachedConnections()) {
            try {
                each.setAutoCommit(weakXaTransactionEvent.isAutoCommit());
                each.setAutoCommit(localTransactionEvent.isAutoCommit());
            } catch (final SQLException ex) {
                exceptions.add(ex);
            }
@@ -50,9 +50,9 @@ public final class LocalTransactionManager implements TransactionManager {
    
    @Override
    public void commit(final TransactionEvent transactionEvent) throws SQLException {
        WeakXaTransactionEvent weakXaTransactionEvent = (WeakXaTransactionEvent) transactionEvent;
        LocalTransactionEvent localTransactionEvent = (LocalTransactionEvent) transactionEvent;
        Collection<SQLException> exceptions = new LinkedList<>();
        for (Connection each : weakXaTransactionEvent.getCachedConnections()) {
        for (Connection each : localTransactionEvent.getCachedConnections()) {
            try {
                each.commit();
            } catch (final SQLException ex) {
@@ -64,9 +64,9 @@ public final class LocalTransactionManager implements TransactionManager {
    
    @Override
    public void rollback(final TransactionEvent transactionEvent) throws SQLException {
        WeakXaTransactionEvent weakXaTransactionEvent = (WeakXaTransactionEvent) transactionEvent;
        LocalTransactionEvent localTransactionEvent = (LocalTransactionEvent) transactionEvent;
        Collection<SQLException> exceptions = new LinkedList<>();
        for (Connection each : weakXaTransactionEvent.getCachedConnections()) {
        for (Connection each : localTransactionEvent.getCachedConnections()) {
            try {
                each.rollback();
            } catch (final SQLException ex) {
+2 −2
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@ package io.shardingsphere.transaction.common;
import io.shardingsphere.core.constant.TransactionType;
import io.shardingsphere.transaction.api.TransactionManager;
import io.shardingsphere.transaction.common.event.TransactionEvent;
import io.shardingsphere.transaction.common.event.WeakXaTransactionEvent;
import io.shardingsphere.transaction.common.event.LocalTransactionEvent;
import lombok.Getter;
import lombok.NoArgsConstructor;

@@ -37,7 +37,7 @@ public final class TransactionContext {
    
    private TransactionType transactionType = TransactionType.XA;
    
    private Class<? extends TransactionEvent> transactionEventClazz = WeakXaTransactionEvent.class;
    private Class<? extends TransactionEvent> transactionEventClazz = LocalTransactionEvent.class;

    public TransactionContext(final TransactionManager transactionManager, final TransactionType transactionType, final Class<? extends TransactionEvent> clazz) {
        this.transactionManager = transactionManager;
+5 −5
Original line number Diff line number Diff line
@@ -19,7 +19,7 @@ package io.shardingsphere.transaction.common;

import io.shardingsphere.core.constant.TransactionType;
import io.shardingsphere.transaction.api.TransactionManager;
import io.shardingsphere.transaction.common.event.WeakXaTransactionEvent;
import io.shardingsphere.transaction.common.event.LocalTransactionEvent;
import io.shardingsphere.transaction.common.event.XaTransactionEvent;
import io.shardingsphere.transaction.api.local.LocalTransactionManager;
import lombok.AccessLevel;
@@ -44,11 +44,11 @@ public class TransactionContextFactory {
    }
    
    /**
     * Create transaction context of weak XA.
     * Create local transaction context.
     *
     * @return weak XA transaction context
     * @return local transaction context
     */
    public static TransactionContext newWeakXAContext() {
        return new TransactionContext(new LocalTransactionManager(), TransactionType.XA, WeakXaTransactionEvent.class);
    public static TransactionContext newLocalTransactionContext() {
        return new TransactionContext(new LocalTransactionManager(), TransactionType.XA, LocalTransactionEvent.class);
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -49,7 +49,7 @@ public class JDBCTransactionConfiguration extends TransactionConfigurationAdapte
    protected TransactionManager doXaTransactionConfiguration(final TransactionType transactionType) {
        Optional<TransactionManager> transactionManager = doSPIConfiguration(transactionType);
        TransactionContext transactionContext = transactionManager.isPresent()
                ? TransactionContextFactory.newXAContext(transactionManager.get()) : TransactionContextFactory.newWeakXAContext();
                ? TransactionContextFactory.newXAContext(transactionManager.get()) : TransactionContextFactory.newLocalTransactionContext();
        TransactionContextHolder.set(transactionContext);
        return transactionContext.getTransactionManager();
    }
Loading