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