You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2020/09/21 10:55:23 UTC
[shardingsphere] branch master updated: refactor datasource&context
(#7532)
This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 da28a95 refactor datasource&context (#7532)
da28a95 is described below
commit da28a95d18e3c230c61f96dd19428a803eb24b4e
Author: kimmking <ki...@163.com>
AuthorDate: Mon Sep 21 18:55:03 2020 +0800
refactor datasource&context (#7532)
* refactor datasource
* use autoCloseable
---
.../context/schema/GovernanceSchemaContexts.java | 45 +++++++++++-----------
.../schema/GovernanceSchemaContextsTest.java | 18 ++++-----
.../infra/context/SchemaContext.java | 7 ++++
.../infra/context/SchemaContexts.java | 5 ++-
.../infra/context/impl/StandardSchemaContexts.java | 10 ++---
.../infra/context/schema/ShardingSphereSchema.java | 18 +++++----
.../infra/context/SchemaContextsBuilderTest.java | 12 +++---
.../context/impl/StandardSchemaContextsTest.java | 9 +++--
.../context/schema/ShardingSphereSchemaTest.java | 6 +--
...bleDataSource.java => CloseableDataSource.java} | 3 +-
.../core/datasource/ShardingSphereDataSource.java | 19 +++++----
.../GovernanceShardingSphereDataSource.java | 2 +-
.../jdbc/datasource/JDBCBackendDataSource.java | 2 +-
.../proxy/backend/context/ProxyContext.java | 6 +--
.../backend/text/admin/UnicastBackendHandler.java | 2 +-
.../backend/text/admin/RDLBackendHandlerTest.java | 2 +-
.../init/impl/AbstractBootstrapInitializer.java | 4 +-
.../impl/GovernanceBootstrapInitializerTest.java | 2 +-
.../frontend/netty/ServerHandlerInitializer.java | 2 +-
19 files changed, 94 insertions(+), 80 deletions(-)
diff --git a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-context/src/main/java/org/apache/shardingsphere/governance/context/schema/GovernanceSchemaContexts.java b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-context/src/main/java/org/apache/shardingsphere/governance/context/schema/GovernanceSchemaContexts.java
index a710293..49373bb 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-context/src/main/java/org/apache/shardingsphere/governance/context/schema/GovernanceSchemaContexts.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-context/src/main/java/org/apache/shardingsphere/governance/context/schema/GovernanceSchemaContexts.java
@@ -54,6 +54,7 @@ import org.apache.shardingsphere.infra.rule.StatusContainedRule;
import org.apache.shardingsphere.infra.rule.event.impl.DataSourceNameDisabledEvent;
import javax.sql.DataSource;
+import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Collection;
@@ -83,7 +84,7 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
}
private void disableDataSources() {
- schemaContexts.getSchemaContexts().forEach((key, value)
+ schemaContexts.getSchemaContextMap().forEach((key, value)
-> value.getSchema().getRules().stream().filter(each -> each instanceof StatusContainedRule).forEach(each -> disableDataSources(key, (StatusContainedRule) each)));
}
@@ -97,7 +98,7 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
}
private void persistMetaData() {
- schemaContexts.getSchemaContexts().forEach((key, value) -> governanceFacade.getConfigCenter()
+ schemaContexts.getSchemaContextMap().forEach((key, value) -> governanceFacade.getConfigCenter()
.persistMetaData(key, value.getSchema().getMetaData().getRuleSchemaMetaData()));
}
@@ -117,8 +118,8 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
}
@Override
- public Map<String, SchemaContext> getSchemaContexts() {
- return schemaContexts.getSchemaContexts();
+ public Map<String, SchemaContext> getSchemaContextMap() {
+ return schemaContexts.getSchemaContextMap();
}
@Override
@@ -142,7 +143,7 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
}
@Override
- public void close() throws Exception {
+ public void close() throws IOException {
schemaContexts.close();
governanceFacade.close();
}
@@ -155,11 +156,11 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
*/
@Subscribe
public synchronized void renew(final SchemaAddedEvent event) throws SQLException {
- Map<String, SchemaContext> schemas = new HashMap<>(schemaContexts.getSchemaContexts());
+ Map<String, SchemaContext> schemas = new HashMap<>(schemaContexts.getSchemaContextMap());
schemas.put(event.getSchemaName(), createAddedSchemaContext(event));
schemaContexts = new StandardSchemaContexts(schemas, schemaContexts.getAuthentication(), schemaContexts.getProps(), schemaContexts.getDatabaseType());
governanceFacade.getConfigCenter().persistMetaData(event.getSchemaName(),
- schemaContexts.getSchemaContexts().get(event.getSchemaName()).getSchema().getMetaData().getRuleSchemaMetaData());
+ schemaContexts.getSchemaContextMap().get(event.getSchemaName()).getSchema().getMetaData().getRuleSchemaMetaData());
ShardingSphereEventBus.getInstance().post(
new DataSourceChangeCompletedEvent(event.getSchemaName(), schemaContexts.getDatabaseType(), schemas.get(event.getSchemaName()).getSchema().getDataSources()));
}
@@ -171,7 +172,7 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
*/
@Subscribe
public synchronized void renew(final SchemaDeletedEvent event) {
- Map<String, SchemaContext> schemas = new HashMap<>(schemaContexts.getSchemaContexts());
+ Map<String, SchemaContext> schemas = new HashMap<>(schemaContexts.getSchemaContextMap());
schemas.remove(event.getSchemaName());
schemaContexts = new StandardSchemaContexts(schemas, schemaContexts.getAuthentication(), schemaContexts.getProps(), schemaContexts.getDatabaseType());
}
@@ -194,7 +195,7 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
*/
@Subscribe
public synchronized void renew(final AuthenticationChangedEvent event) {
- schemaContexts = new StandardSchemaContexts(schemaContexts.getSchemaContexts(), event.getAuthentication(), schemaContexts.getProps(), schemaContexts.getDatabaseType());
+ schemaContexts = new StandardSchemaContexts(schemaContexts.getSchemaContextMap(), event.getAuthentication(), schemaContexts.getProps(), schemaContexts.getDatabaseType());
}
/**
@@ -204,8 +205,8 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
*/
@Subscribe
public synchronized void renew(final MetaDataChangedEvent event) {
- Map<String, SchemaContext> newSchemaContexts = new HashMap<>(schemaContexts.getSchemaContexts().size(), 1);
- for (Entry<String, SchemaContext> entry : schemaContexts.getSchemaContexts().entrySet()) {
+ Map<String, SchemaContext> newSchemaContexts = new HashMap<>(schemaContexts.getSchemaContextMap().size(), 1);
+ for (Entry<String, SchemaContext> entry : schemaContexts.getSchemaContextMap().entrySet()) {
String schemaName = entry.getKey();
SchemaContext oldSchemaContext = entry.getValue();
SchemaContext newSchemaContext = event.getSchemaNames().contains(schemaName)
@@ -224,10 +225,10 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
*/
@Subscribe
public synchronized void renew(final RuleConfigurationsChangedEvent event) throws SQLException {
- Map<String, SchemaContext> newSchemaContexts = new HashMap<>(schemaContexts.getSchemaContexts());
+ Map<String, SchemaContext> newSchemaContexts = new HashMap<>(schemaContexts.getSchemaContextMap());
String schemaName = event.getSchemaName();
newSchemaContexts.remove(schemaName);
- newSchemaContexts.put(schemaName, getChangedSchemaContext(schemaContexts.getSchemaContexts().get(schemaName), event.getRuleConfigurations()));
+ newSchemaContexts.put(schemaName, getChangedSchemaContext(schemaContexts.getSchemaContextMap().get(schemaName), event.getRuleConfigurations()));
schemaContexts = new StandardSchemaContexts(newSchemaContexts, schemaContexts.getAuthentication(), schemaContexts.getProps(), schemaContexts.getDatabaseType());
governanceFacade.getConfigCenter().persistMetaData(schemaName, newSchemaContexts.get(schemaName).getSchema().getMetaData().getRuleSchemaMetaData());
}
@@ -241,9 +242,9 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
@Subscribe
public synchronized void renew(final DataSourceChangedEvent event) throws SQLException {
String schemaName = event.getSchemaName();
- Map<String, SchemaContext> newSchemaContexts = new HashMap<>(schemaContexts.getSchemaContexts());
+ Map<String, SchemaContext> newSchemaContexts = new HashMap<>(schemaContexts.getSchemaContextMap());
newSchemaContexts.remove(schemaName);
- newSchemaContexts.put(schemaName, getChangedSchemaContext(schemaContexts.getSchemaContexts().get(schemaName), event.getDataSourceConfigurations()));
+ newSchemaContexts.put(schemaName, getChangedSchemaContext(schemaContexts.getSchemaContextMap().get(schemaName), event.getDataSourceConfigurations()));
schemaContexts = new StandardSchemaContexts(newSchemaContexts, schemaContexts.getAuthentication(), schemaContexts.getProps(), schemaContexts.getDatabaseType());
ShardingSphereEventBus.getInstance().post(
new DataSourceChangeCompletedEvent(event.getSchemaName(), schemaContexts.getDatabaseType(), newSchemaContexts.get(event.getSchemaName()).getSchema().getDataSources()));
@@ -257,7 +258,7 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
@Subscribe
public synchronized void renew(final DisabledStateChangedEvent event) {
GovernanceSchema governanceSchema = event.getGovernanceSchema();
- Collection<ShardingSphereRule> rules = schemaContexts.getSchemaContexts().get(governanceSchema.getSchemaName()).getSchema().getRules();
+ Collection<ShardingSphereRule> rules = schemaContexts.getSchemaContextMap().get(governanceSchema.getSchemaName()).getSchema().getRules();
for (ShardingSphereRule each : rules) {
if (each instanceof StatusContainedRule) {
((StatusContainedRule) each).updateRuleStatus(new DataSourceNameDisabledEvent(governanceSchema.getDataSourceName(), event.isDisabled()));
@@ -273,7 +274,7 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
@Subscribe
public synchronized void renew(final CircuitStateChangedEvent event) {
schemaContexts = new StandardSchemaContexts(
- schemaContexts.getSchemaContexts(), schemaContexts.getAuthentication(), schemaContexts.getProps(), schemaContexts.getDatabaseType(), event.isCircuitBreak());
+ schemaContexts.getSchemaContextMap(), schemaContexts.getAuthentication(), schemaContexts.getProps(), schemaContexts.getDatabaseType(), event.isCircuitBreak());
}
private SchemaContext createAddedSchemaContext(final SchemaAddedEvent event) throws SQLException {
@@ -282,12 +283,12 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
DatabaseType databaseType = getDatabaseType(dataSourcesMap);
SchemaContextsBuilder schemaContextsBuilder = new SchemaContextsBuilder(databaseType, dataSourcesMap,
Collections.singletonMap(schemaName, event.getRuleConfigurations()), schemaContexts.getAuthentication(), schemaContexts.getProps().getProps());
- return schemaContextsBuilder.build().getSchemaContexts().get(schemaName);
+ return schemaContextsBuilder.build().getSchemaContextMap().get(schemaName);
}
private Map<String, SchemaContext> getChangedSchemaContexts(final ConfigurationProperties props) {
- Map<String, SchemaContext> result = new HashMap<>(schemaContexts.getSchemaContexts().size());
- for (Entry<String, SchemaContext> entry : schemaContexts.getSchemaContexts().entrySet()) {
+ Map<String, SchemaContext> result = new HashMap<>(schemaContexts.getSchemaContextMap().size());
+ for (Entry<String, SchemaContext> entry : schemaContexts.getSchemaContextMap().entrySet()) {
RuntimeContext runtimeContext = entry.getValue().getRuntimeContext();
result.put(entry.getKey(), new SchemaContext(entry.getValue().getName(), entry.getValue().getSchema(), new RuntimeContext(runtimeContext.getCachedDatabaseMetaData(),
new ExecutorKernel(props.<Integer>getValue(ConfigurationPropertyKey.EXECUTOR_SIZE)), runtimeContext.getSqlParserEngine())));
@@ -304,7 +305,7 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
ShardingSphereSchema oldSchema = oldSchemaContext.getSchema();
SchemaContextsBuilder builder = new SchemaContextsBuilder(schemaContexts.getDatabaseType(), Collections.singletonMap(oldSchemaContext.getName(), oldSchema.getDataSources()),
Collections.singletonMap(oldSchemaContext.getName(), ruleConfigs), schemaContexts.getAuthentication(), schemaContexts.getProps().getProps());
- return builder.build().getSchemaContexts().values().iterator().next();
+ return builder.build().getSchemaContextMap().values().iterator().next();
}
private SchemaContext getChangedSchemaContext(final SchemaContext oldSchemaContext, final Map<String, DataSourceConfiguration> newDataSourceConfigs) throws SQLException {
@@ -316,7 +317,7 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
getNewDataSources(oldSchemaContext.getSchema().getDataSources(), getAddedDataSources(oldSchemaContext, newDataSourceConfigs), modifiedDataSources, deletedDataSources));
return new SchemaContextsBuilder(schemaContexts.getDatabaseType(), dataSourcesMap,
Collections.singletonMap(oldSchemaContext.getName(), oldSchemaContext.getSchema().getConfigurations()), schemaContexts.getAuthentication(),
- schemaContexts.getProps().getProps()).build().getSchemaContexts().get(oldSchemaContext.getName());
+ schemaContexts.getProps().getProps()).build().getSchemaContextMap().get(oldSchemaContext.getName());
}
private Map<String, DataSource> getNewDataSources(final Map<String, DataSource> oldDataSources,
diff --git a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-context/src/test/java/org/apache/shardingsphere/governance/context/schema/GovernanceSchemaContextsTest.java b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-context/src/test/java/org/apache/shardingsphere/governance/context/schema/GovernanceSchemaContextsTest.java
index f3082d3..3a1fabb 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-context/src/test/java/org/apache/shardingsphere/governance/context/schema/GovernanceSchemaContextsTest.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-context/src/test/java/org/apache/shardingsphere/governance/context/schema/GovernanceSchemaContextsTest.java
@@ -128,7 +128,7 @@ public final class GovernanceSchemaContextsTest {
@Test
public void assertGetSchemaContexts() {
- assertThat(governanceSchemaContexts.getSchemaContexts().get("schema"), is(schemaContext));
+ assertThat(governanceSchemaContexts.getSchemaContextMap().get("schema"), is(schemaContext));
}
@Test
@@ -156,7 +156,7 @@ public final class GovernanceSchemaContextsTest {
public void assertSchemaAdd() {
SchemaAddedEvent event = new SchemaAddedEvent("schema_add", getDataSourceConfigurations(), new LinkedList<>());
governanceSchemaContexts.renew(event);
- assertNotNull(governanceSchemaContexts.getSchemaContexts().get("schema_add"));
+ assertNotNull(governanceSchemaContexts.getSchemaContextMap().get("schema_add"));
}
private Map<String, DataSourceConfiguration> getDataSourceConfigurations() {
@@ -172,7 +172,7 @@ public final class GovernanceSchemaContextsTest {
public void assertSchemaDelete() {
SchemaDeletedEvent event = new SchemaDeletedEvent("schema");
governanceSchemaContexts.renew(event);
- assertNull(governanceSchemaContexts.getSchemaContexts().get("schema"));
+ assertNull(governanceSchemaContexts.getSchemaContextMap().get("schema"));
}
@Test
@@ -196,24 +196,24 @@ public final class GovernanceSchemaContextsTest {
public void assertMetaDataChanged() {
MetaDataChangedEvent event = new MetaDataChangedEvent(Collections.singletonList("schema_changed"), mock(RuleSchemaMetaData.class));
governanceSchemaContexts.renew(event);
- assertTrue(governanceSchemaContexts.getSchemaContexts().containsKey("schema"));
- assertFalse(governanceSchemaContexts.getSchemaContexts().containsKey("schema_changed"));
+ assertTrue(governanceSchemaContexts.getSchemaContextMap().containsKey("schema"));
+ assertFalse(governanceSchemaContexts.getSchemaContextMap().containsKey("schema_changed"));
}
@Test
public void assertMetaDataChangedWithExistSchema() {
MetaDataChangedEvent event = new MetaDataChangedEvent(Collections.singletonList("schema"), mock(RuleSchemaMetaData.class));
governanceSchemaContexts.renew(event);
- assertThat(governanceSchemaContexts.getSchemaContexts().get("schema"), not(schemaContext));
+ assertThat(governanceSchemaContexts.getSchemaContextMap().get("schema"), not(schemaContext));
}
@Test
@SneakyThrows
public void assertRuleConfigurationsChanged() {
- assertThat(governanceSchemaContexts.getSchemaContexts().get("schema"), is(schemaContext));
+ assertThat(governanceSchemaContexts.getSchemaContextMap().get("schema"), is(schemaContext));
RuleConfigurationsChangedEvent event = new RuleConfigurationsChangedEvent("schema", new LinkedList<>());
governanceSchemaContexts.renew(event);
- assertThat(governanceSchemaContexts.getSchemaContexts().get("schema"), not(schemaContext));
+ assertThat(governanceSchemaContexts.getSchemaContextMap().get("schema"), not(schemaContext));
}
@Test
@@ -228,7 +228,7 @@ public final class GovernanceSchemaContextsTest {
public void assertDataSourceChanged() {
DataSourceChangedEvent event = new DataSourceChangedEvent("schema", getChangedDataSourceConfigurations());
governanceSchemaContexts.renew(event);
- assertTrue(governanceSchemaContexts.getSchemaContexts().get("schema").getSchema().getDataSources().containsKey("ds_2"));
+ assertTrue(governanceSchemaContexts.getSchemaContextMap().get("schema").getSchema().getDataSources().containsKey("ds_2"));
}
private Map<String, DataSourceConfiguration> getChangedDataSourceConfigurations() {
diff --git a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/SchemaContext.java b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/SchemaContext.java
index c6a78e7..736b6d8 100644
--- a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/SchemaContext.java
+++ b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/SchemaContext.java
@@ -43,4 +43,11 @@ public final class SchemaContext {
public boolean isComplete() {
return !schema.getRules().isEmpty() && !schema.getDataSources().isEmpty();
}
+
+ /**
+ * Close executorKernel in runtimeContext.
+ */
+ public void close() {
+ runtimeContext.getExecutorKernel().close();
+ }
}
diff --git a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/SchemaContexts.java b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/SchemaContexts.java
index fdbbc95..3321bf9 100644
--- a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/SchemaContexts.java
+++ b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/SchemaContexts.java
@@ -21,12 +21,13 @@ import org.apache.shardingsphere.infra.auth.Authentication;
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import java.io.Closeable;
import java.util.Map;
/**
* Schema contexts.
*/
-public interface SchemaContexts extends AutoCloseable {
+public interface SchemaContexts extends Closeable {
/**
* Get database type.
@@ -40,7 +41,7 @@ public interface SchemaContexts extends AutoCloseable {
*
* @return schema contexts
*/
- Map<String, SchemaContext> getSchemaContexts();
+ Map<String, SchemaContext> getSchemaContextMap();
/**
* Get default schema context.
diff --git a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/impl/StandardSchemaContexts.java b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/impl/StandardSchemaContexts.java
index f46ec23..f3cee3d 100644
--- a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/impl/StandardSchemaContexts.java
+++ b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/impl/StandardSchemaContexts.java
@@ -38,7 +38,7 @@ import java.util.Properties;
@Getter
public final class StandardSchemaContexts implements SchemaContexts {
- private final Map<String, SchemaContext> schemaContexts;
+ private final Map<String, SchemaContext> schemaContextMap;
private final Authentication authentication;
@@ -53,17 +53,17 @@ public final class StandardSchemaContexts implements SchemaContexts {
this(new HashMap<>(), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType(), false);
}
- public StandardSchemaContexts(final Map<String, SchemaContext> schemaContexts, final Authentication authentication, final ConfigurationProperties props, final DatabaseType databaseType) {
- this(schemaContexts, authentication, props, databaseType, false);
+ public StandardSchemaContexts(final Map<String, SchemaContext> schemaContextMap, final Authentication authentication, final ConfigurationProperties props, final DatabaseType databaseType) {
+ this(schemaContextMap, authentication, props, databaseType, false);
}
@Override
public SchemaContext getDefaultSchemaContext() {
- return schemaContexts.get(DefaultSchema.LOGIC_NAME);
+ return schemaContextMap.get(DefaultSchema.LOGIC_NAME);
}
@Override
public void close() {
- schemaContexts.values().forEach(each -> each.getRuntimeContext().getExecutorKernel().close());
+ schemaContextMap.values().forEach(each -> each.close());
}
}
diff --git a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/schema/ShardingSphereSchema.java b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/schema/ShardingSphereSchema.java
index b55a22e..424434b 100644
--- a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/schema/ShardingSphereSchema.java
+++ b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/schema/ShardingSphereSchema.java
@@ -24,7 +24,7 @@ import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import javax.sql.DataSource;
-import java.lang.reflect.Method;
+import java.sql.SQLException;
import java.util.Collection;
import java.util.Map;
@@ -46,19 +46,21 @@ public final class ShardingSphereSchema {
/**
* Close data sources.
* @param dataSources data sources
+ * @throws SQLException exception
*/
- public void closeDataSources(final Collection<String> dataSources) {
+ public void closeDataSources(final Collection<String> dataSources) throws SQLException {
for (String each :dataSources) {
close(this.dataSources.get(each));
}
}
- private void close(final DataSource dataSource) {
- try {
- Method method = dataSource.getClass().getDeclaredMethod("close");
- method.setAccessible(true);
- method.invoke(dataSource);
- } catch (final ReflectiveOperationException ignored) {
+ private void close(final DataSource dataSource) throws SQLException {
+ if (dataSource instanceof AutoCloseable) {
+ try {
+ ((AutoCloseable) dataSource).close();
+ } catch (Exception e) {
+ throw new SQLException(e);
+ }
}
}
}
diff --git a/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/SchemaContextsBuilderTest.java b/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/SchemaContextsBuilderTest.java
index 1bb8cdb..d3eef72 100644
--- a/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/SchemaContextsBuilderTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/SchemaContextsBuilderTest.java
@@ -44,7 +44,7 @@ public final class SchemaContextsBuilderTest {
DatabaseType databaseType = DatabaseTypes.getActualDatabaseType("FixtureDB");
SchemaContexts actual = new SchemaContextsBuilder(databaseType, Collections.emptyMap(), Collections.emptyMap(), null).build();
assertThat(actual.getDatabaseType(), CoreMatchers.is(databaseType));
- assertTrue(actual.getSchemaContexts().isEmpty());
+ assertTrue(actual.getSchemaContextMap().isEmpty());
assertTrue(actual.getAuthentication().getUsers().isEmpty());
assertTrue(actual.getProps().getProps().isEmpty());
assertFalse(actual.isCircuitBreak());
@@ -59,7 +59,7 @@ public final class SchemaContextsBuilderTest {
Collections.singletonMap("logic_db", Collections.singleton(new FixtureRuleConfiguration())), props).build();
assertThat(actual.getDatabaseType(), CoreMatchers.is(databaseType));
assertRules(actual);
- assertTrue(actual.getSchemaContexts().get("logic_db").getSchema().getDataSources().isEmpty());
+ assertTrue(actual.getSchemaContextMap().get("logic_db").getSchema().getDataSources().isEmpty());
assertTrue(actual.getAuthentication().getUsers().isEmpty());
assertThat(actual.getProps().getProps().size(), CoreMatchers.is(1));
assertThat(actual.getProps().getValue(ConfigurationPropertyKey.EXECUTOR_SIZE), CoreMatchers.is(1));
@@ -83,12 +83,12 @@ public final class SchemaContextsBuilderTest {
}
private void assertRules(final SchemaContexts actual) {
- assertThat(actual.getSchemaContexts().get("logic_db").getSchema().getRules().size(), CoreMatchers.is(1));
- assertThat(actual.getSchemaContexts().get("logic_db").getSchema().getRules().iterator().next(), CoreMatchers.instanceOf(FixtureRule.class));
+ assertThat(actual.getSchemaContextMap().get("logic_db").getSchema().getRules().size(), CoreMatchers.is(1));
+ assertThat(actual.getSchemaContextMap().get("logic_db").getSchema().getRules().iterator().next(), CoreMatchers.instanceOf(FixtureRule.class));
}
private void assertDataSources(final SchemaContexts actual) {
- assertThat(actual.getSchemaContexts().get("logic_db").getSchema().getDataSources().size(), CoreMatchers.is(1));
- assertThat(actual.getSchemaContexts().get("logic_db").getSchema().getDataSources().get("ds"), CoreMatchers.instanceOf(MockedDataSource.class));
+ assertThat(actual.getSchemaContextMap().get("logic_db").getSchema().getDataSources().size(), CoreMatchers.is(1));
+ assertThat(actual.getSchemaContextMap().get("logic_db").getSchema().getDataSources().get("ds"), CoreMatchers.instanceOf(MockedDataSource.class));
}
}
diff --git a/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/impl/StandardSchemaContextsTest.java b/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/impl/StandardSchemaContextsTest.java
index 562724d..c0f0618 100644
--- a/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/impl/StandardSchemaContextsTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/impl/StandardSchemaContextsTest.java
@@ -20,6 +20,8 @@ package org.apache.shardingsphere.infra.context.impl;
import org.apache.shardingsphere.infra.auth.Authentication;
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
import org.apache.shardingsphere.infra.context.SchemaContext;
+import org.apache.shardingsphere.infra.context.runtime.RuntimeContext;
+import org.apache.shardingsphere.infra.context.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
import org.junit.Test;
@@ -40,15 +42,16 @@ public final class StandardSchemaContextsTest {
public void assertGetDefaultSchemaContext() {
StandardSchemaContexts standardSchemaContexts = new StandardSchemaContexts();
SchemaContext expected = mock(SchemaContext.class);
- standardSchemaContexts.getSchemaContexts().put("logic_db", expected);
+ standardSchemaContexts.getSchemaContextMap().put("logic_db", expected);
assertThat(standardSchemaContexts.getDefaultSchemaContext(), is(expected));
}
@Test
public void assertClose() {
- SchemaContext schemaContext = mock(SchemaContext.class, RETURNS_DEEP_STUBS);
+ RuntimeContext runtimeContext = mock(RuntimeContext.class, RETURNS_DEEP_STUBS);
ExecutorKernel executorKernel = mock(ExecutorKernel.class);
- when(schemaContext.getRuntimeContext().getExecutorKernel()).thenReturn(executorKernel);
+ when(runtimeContext.getExecutorKernel()).thenReturn(executorKernel);
+ SchemaContext schemaContext = new SchemaContext("logic_db", mock(ShardingSphereSchema.class), runtimeContext);
StandardSchemaContexts standardSchemaContexts = new StandardSchemaContexts(
Collections.singletonMap("logic_db", schemaContext), new Authentication(), new ConfigurationProperties(new Properties()), mock(DatabaseType.class));
standardSchemaContexts.close();
diff --git a/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/schema/ShardingSphereSchemaTest.java b/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/schema/ShardingSphereSchemaTest.java
index d7a298e..ed34cbe 100644
--- a/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/schema/ShardingSphereSchemaTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/schema/ShardingSphereSchemaTest.java
@@ -17,7 +17,7 @@
package org.apache.shardingsphere.infra.context.schema;
-import org.apache.shardingsphere.infra.context.schema.fixture.ClosableDataSource;
+import org.apache.shardingsphere.infra.context.schema.fixture.CloseableDataSource;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -38,10 +38,10 @@ import static org.mockito.Mockito.verify;
public final class ShardingSphereSchemaTest {
@Mock
- private ClosableDataSource dataSource0;
+ private CloseableDataSource dataSource0;
@Mock
- private ClosableDataSource dataSource1;
+ private CloseableDataSource dataSource1;
@Mock
private DataSource dataSource2;
diff --git a/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/schema/fixture/ClosableDataSource.java b/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/schema/fixture/CloseableDataSource.java
similarity index 90%
rename from shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/schema/fixture/ClosableDataSource.java
rename to shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/schema/fixture/CloseableDataSource.java
index 63cea89..cd92a1e 100644
--- a/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/schema/fixture/ClosableDataSource.java
+++ b/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/schema/fixture/CloseableDataSource.java
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.infra.context.schema.fixture;
import javax.sql.DataSource;
+import java.io.Closeable;
-public interface ClosableDataSource extends DataSource, AutoCloseable {
+public interface CloseableDataSource extends DataSource, Closeable {
}
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 0ac2499..a3179d2 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
@@ -34,7 +34,7 @@ import org.apache.shardingsphere.transaction.context.impl.StandardTransactionCon
import org.apache.shardingsphere.transaction.core.TransactionTypeHolder;
import javax.sql.DataSource;
-import java.lang.reflect.Method;
+import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Collection;
@@ -101,7 +101,7 @@ public final class ShardingSphereDataSource extends AbstractUnsupportedOperation
* @return data sources
*/
public Map<String, DataSource> getDataSourceMap() {
- return schemaContexts.getSchemaContexts().get(DefaultSchema.LOGIC_NAME).getSchema().getDataSources();
+ return schemaContexts.getSchemaContextMap().get(DefaultSchema.LOGIC_NAME).getSchema().getDataSources();
}
@Override
@@ -113,19 +113,18 @@ public final class ShardingSphereDataSource extends AbstractUnsupportedOperation
* Close dataSources.
*
* @param dataSourceNames data source names
- * @throws Exception exception
+ * @throws IOException exception
*/
public void close(final Collection<String> dataSourceNames) throws Exception {
- dataSourceNames.forEach(each -> close(getDataSourceMap().get(each)));
+ for (String each : dataSourceNames) {
+ close(getDataSourceMap().get(each));
+ }
schemaContexts.close();
}
- private void close(final DataSource dataSource) {
- try {
- Method method = dataSource.getClass().getDeclaredMethod("close");
- method.setAccessible(true);
- method.invoke(dataSource);
- } catch (final ReflectiveOperationException ignored) {
+ private void close(final DataSource dataSource) throws Exception {
+ if (dataSource instanceof AutoCloseable) {
+ ((AutoCloseable) dataSource).close();
}
}
}
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/java/org/apache/shardingsphere/driver/governance/internal/datasource/GovernanceShardingSphereDataSource.java b/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/java/org/apache/shardingsphere/driver/governance/internal/datasource/GovernanceShardingSphereDataSource.java
index 18f1be3..a03bad0 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/java/org/apache/shardingsphere/driver/governance/internal/datasource/GovernanceShardingSphereDataSource.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/java/org/apache/shardingsphere/driver/governance/internal/datasource/GovernanceShardingSphereDataSource.java
@@ -152,6 +152,6 @@ public final class GovernanceShardingSphereDataSource extends AbstractUnsupporte
}
private Map<String, DataSource> getDataSourceMap() {
- return schemaContexts.getSchemaContexts().get(DefaultSchema.LOGIC_NAME).getSchema().getDataSources();
+ return schemaContexts.getSchemaContextMap().get(DefaultSchema.LOGIC_NAME).getSchema().getDataSources();
}
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/datasource/JDBCBackendDataSource.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/datasource/JDBCBackendDataSource.java
index a8db578..cbcf8a6 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/datasource/JDBCBackendDataSource.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/datasource/JDBCBackendDataSource.java
@@ -76,7 +76,7 @@ public final class JDBCBackendDataSource implements BackendDataSource {
@SuppressWarnings("SynchronizationOnLocalVariableOrMethodParameter")
public List<Connection> getConnections(final String schemaName, final String dataSourceName,
final int connectionSize, final ConnectionMode connectionMode, final TransactionType transactionType) throws SQLException {
- DataSource dataSource = ProxyContext.getInstance().getSchemaContexts().getSchemaContexts().get(schemaName).getSchema().getDataSources().get(dataSourceName);
+ DataSource dataSource = ProxyContext.getInstance().getSchemaContexts().getSchemaContextMap().get(schemaName).getSchema().getDataSources().get(dataSourceName);
Preconditions.checkNotNull(dataSource, "Can not get connection from datasource %s.", dataSourceName);
if (1 == connectionSize) {
return Collections.singletonList(createConnection(schemaName, dataSourceName, dataSource, transactionType));
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/context/ProxyContext.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/context/ProxyContext.java
index 0e70975..3a601c2 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/context/ProxyContext.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/context/ProxyContext.java
@@ -80,7 +80,7 @@ public final class ProxyContext {
* @return schema exists or not
*/
public boolean schemaExists(final String schemaName) {
- return schemaContexts.getSchemaContexts().containsKey(schemaName);
+ return schemaContexts.getSchemaContextMap().containsKey(schemaName);
}
/**
@@ -90,7 +90,7 @@ public final class ProxyContext {
* @return schema context
*/
public SchemaContext getSchema(final String schemaName) {
- return Strings.isNullOrEmpty(schemaName) ? null : schemaContexts.getSchemaContexts().get(schemaName);
+ return Strings.isNullOrEmpty(schemaName) ? null : schemaContexts.getSchemaContextMap().get(schemaName);
}
/**
@@ -99,7 +99,7 @@ public final class ProxyContext {
* @return all schema names
*/
public List<String> getAllSchemaNames() {
- return new ArrayList<>(schemaContexts.getSchemaContexts().keySet());
+ return new ArrayList<>(schemaContexts.getSchemaContextMap().keySet());
}
/**
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/UnicastBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/UnicastBackendHandler.java
index 0ac4f38..5a584ba 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/UnicastBackendHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/UnicastBackendHandler.java
@@ -51,7 +51,7 @@ public final class UnicastBackendHandler implements TextProtocolBackendHandler {
@Override
public BackendResponse execute() throws SQLException {
if (null == backendConnection.getSchemaName()) {
- Map<String, SchemaContext> schemaContexts = ProxyContext.getInstance().getSchemaContexts().getSchemaContexts();
+ Map<String, SchemaContext> schemaContexts = ProxyContext.getInstance().getSchemaContexts().getSchemaContextMap();
if (schemaContexts.isEmpty()) {
throw new NoDatabaseSelectedException();
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/RDLBackendHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/RDLBackendHandlerTest.java
index c21ff2a..e611336 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/RDLBackendHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/RDLBackendHandlerTest.java
@@ -184,7 +184,7 @@ public final class RDLBackendHandlerTest {
schemaContexts.setAccessible(true);
if (isGovernance) {
SchemaContexts mockedSchemaContexts = mock(SchemaContexts.class);
- when(mockedSchemaContexts.getSchemaContexts()).thenReturn(Collections.singletonMap("schema", mock(SchemaContext.class)));
+ when(mockedSchemaContexts.getSchemaContextMap()).thenReturn(Collections.singletonMap("schema", mock(SchemaContext.class)));
schemaContexts.set(ProxyContext.getInstance(), mockedSchemaContexts);
} else {
schemaContexts.set(ProxyContext.getInstance(), new StandardSchemaContexts());
diff --git a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/init/impl/AbstractBootstrapInitializer.java b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/init/impl/AbstractBootstrapInitializer.java
index 7b752f9..a0f96fc 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/init/impl/AbstractBootstrapInitializer.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/init/impl/AbstractBootstrapInitializer.java
@@ -95,8 +95,8 @@ public abstract class AbstractBootstrapInitializer implements BootstrapInitializ
}
private TransactionContexts createTransactionContexts(final SchemaContexts schemaContexts) {
- Map<String, ShardingTransactionManagerEngine> transactionManagerEngines = new HashMap<>(schemaContexts.getSchemaContexts().size(), 1);
- for (Entry<String, SchemaContext> entry : schemaContexts.getSchemaContexts().entrySet()) {
+ Map<String, ShardingTransactionManagerEngine> transactionManagerEngines = new HashMap<>(schemaContexts.getSchemaContextMap().size(), 1);
+ for (Entry<String, SchemaContext> entry : schemaContexts.getSchemaContextMap().entrySet()) {
ShardingTransactionManagerEngine engine = new ShardingTransactionManagerEngine();
engine.init(schemaContexts.getDatabaseType(), entry.getValue().getSchema().getDataSources());
transactionManagerEngines.put(entry.getKey(), engine);
diff --git a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/init/impl/GovernanceBootstrapInitializerTest.java b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/init/impl/GovernanceBootstrapInitializerTest.java
index 70dc4cc..9b488df 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/init/impl/GovernanceBootstrapInitializerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/init/impl/GovernanceBootstrapInitializerTest.java
@@ -211,7 +211,7 @@ public final class GovernanceBootstrapInitializerTest extends AbstractBootstrapI
assertNotNull(actualSchemaContexts);
assertThat(actualSchemaContexts, instanceOf(GovernanceSchemaContexts.class));
assertThat(actualSchemaContexts.getDatabaseType(), is(schemaContexts.getDatabaseType()));
- assertThat(actualSchemaContexts.getSchemaContexts(), is(schemaContexts.getSchemaContexts()));
+ assertThat(actualSchemaContexts.getSchemaContextMap(), is(schemaContexts.getSchemaContextMap()));
assertThat(actualSchemaContexts.getDefaultSchemaContext(), is(schemaContexts.getDefaultSchemaContext()));
assertThat(actualSchemaContexts.getAuthentication(), is(schemaContexts.getAuthentication()));
assertThat(actualSchemaContexts.getProps(), is(schemaContexts.getProps()));
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/main/java/org/apache/shardingsphere/proxy/frontend/netty/ServerHandlerInitializer.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/main/java/org/apache/shardingsphere/proxy/frontend/netty/ServerHandlerInitializer.java
index a03ea57..d5e02d6 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/main/java/org/apache/shardingsphere/proxy/frontend/netty/ServerHandlerInitializer.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/main/java/org/apache/shardingsphere/proxy/frontend/netty/ServerHandlerInitializer.java
@@ -44,6 +44,6 @@ public final class ServerHandlerInitializer extends ChannelInitializer<SocketCha
private DatabaseType getDatabaseType() {
// TODO Consider loading from configuration.
- return ProxyContext.getInstance().getSchemaContexts().getSchemaContexts().isEmpty() ? new MySQLDatabaseType() : ProxyContext.getInstance().getSchemaContexts().getDatabaseType();
+ return ProxyContext.getInstance().getSchemaContexts().getSchemaContextMap().isEmpty() ? new MySQLDatabaseType() : ProxyContext.getInstance().getSchemaContexts().getDatabaseType();
}
}