This is an automated email from the ASF dual-hosted git repository.

menghaoran pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new 06f68d7  Add ContextManager.getDataSourceMap() (#12879)
06f68d7 is described below

commit 06f68d704282fd947cb52571a1f0f903426eac4e
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Oct 2 03:13:16 2021 +0800

    Add ContextManager.getDataSourceMap() (#12879)
    
    * Add ContextManager.getDataSourceMap()
    
    * Fix test cases
---
 .../core/connection/ShardingSphereConnection.java     | 15 +++++----------
 .../core/datasource/ShardingSphereDataSource.java     | 14 +++++---------
 .../metadata/ShardingSphereDatabaseMetaData.java      |  2 +-
 .../shardingsphere/driver/state/DriverState.java      |  5 +----
 .../driver/state/DriverStateContext.java              |  6 ++----
 .../driver/state/circuit/CircuitBreakDriverState.java |  4 +---
 .../driver/state/lock/LockDriverState.java            |  4 +---
 .../shardingsphere/driver/state/ok/OKDriverState.java |  6 ++----
 .../driver/executor/AbstractBaseExecutorTest.java     | 19 ++++++++++---------
 .../driver/jdbc/adapter/ConnectionAdapterTest.java    |  5 ++---
 .../core/connection/ShardingSphereConnectionTest.java |  9 ++++++---
 .../core/datasource/ShardingSphereDataSourceTest.java | 12 +++---------
 .../metadata/ShardingSphereDatabaseMetaDataTest.java  |  2 +-
 .../UnsupportedOperationConnectionTest.java           |  4 +---
 .../driver/state/DriverStateContextTest.java          |  5 +----
 .../state/circuit/CircuitBreakDriverStateTest.java    |  3 +--
 .../driver/state/ok/OKDriverStateTest.java            |  5 +----
 .../shardingsphere/mode/manager/ContextManager.java   | 10 ++++++++++
 18 files changed, 54 insertions(+), 76 deletions(-)

diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnection.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnection.java
index 9347d3e..b6f5b23 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnection.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnection.java
@@ -18,7 +18,6 @@
 package org.apache.shardingsphere.driver.jdbc.core.connection;
 
 import com.google.common.base.Preconditions;
-import lombok.AccessLevel;
 import lombok.Getter;
 import org.apache.shardingsphere.driver.jdbc.adapter.AbstractConnectionAdapter;
 import 
org.apache.shardingsphere.driver.jdbc.core.datasource.metadata.ShardingSphereDatabaseMetaData;
@@ -45,30 +44,26 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
-import java.util.Map;
 
 /**
  * ShardingSphere Connection.
  */
-@Getter
 public final class ShardingSphereConnection extends AbstractConnectionAdapter 
implements ExecutorJDBCManager {
     
+    @Getter
     private final String schemaName;
     
-    private final Map<String, DataSource> dataSourceMap;
-    
+    @Getter
     private final ContextManager contextManager;
     
     private final TransactionType transactionType;
     
     private final ShardingSphereTransactionManager transactionManager;
     
-    @Getter(AccessLevel.NONE)
     private boolean autoCommit = true;
     
-    public ShardingSphereConnection(final String schemaName, final Map<String, 
DataSource> dataSourceMap, final ContextManager contextManager) {
+    public ShardingSphereConnection(final String schemaName, final 
ContextManager contextManager) {
         this.schemaName = schemaName;
-        this.dataSourceMap = dataSourceMap;
         this.contextManager = contextManager;
         transactionType = getTransactionType(contextManager);
         transactionManager = 
contextManager.getTransactionContexts().getEngines().get(schemaName).getTransactionManager(transactionType);
@@ -100,7 +95,7 @@ public final class ShardingSphereConnection extends 
AbstractConnectionAdapter im
     
     @Override
     public List<Connection> getConnections(final String dataSourceName, final 
int connectionSize, final ConnectionMode connectionMode) throws SQLException {
-        DataSource dataSource = dataSourceMap.get(dataSourceName);
+        DataSource dataSource = 
contextManager.getDataSourceMap(schemaName).get(dataSourceName);
         Preconditions.checkState(null != dataSource, "Missing the data source 
name: '%s'", dataSourceName);
         Collection<Connection> connections;
         synchronized (getCachedConnections()) {
@@ -302,7 +297,7 @@ public final class ShardingSphereConnection extends 
AbstractConnectionAdapter im
     
     @Override
     public Array createArrayOf(final String typeName, final Object[] elements) 
throws SQLException {
-        String dataSourceName = 
getDataSourceMap().entrySet().iterator().next().getKey();
+        String dataSourceName = 
contextManager.getDataSourceMap(schemaName).keySet().iterator().next();
         Connection connection = getConnection(dataSourceName);
         return connection.createArrayOf(typeName, elements);
     }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
index 48e0f7d..836b48f 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
@@ -77,7 +77,7 @@ public final class ShardingSphereDataSource extends 
AbstractDataSourceAdapter im
     
     @Override
     public Connection getConnection() {
-        return DriverStateContext.getConnection(schemaName, 
getDataSourceMap(), contextManager);
+        return DriverStateContext.getConnection(schemaName, contextManager);
     }
     
     @Override
@@ -92,7 +92,7 @@ public final class ShardingSphereDataSource extends 
AbstractDataSourceAdapter im
      * @throws Exception exception
      */
     public void close(final Collection<String> dataSourceNames) throws 
Exception {
-        Map<String, DataSource> dataSourceMap = getDataSourceMap();
+        Map<String, DataSource> dataSourceMap = 
contextManager.getDataSourceMap(schemaName);
         for (String each : dataSourceNames) {
             close(dataSourceMap.get(each));
         }
@@ -107,23 +107,19 @@ public final class ShardingSphereDataSource extends 
AbstractDataSourceAdapter im
     
     @Override
     public void close() throws Exception {
-        close(getDataSourceMap().keySet());
+        close(contextManager.getDataSourceMap(schemaName).keySet());
     }
     
     @Override
     public int getLoginTimeout() throws SQLException {
-        Map<String, DataSource> dataSourceMap = getDataSourceMap();
+        Map<String, DataSource> dataSourceMap = 
contextManager.getDataSourceMap(schemaName);
         return dataSourceMap.isEmpty() ? 0 : 
dataSourceMap.values().iterator().next().getLoginTimeout();
     }
     
     @Override
     public void setLoginTimeout(final int seconds) throws SQLException {
-        for (DataSource each : getDataSourceMap().values()) {
+        for (DataSource each : 
contextManager.getDataSourceMap(schemaName).values()) {
             each.setLoginTimeout(seconds);
         }
     }
-    
-    private Map<String, DataSource> getDataSourceMap() {
-        return 
contextManager.getMetaDataContexts().getMetaData(schemaName).getResource().getDataSources();
-    }
 }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/metadata/ShardingSphereDatabaseMetaData.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/metadata/ShardingSphereDatabaseMetaData.java
index 3b94b12..02b2645 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/metadata/ShardingSphereDatabaseMetaData.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/metadata/ShardingSphereDatabaseMetaData.java
@@ -59,7 +59,7 @@ public final class ShardingSphereDatabaseMetaData extends 
AdaptedDatabaseMetaDat
         
super(connection.getContextManager().getMetaDataContexts().getMetaData(connection.getSchemaName()).getResource().getCachedDatabaseMetaData());
         this.connection = connection;
         rules = 
connection.getContextManager().getMetaDataContexts().getMetaData(connection.getSchemaName()).getRuleMetaData().getRules();
-        datasourceNames = connection.getDataSourceMap().keySet();
+        datasourceNames = 
connection.getContextManager().getDataSourceMap(connection.getSchemaName()).keySet();
         dataSourcesMetaData = 
connection.getContextManager().getMetaDataContexts().getMetaData(connection.getSchemaName()).getResource().getDataSourcesMetaData();
     }
     
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/state/DriverState.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/state/DriverState.java
index 64f4fd3..ae473e7 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/state/DriverState.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/state/DriverState.java
@@ -20,9 +20,7 @@ package org.apache.shardingsphere.driver.state;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.spi.typed.TypedSPI;
 
-import javax.sql.DataSource;
 import java.sql.Connection;
-import java.util.Map;
 
 /**
  * Driver state.
@@ -33,9 +31,8 @@ public interface DriverState extends TypedSPI {
      * Get connection.
      *
      * @param schemaName schema name
-     * @param dataSourceMap data source map
      * @param contextManager context manager
      * @return connection
      */
-    Connection getConnection(String schemaName, Map<String, DataSource> 
dataSourceMap, ContextManager contextManager);
+    Connection getConnection(String schemaName, ContextManager contextManager);
 }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/state/DriverStateContext.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/state/DriverStateContext.java
index d85c478..f7c4a19 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/state/DriverStateContext.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/state/DriverStateContext.java
@@ -22,7 +22,6 @@ import lombok.NoArgsConstructor;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.spi.ShardingSphereServiceLoader;
 
-import javax.sql.DataSource;
 import java.sql.Connection;
 import java.util.Collection;
 import java.util.HashMap;
@@ -50,11 +49,10 @@ public final class DriverStateContext {
      * Get connection.
      *
      * @param schemaName schema name
-     * @param dataSourceMap data source map
      * @param contextManager context manager
      * @return connection
      */
-    public static Connection getConnection(final String schemaName, final 
Map<String, DataSource> dataSourceMap, final ContextManager contextManager) {
-        return 
STATES.get(contextManager.getStateContext().getCurrentState().name()).getConnection(schemaName,
 dataSourceMap, contextManager);
+    public static Connection getConnection(final String schemaName, final 
ContextManager contextManager) {
+        return 
STATES.get(contextManager.getStateContext().getCurrentState().name()).getConnection(schemaName,
 contextManager);
     }
 }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/state/circuit/CircuitBreakDriverState.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/state/circuit/CircuitBreakDriverState.java
index 8a44896..a2ed6c5 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/state/circuit/CircuitBreakDriverState.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/state/circuit/CircuitBreakDriverState.java
@@ -21,9 +21,7 @@ import org.apache.shardingsphere.driver.state.DriverState;
 import 
org.apache.shardingsphere.driver.state.circuit.datasource.CircuitBreakerDataSource;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 
-import javax.sql.DataSource;
 import java.sql.Connection;
-import java.util.Map;
 
 /**
  * Circuit break driver state.
@@ -31,7 +29,7 @@ import java.util.Map;
 public final class CircuitBreakDriverState implements DriverState {
     
     @Override
-    public Connection getConnection(final String schemaName, final Map<String, 
DataSource> dataSourceMap, final ContextManager contextManager) {
+    public Connection getConnection(final String schemaName, final 
ContextManager contextManager) {
         return new CircuitBreakerDataSource().getConnection();
     }
     
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/state/lock/LockDriverState.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/state/lock/LockDriverState.java
index 8189b73..4578d26 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/state/lock/LockDriverState.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/state/lock/LockDriverState.java
@@ -20,9 +20,7 @@ package org.apache.shardingsphere.driver.state.lock;
 import org.apache.shardingsphere.driver.state.DriverState;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 
-import javax.sql.DataSource;
 import java.sql.Connection;
-import java.util.Map;
 
 /**
  * Lock driver state.
@@ -30,7 +28,7 @@ import java.util.Map;
 public final class LockDriverState implements DriverState {
     
     @Override
-    public Connection getConnection(final String schemaName, final Map<String, 
DataSource> dataSourceMap, final ContextManager contextManager) {
+    public Connection getConnection(final String schemaName, final 
ContextManager contextManager) {
         // TODO
         throw new UnsupportedOperationException("LockDriverState");
     }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/state/ok/OKDriverState.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/state/ok/OKDriverState.java
index c2fb01e..e9d33a8 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/state/ok/OKDriverState.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/state/ok/OKDriverState.java
@@ -21,9 +21,7 @@ import 
org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConne
 import org.apache.shardingsphere.driver.state.DriverState;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 
-import javax.sql.DataSource;
 import java.sql.Connection;
-import java.util.Map;
 
 /**
  * OK driver state.
@@ -31,8 +29,8 @@ import java.util.Map;
 public final class OKDriverState implements DriverState {
     
     @Override
-    public Connection getConnection(final String schemaName, final Map<String, 
DataSource> dataSourceMap, final ContextManager contextManager) {
-        return new ShardingSphereConnection(schemaName, dataSourceMap, 
contextManager);
+    public Connection getConnection(final String schemaName, final 
ContextManager contextManager) {
+        return new ShardingSphereConnection(schemaName, contextManager);
     }
     
     @Override
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/executor/AbstractBaseExecutorTest.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/executor/AbstractBaseExecutorTest.java
index 5ed1165..5c4d637 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/executor/AbstractBaseExecutorTest.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/executor/AbstractBaseExecutorTest.java
@@ -60,7 +60,7 @@ public abstract class AbstractBaseExecutorTest {
         SQLExecutorExceptionHandler.setExceptionThrown(true);
         executorEngine = new 
ExecutorEngine(Runtime.getRuntime().availableProcessors());
         TransactionTypeHolder.set(TransactionType.LOCAL);
-        connection = new ShardingSphereConnection(DefaultSchema.LOGIC_NAME, 
mockDataSourceMap(), mockContextManager());
+        connection = new ShardingSphereConnection(DefaultSchema.LOGIC_NAME, 
mockContextManager());
     }
     
     private ContextManager mockContextManager() {
@@ -69,6 +69,15 @@ public abstract class AbstractBaseExecutorTest {
         TransactionContexts transactionContexts = mockTransactionContexts();
         when(result.getMetaDataContexts()).thenReturn(metaDataContexts);
         when(result.getTransactionContexts()).thenReturn(transactionContexts);
+        
when(result.getDataSourceMap(DefaultSchema.LOGIC_NAME)).thenReturn(mockDataSourceMap());
+        return result;
+    }
+    
+    private Map<String, DataSource> mockDataSourceMap() {
+        Map<String, DataSource> result = new LinkedHashMap<>(2, 1);
+        DataSource dataSource = mock(DataSource.class, RETURNS_DEEP_STUBS);
+        result.put("ds_0", dataSource);
+        result.put("ds_1", dataSource);
         return result;
     }
     
@@ -87,14 +96,6 @@ public abstract class AbstractBaseExecutorTest {
         return result;
     }
     
-    private Map<String, DataSource> mockDataSourceMap() {
-        Map<String, DataSource> result = new LinkedHashMap<>(2, 1);
-        DataSource dataSource = mock(DataSource.class, RETURNS_DEEP_STUBS);
-        result.put("ds_0", dataSource);
-        result.put("ds_1", dataSource);
-        return result;
-    }
-    
     private ShardingRule mockShardingRule() {
         ShardingRule result = mock(ShardingRule.class);
         when(result.isNeedAccumulate(any())).thenReturn(true);
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/adapter/ConnectionAdapterTest.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/adapter/ConnectionAdapterTest.java
index d432d19..b8822d1 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/adapter/ConnectionAdapterTest.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/adapter/ConnectionAdapterTest.java
@@ -20,8 +20,8 @@ package org.apache.shardingsphere.driver.jdbc.adapter;
 import com.google.common.collect.Multimap;
 import lombok.SneakyThrows;
 import 
org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection;
-import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.infra.database.DefaultSchema;
+import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.transaction.core.TransactionType;
 import org.apache.shardingsphere.transaction.core.TransactionTypeHolder;
 import org.junit.Test;
@@ -31,7 +31,6 @@ import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.Arrays;
-import java.util.Collections;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertFalse;
@@ -131,7 +130,7 @@ public final class ConnectionAdapterTest {
     }
     
     private ShardingSphereConnection mockShardingSphereConnection(final 
Connection... connections) {
-        ShardingSphereConnection result = new 
ShardingSphereConnection(DefaultSchema.LOGIC_NAME, Collections.emptyMap(), 
mock(ContextManager.class, RETURNS_DEEP_STUBS));
+        ShardingSphereConnection result = new 
ShardingSphereConnection(DefaultSchema.LOGIC_NAME, mock(ContextManager.class, 
RETURNS_DEEP_STUBS));
         result.getCachedConnections().putAll("", Arrays.asList(connections));
         return result;
     }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java
index 54ecef1..fcf9030 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java
@@ -91,8 +91,9 @@ public final class ShardingSphereConnectionTest {
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         
when(contextManager.getTransactionContexts()).thenReturn(transactionContexts);
+        
when(contextManager.getDataSourceMap(DefaultSchema.LOGIC_NAME)).thenReturn(dataSourceMap);
         TransactionTypeHolder.set(TransactionType.LOCAL);
-        connection = new ShardingSphereConnection(DefaultSchema.LOGIC_NAME, 
dataSourceMap, contextManager);
+        connection = new ShardingSphereConnection(DefaultSchema.LOGIC_NAME, 
contextManager);
     }
     
     @After
@@ -129,8 +130,9 @@ public final class ShardingSphereConnectionTest {
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         
when(contextManager.getTransactionContexts()).thenReturn(transactionContexts);
+        
when(contextManager.getDataSourceMap(DefaultSchema.LOGIC_NAME)).thenReturn(dataSourceMap);
         TransactionTypeHolder.set(TransactionType.XA);
-        connection = new ShardingSphereConnection(connection.getSchemaName(), 
dataSourceMap, contextManager);
+        connection = new ShardingSphereConnection(connection.getSchemaName(), 
contextManager);
         connection.setAutoCommit(false);
         
assertTrue(XAShardingSphereTransactionManagerFixture.getInvocations().contains(TransactionOperationType.BEGIN));
         connection.commit();
@@ -144,8 +146,9 @@ public final class ShardingSphereConnectionTest {
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         
when(contextManager.getTransactionContexts()).thenReturn(transactionContexts);
+        
when(contextManager.getDataSourceMap(DefaultSchema.LOGIC_NAME)).thenReturn(dataSourceMap);
         TransactionTypeHolder.set(TransactionType.BASE);
-        connection = new ShardingSphereConnection(connection.getSchemaName(), 
dataSourceMap, contextManager);
+        connection = new ShardingSphereConnection(connection.getSchemaName(), 
contextManager);
         connection.setAutoCommit(false);
         
assertTrue(BASEShardingSphereTransactionManagerFixture.getInvocations().contains(TransactionOperationType.BEGIN));
         connection.commit();
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSourceTest.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSourceTest.java
index b2075a6..61ee3c1 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSourceTest.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSourceTest.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.driver.jdbc.core.datasource;
 
 import com.google.common.base.Joiner;
 import 
org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection;
-import 
org.apache.shardingsphere.driver.jdbc.core.fixture.XAShardingSphereTransactionManagerFixture;
 import org.apache.shardingsphere.infra.database.DefaultSchema;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.database.type.DatabaseTypeRegistry;
@@ -48,7 +47,6 @@ import java.util.Properties;
 
 import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertThat;
 import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.atLeast;
@@ -158,7 +156,7 @@ public final class ShardingSphereDataSourceTest {
         ShardingSphereDataSource shardingSphereDataSource = 
createShardingSphereDataSource(dataSourceMap);
         
assertThat(shardingSphereDataSource.getContextManager().getMetaDataContexts().getMetaData(DefaultSchema.LOGIC_NAME).getResource().getDataSources().size(),
 is(1));
         ShardingSphereConnection connection = (ShardingSphereConnection) 
shardingSphereDataSource.getConnection();
-        assertThat(connection.getDataSourceMap().size(), is(1));
+        
assertThat(connection.getContextManager().getDataSourceMap(connection.getSchemaName()).size(),
 is(1));
     }
     
     @Test
@@ -169,15 +167,11 @@ public final class ShardingSphereDataSourceTest {
         TransactionTypeHolder.set(TransactionType.XA);
         ShardingSphereDataSource shardingSphereDataSource = 
createShardingSphereDataSource(dataSourceMap);
         ShardingSphereConnection connection = (ShardingSphereConnection) 
shardingSphereDataSource.getConnection();
-        assertThat(connection.getDataSourceMap().size(), is(1));
-        assertThat(connection.getTransactionType(), is(TransactionType.XA));
-        assertThat(connection.getTransactionManager(), 
instanceOf(XAShardingSphereTransactionManagerFixture.class));
+        
assertThat(connection.getContextManager().getDataSourceMap(connection.getSchemaName()).size(),
 is(1));
         TransactionTypeHolder.set(TransactionType.LOCAL);
         connection = (ShardingSphereConnection) 
shardingSphereDataSource.getConnection();
         assertThat(connection.getConnection("ds"), 
is(dataSource.getConnection()));
-        assertThat(connection.getDataSourceMap(), is(dataSourceMap));
-        assertThat(connection.getTransactionType(), is(TransactionType.LOCAL));
-        assertNull(connection.getTransactionManager());
+        
assertThat(connection.getContextManager().getDataSourceMap(connection.getSchemaName()),
 is(dataSourceMap));
     }
     
     private ShardingSphereDataSource createShardingSphereDataSource(final 
Map<String, DataSource> dataSourceMap) throws SQLException {
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/metadata/ShardingSphereDatabaseMetaDataTest.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/metadata/ShardingSphereDatabaseMetaDataTest.java
index 0c8995d..624a424 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/metadata/ShardingSphereDatabaseMetaDataTest.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/metadata/ShardingSphereDatabaseMetaDataTest.java
@@ -92,8 +92,8 @@ public final class ShardingSphereDatabaseMetaDataTest {
         CachedDatabaseMetaData cachedDatabaseMetaData = new 
CachedDatabaseMetaData(databaseMetaData);
         
when(shardingSphereConnection.getCachedConnections()).thenReturn(LinkedHashMultimap.create());
         
when(shardingSphereConnection.getConnection(anyString())).thenReturn(connection);
-        
when(shardingSphereConnection.getDataSourceMap()).thenReturn(dataSourceMap);
         
when(shardingSphereConnection.getContextManager().getMetaDataContexts()).thenReturn(metaDataContexts);
+        
when(shardingSphereConnection.getContextManager().getDataSourceMap(DefaultSchema.LOGIC_NAME)).thenReturn(dataSourceMap);
         
when(shardingSphereConnection.getSchemaName()).thenReturn(DefaultSchema.LOGIC_NAME);
         ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class, 
RETURNS_DEEP_STUBS);
         
when(metaDataContexts.getMetaData(shardingSphereConnection.getSchemaName())).thenReturn(metaData);
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/unsupported/UnsupportedOperationConnectionTest.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/unsupported/UnsupportedOperationConnectionTest.java
index 45950bd..54bf1cf 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/unsupported/UnsupportedOperationConnectionTest.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/unsupported/UnsupportedOperationConnectionTest.java
@@ -24,7 +24,6 @@ import org.junit.Test;
 
 import java.sql.SQLException;
 import java.sql.SQLFeatureNotSupportedException;
-import java.util.Collections;
 import java.util.Properties;
 
 import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
@@ -32,8 +31,7 @@ import static org.mockito.Mockito.mock;
 
 public final class UnsupportedOperationConnectionTest {
     
-    private final ShardingSphereConnection shardingSphereConnection = new 
ShardingSphereConnection(
-            DefaultSchema.LOGIC_NAME, Collections.emptyMap(), 
mock(ContextManager.class, RETURNS_DEEP_STUBS));
+    private final ShardingSphereConnection shardingSphereConnection = new 
ShardingSphereConnection(DefaultSchema.LOGIC_NAME, mock(ContextManager.class, 
RETURNS_DEEP_STUBS));
     
     @Test(expected = SQLFeatureNotSupportedException.class)
     public void assertPrepareCall() throws SQLException {
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/state/DriverStateContextTest.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/state/DriverStateContextTest.java
index 3ebb9ea..1acbe6b 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/state/DriverStateContextTest.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/state/DriverStateContextTest.java
@@ -30,13 +30,10 @@ import org.mockito.Answers;
 import org.mockito.Mock;
 import org.mockito.junit.MockitoJUnitRunner;
 
-import javax.sql.DataSource;
 import java.sql.Connection;
-import java.util.Collections;
 
 import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.junit.Assert.assertThat;
-import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -54,7 +51,7 @@ public final class DriverStateContextTest {
     
     @Test
     public void assertGetConnectionWithOkState() {
-        Connection actual = 
DriverStateContext.getConnection(DefaultSchema.LOGIC_NAME, 
Collections.singletonMap("ds", mock(DataSource.class, RETURNS_DEEP_STUBS)), 
contextManager);
+        Connection actual = 
DriverStateContext.getConnection(DefaultSchema.LOGIC_NAME, contextManager);
         assertThat(actual, instanceOf(ShardingSphereConnection.class));
     }
 }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/state/circuit/CircuitBreakDriverStateTest.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/state/circuit/CircuitBreakDriverStateTest.java
index 060f919..4b446a3 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/state/circuit/CircuitBreakDriverStateTest.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/state/circuit/CircuitBreakDriverStateTest.java
@@ -23,7 +23,6 @@ import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.junit.Test;
 
 import java.sql.Connection;
-import java.util.Collections;
 
 import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.junit.Assert.assertThat;
@@ -34,7 +33,7 @@ public final class CircuitBreakDriverStateTest {
     
     @Test
     public void assertGetConnection() {
-        Connection actual = new 
CircuitBreakDriverState().getConnection(DefaultSchema.LOGIC_NAME, 
Collections.emptyMap(), mock(ContextManager.class, RETURNS_DEEP_STUBS));
+        Connection actual = new 
CircuitBreakDriverState().getConnection(DefaultSchema.LOGIC_NAME, 
mock(ContextManager.class, RETURNS_DEEP_STUBS));
         assertThat(actual, instanceOf(CircuitBreakerConnection.class));
     }
 }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/state/ok/OKDriverStateTest.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/state/ok/OKDriverStateTest.java
index 20c4078..765fbdc 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/state/ok/OKDriverStateTest.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/state/ok/OKDriverStateTest.java
@@ -24,9 +24,7 @@ import 
org.apache.shardingsphere.transaction.core.TransactionType;
 import org.apache.shardingsphere.transaction.core.TransactionTypeHolder;
 import org.junit.Test;
 
-import javax.sql.DataSource;
 import java.sql.Connection;
-import java.util.Collections;
 
 import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.junit.Assert.assertThat;
@@ -38,8 +36,7 @@ public final class OKDriverStateTest {
     @Test
     public void assertGetConnection() {
         TransactionTypeHolder.set(TransactionType.LOCAL);
-        Connection actual = new OKDriverState().getConnection(
-                DefaultSchema.LOGIC_NAME, Collections.singletonMap("ds", 
mock(DataSource.class, RETURNS_DEEP_STUBS)), mock(ContextManager.class, 
RETURNS_DEEP_STUBS));
+        Connection actual = new 
OKDriverState().getConnection(DefaultSchema.LOGIC_NAME, 
mock(ContextManager.class, RETURNS_DEEP_STUBS));
         assertThat(actual, instanceOf(ShardingSphereConnection.class));
     }
 }
diff --git 
a/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
 
b/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
index c410653..4eb5db3 100644
--- 
a/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
+++ 
b/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
@@ -62,6 +62,16 @@ public final class ContextManager implements AutoCloseable {
     }
     
     /**
+     * Get data source map.
+     * 
+     * @param schemaName schema name
+     * @return data source map
+     */
+    public Map<String, DataSource> getDataSourceMap(final String schemaName) {
+        return 
metaDataContexts.getMetaData(schemaName).getResource().getDataSources();
+    }
+    
+    /**
      * Renew meta data contexts.
      *
      * @param metaDataContexts meta data contexts

Reply via email to