Commit b3ff9568 authored by terrymanu's avatar terrymanu
Browse files

add ShardingTransactionManagerFactory

parent 119a8ae5
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -27,10 +27,10 @@ import io.shardingsphere.core.util.EventBusInstance;
import io.shardingsphere.transaction.api.local.LocalTransactionManager;
import io.shardingsphere.transaction.common.TransactionContext;
import io.shardingsphere.transaction.common.TransactionContextHolder;
import io.shardingsphere.transaction.common.config.JDBCTransactionConfiguration;
import io.shardingsphere.transaction.api.ShardingTransactionManagerFactory;
import io.shardingsphere.transaction.common.event.LocalTransactionEvent;
import io.shardingsphere.transaction.common.event.TransactionEvent;
import io.shardingsphere.transaction.common.event.TransactionEventFactory;
import io.shardingsphere.transaction.common.event.LocalTransactionEvent;

import javax.sql.DataSource;
import java.sql.Connection;
@@ -67,7 +67,7 @@ public abstract class AbstractConnectionAdapter extends AbstractUnsupportedOpera
     * @throws SQLException SQL exception
     */
    public final Connection getConnection(final String dataSourceName) throws SQLException {
        JDBCTransactionConfiguration.getInstance().getTransactionManager(TransactionContextHolder.get().getTransactionType());
        ShardingTransactionManagerFactory.getTransactionManager(TransactionContextHolder.get().getTransactionType());
        if (cachedConnections.containsKey(dataSourceName)) {
            return cachedConnections.get(dataSourceName);
        }
+2 −2
Original line number Diff line number Diff line
@@ -22,7 +22,7 @@ import io.shardingsphere.core.constant.DatabaseType;
import io.shardingsphere.core.jdbc.unsupported.AbstractUnsupportedOperationDataSource;
import io.shardingsphere.core.listener.JDBCListenerRegister;
import io.shardingsphere.transaction.common.TransactionContextHolder;
import io.shardingsphere.transaction.common.config.JDBCTransactionConfiguration;
import io.shardingsphere.transaction.api.ShardingTransactionManagerFactory;
import lombok.Getter;

import javax.sql.DataSource;
@@ -40,7 +40,7 @@ import java.util.logging.Logger;
public abstract class AbstractDataSourceAdapter extends AbstractUnsupportedOperationDataSource {
    
    static {
        JDBCTransactionConfiguration.getInstance().getTransactionManager(TransactionContextHolder.get().getTransactionType());
        ShardingTransactionManagerFactory.getTransactionManager(TransactionContextHolder.get().getTransactionType());
        JDBCListenerRegister.register();
    }
    
+2 −2
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ import io.shardingsphere.jdbc.orchestration.internal.OrchestrationProxyConfigura
import io.shardingsphere.jdbc.orchestration.internal.eventbus.ProxyEventBusEvent;
import io.shardingsphere.proxy.backend.jdbc.datasource.JDBCBackendDataSource;
import io.shardingsphere.transaction.api.ShardingTransactionManager;
import io.shardingsphere.transaction.common.config.ProxyTransactionConfiguration;
import io.shardingsphere.transaction.api.ShardingTransactionManagerFactory;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
@@ -106,7 +106,7 @@ public final class RuleRegistry {
        showSQL = shardingProperties.getValue(ShardingPropertiesConstant.SQL_SHOW);
        connectionMode = ConnectionMode.valueOf(shardingProperties.<String>getValue(ShardingPropertiesConstant.CONNECTION_MODE));
        transactionType = TransactionType.valueOf(shardingProperties.<String>getValue(ShardingPropertiesConstant.PROXY_TRANSACTION_MODE));
        transactionManager = ProxyTransactionConfiguration.getInstance().getTransactionManager(transactionType);
        transactionManager = ShardingTransactionManagerFactory.getTransactionManager(transactionType);
        acceptorSize = shardingProperties.getValue(ShardingPropertiesConstant.ACCEPTOR_SIZE);
        executorSize = shardingProperties.getValue(ShardingPropertiesConstant.EXECUTOR_SIZE);
        // TODO :jiaqi force off use NIO for backend, this feature is not complete yet
+15 −9
Original line number Diff line number Diff line
@@ -15,26 +15,31 @@
 * </p>
 */

package io.shardingsphere.transaction.common.config;
package io.shardingsphere.transaction.api;

import io.shardingsphere.core.constant.TransactionType;
import io.shardingsphere.transaction.api.ShardingTransactionManager;
import io.shardingsphere.transaction.api.local.LocalTransactionManager;
import io.shardingsphere.transaction.api.xa.XATransactionManagerSPILoader;
import io.shardingsphere.transaction.common.TransactionContext;
import io.shardingsphere.transaction.common.TransactionContextHolder;
import lombok.extern.slf4j.Slf4j;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;

/**
 * Abstract transaction manager configuration.
 * Sharding transaction manager factory.
 *
 * @author zhaojun
 * @author zhangliang
 */
@Slf4j
public abstract class TransactionConfigurationAdapter implements TransactionConfiguration {
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class ShardingTransactionManagerFactory {
    
    @Override
    public final ShardingTransactionManager getTransactionManager(final TransactionType transactionType) {
    /**
     * Get sharding transaction manager.
     *
     * @param transactionType transaction type
     * @return sharding transaction manager
     */
    public static ShardingTransactionManager getTransactionManager(final TransactionType transactionType) {
        ShardingTransactionManager result;
        switch (transactionType) {
            case LOCAL:
@@ -43,6 +48,7 @@ public abstract class TransactionConfigurationAdapter implements TransactionConf
            case XA:
                result = XATransactionManagerSPILoader.getInstance().getTransactionManager();
                break;
            case BASE:
            default: 
                return null;
        }
+0 −41
Original line number Diff line number Diff line
/*
 * Copyright 2016-2018 shardingsphere.io.
 * <p>
 * Licensed 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.
 * </p>
 */

package io.shardingsphere.transaction.common.config;

import lombok.AccessLevel;
import lombok.NoArgsConstructor;

/**
 * JDBC transaction configuration.
 *
 * @author zhaojun
 */
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class JDBCTransactionConfiguration extends TransactionConfigurationAdapter {
    
    private static final JDBCTransactionConfiguration INSTANCE = new JDBCTransactionConfiguration();
    
    /**
     * Get singleton instance of {@code JDBCTransactionConfiguration}.
     *
     * @return JDBC transaction configuration
     */
    public static JDBCTransactionConfiguration getInstance() {
        return INSTANCE;
    }
}
Loading