This is an automated email from the ASF dual-hosted git repository.
panjuan 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 9d0ee5a8004 JDBC supports databaseName configuration and keep
compatible with schemaName (#16790)
9d0ee5a8004 is described below
commit 9d0ee5a80041038b3b75ee6a35d1b1dd55fb313e
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Wed Apr 13 18:42:30 2022 +0800
JDBC supports databaseName configuration and keep compatible with
schemaName (#16790)
---
.../yaml/config/pojo/YamlRootConfiguration.java | 12 ++++++++
.../api/ShardingSphereDataSourceFactory.java | 30 +++++++++----------
.../yaml/YamlShardingSphereDataSourceFactory.java | 6 ++--
.../ShardingSpherePipelineDataSourceCreator.java | 2 +-
.../core/datasource/ShardingSphereDataSource.java | 34 +++++++++++-----------
.../datasource/ShardingSphereDataSourceTest.java | 4 +--
.../boot/ShardingSphereAutoConfiguration.java | 12 ++++----
.../additional-spring-configuration-metadata.json | 4 +++
.../parser/DataSourceBeanDefinitionParser.java | 8 +++--
.../namespace/tag/DataSourceBeanDefinitionTag.java | 2 ++
.../resources/META-INF/namespace/datasource.xsd | 1 +
...hemaNameSetter.java => DatabaseNameSetter.java} | 20 ++++++++-----
...SetterTest.java => DatabaseNameSetterTest.java} | 16 +++++++---
.../scenario/rulealtered/RuleAlteredJobWorker.java | 4 +--
...rdingSpherePipelineDataSourceConfiguration.java | 2 +-
15 files changed, 95 insertions(+), 62 deletions(-)
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/yaml/config/pojo/YamlRootConfiguration.java
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/yaml/config/pojo/YamlRootConfiguration.java
index 0667aa9d8e7..f36282161d9 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/yaml/config/pojo/YamlRootConfiguration.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/yaml/config/pojo/YamlRootConfiguration.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.infra.yaml.config.pojo;
+import com.google.common.base.Strings;
import lombok.Getter;
import lombok.Setter;
import
org.apache.shardingsphere.infra.yaml.config.pojo.mode.YamlModeConfiguration;
@@ -34,6 +35,8 @@ import java.util.Properties;
@Setter
public final class YamlRootConfiguration implements YamlConfiguration {
+ private String databaseName;
+
private String schemaName;
private Map<String, Map<String, Object>> dataSources = new HashMap<>();
@@ -43,4 +46,13 @@ public final class YamlRootConfiguration implements
YamlConfiguration {
private YamlModeConfiguration mode;
private Properties props = new Properties();
+
+ /**
+ * Get database name.
+ *
+ * @return database name
+ */
+ public String getDatabaseName() {
+ return Strings.isNullOrEmpty(databaseName) ? schemaName : databaseName;
+ }
}
diff --git
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/api/ShardingSphereDataSourceFactory.java
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/api/ShardingSphereDataSourceFactory.java
index ce9a8dd1da5..9faf0ba3cb2 100644
---
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/api/ShardingSphereDataSourceFactory.java
+++
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/api/ShardingSphereDataSourceFactory.java
@@ -41,13 +41,13 @@ public final class ShardingSphereDataSourceFactory {
/**
* Create ShardingSphere data source.
*
- * @param schemaName schema name
+ * @param databaseName database name
* @param modeConfig mode configuration
* @return ShardingSphere data source
* @throws SQLException SQL exception
*/
- public static DataSource createDataSource(final String schemaName, final
ModeConfiguration modeConfig) throws SQLException {
- return new ShardingSphereDataSource(Strings.isNullOrEmpty(schemaName)
? DefaultSchema.LOGIC_NAME : schemaName, modeConfig);
+ public static DataSource createDataSource(final String databaseName, final
ModeConfiguration modeConfig) throws SQLException {
+ return new
ShardingSphereDataSource(Strings.isNullOrEmpty(databaseName) ?
DefaultSchema.LOGIC_NAME : databaseName, modeConfig);
}
/**
@@ -64,7 +64,7 @@ public final class ShardingSphereDataSourceFactory {
/**
* Create ShardingSphere data source.
*
- * @param schemaName schema name
+ * @param databaseName database name
* @param modeConfig mode configuration
* @param dataSourceMap data source map
* @param configs rule configurations
@@ -72,9 +72,9 @@ public final class ShardingSphereDataSourceFactory {
* @return ShardingSphere data source
* @throws SQLException SQL exception
*/
- public static DataSource createDataSource(final String schemaName, final
ModeConfiguration modeConfig,
+ public static DataSource createDataSource(final String databaseName, final
ModeConfiguration modeConfig,
final Map<String, DataSource>
dataSourceMap, final Collection<RuleConfiguration> configs, final Properties
props) throws SQLException {
- return new ShardingSphereDataSource(Strings.isNullOrEmpty(schemaName)
? DefaultSchema.LOGIC_NAME : schemaName, modeConfig, dataSourceMap, configs,
props);
+ return new
ShardingSphereDataSource(Strings.isNullOrEmpty(databaseName) ?
DefaultSchema.LOGIC_NAME : databaseName, modeConfig, dataSourceMap, configs,
props);
}
/**
@@ -95,7 +95,7 @@ public final class ShardingSphereDataSourceFactory {
/**
* Create ShardingSphere data source.
*
- * @param schemaName schema name
+ * @param databaseName database name
* @param modeConfig mode configuration
* @param dataSource data source
* @param configs rule configurations
@@ -103,9 +103,9 @@ public final class ShardingSphereDataSourceFactory {
* @return ShardingSphere data source
* @throws SQLException SQL exception
*/
- public static DataSource createDataSource(final String schemaName, final
ModeConfiguration modeConfig,
+ public static DataSource createDataSource(final String databaseName, final
ModeConfiguration modeConfig,
final DataSource dataSource,
final Collection<RuleConfiguration> configs, final Properties props) throws
SQLException {
- return createDataSource(schemaName, modeConfig,
Collections.singletonMap(Strings.isNullOrEmpty(schemaName) ?
DefaultSchema.LOGIC_NAME : schemaName, dataSource), configs, props);
+ return createDataSource(databaseName, modeConfig,
Collections.singletonMap(Strings.isNullOrEmpty(databaseName) ?
DefaultSchema.LOGIC_NAME : databaseName, dataSource), configs, props);
}
/**
@@ -126,16 +126,16 @@ public final class ShardingSphereDataSourceFactory {
/**
* Create ShardingSphere data source.
*
- * @param schemaName schema name
+ * @param databaseName database name
* @param dataSourceMap data source map
* @param configs rule configurations
* @param props properties for data source
* @return ShardingSphere data source
* @throws SQLException SQL exception
*/
- public static DataSource createDataSource(final String schemaName,
+ public static DataSource createDataSource(final String databaseName,
final Map<String, DataSource>
dataSourceMap, final Collection<RuleConfiguration> configs, final Properties
props) throws SQLException {
- return createDataSource(schemaName, null, dataSourceMap, configs,
props);
+ return createDataSource(databaseName, null, dataSourceMap, configs,
props);
}
/**
@@ -154,15 +154,15 @@ public final class ShardingSphereDataSourceFactory {
/**
* Create ShardingSphere data source.
*
- * @param schemaName schema name
+ * @param databaseName database name
* @param dataSource data source
* @param configs rule configurations
* @param props properties for data source
* @return ShardingSphere data source
* @throws SQLException SQL exception
*/
- public static DataSource createDataSource(final String schemaName, final
DataSource dataSource, final Collection<RuleConfiguration> configs, final
Properties props) throws SQLException {
- return createDataSource(schemaName, null, dataSource, configs, props);
+ public static DataSource createDataSource(final String databaseName, final
DataSource dataSource, final Collection<RuleConfiguration> configs, final
Properties props) throws SQLException {
+ return createDataSource(databaseName, null, dataSource, configs,
props);
}
/**
diff --git
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/api/yaml/YamlShardingSphereDataSourceFactory.java
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/api/yaml/YamlShardingSphereDataSourceFactory.java
index 2d6b922f81f..0f43be1a995 100644
---
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/api/yaml/YamlShardingSphereDataSourceFactory.java
+++
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/api/yaml/YamlShardingSphereDataSourceFactory.java
@@ -22,8 +22,8 @@ import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.apache.shardingsphere.driver.api.ShardingSphereDataSourceFactory;
import org.apache.shardingsphere.infra.config.RuleConfiguration;
-import org.apache.shardingsphere.infra.database.DefaultSchema;
import org.apache.shardingsphere.infra.config.mode.ModeConfiguration;
+import org.apache.shardingsphere.infra.database.DefaultSchema;
import org.apache.shardingsphere.infra.yaml.config.pojo.YamlRootConfiguration;
import
org.apache.shardingsphere.infra.yaml.config.swapper.YamlDataSourceConfigurationSwapper;
import
org.apache.shardingsphere.infra.yaml.config.swapper.YamlRuleConfigurationSwapperEngine;
@@ -129,12 +129,12 @@ public final class YamlShardingSphereDataSourceFactory {
private static DataSource createDataSource(final Map<String, DataSource>
dataSourceMap, final YamlRootConfiguration rootConfig) throws SQLException {
ModeConfiguration modeConfig = null == rootConfig.getMode() ? null :
new ModeConfigurationYamlSwapper().swapToObject(rootConfig.getMode());
Collection<RuleConfiguration> ruleConfigs =
SWAPPER_ENGINE.swapToRuleConfigurations(rootConfig.getRules());
- return
ShardingSphereDataSourceFactory.createDataSource(rootConfig.getSchemaName(),
modeConfig, dataSourceMap, ruleConfigs, rootConfig.getProps());
+ return
ShardingSphereDataSourceFactory.createDataSource(rootConfig.getDatabaseName(),
modeConfig, dataSourceMap, ruleConfigs, rootConfig.getProps());
}
private static DataSource createDataSource(final DataSource dataSource,
final YamlRootConfiguration rootConfig) throws SQLException {
Map<String, DataSource> dataSourceMap = new HashMap<>(1, 1);
- dataSourceMap.put(Strings.isNullOrEmpty(rootConfig.getSchemaName()) ?
DefaultSchema.LOGIC_NAME : rootConfig.getSchemaName(), dataSource);
+ dataSourceMap.put(Strings.isNullOrEmpty(rootConfig.getDatabaseName())
? DefaultSchema.LOGIC_NAME : rootConfig.getDatabaseName(), dataSource);
return createDataSource(dataSourceMap, rootConfig);
}
}
diff --git
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/config/datasource/ShardingSpherePipelineDataSourceCreator.java
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/config/datasource/ShardingSpherePipelineDataSourceCreator.java
index bd7b52d6002..0dc809ade2b 100644
---
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/config/datasource/ShardingSpherePipelineDataSourceCreator.java
+++
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/config/datasource/ShardingSpherePipelineDataSourceCreator.java
@@ -40,7 +40,7 @@ public final class ShardingSpherePipelineDataSourceCreator
implements PipelineDa
YamlRootConfiguration rootConfig = (YamlRootConfiguration)
pipelineDataSourceConfig;
ShardingRuleConfiguration shardingRuleConfig =
ShardingRuleConfigurationConverter.findAndConvertShardingRuleConfiguration(rootConfig.getRules());
enableRangeQueryForInline(shardingRuleConfig);
- return
ShardingSphereDataSourceFactory.createDataSource(rootConfig.getSchemaName(),
new
YamlDataSourceConfigurationSwapper().swapToDataSources(rootConfig.getDataSources()),
+ return
ShardingSphereDataSourceFactory.createDataSource(rootConfig.getDatabaseName(),
new
YamlDataSourceConfigurationSwapper().swapToDataSources(rootConfig.getDataSources()),
Collections.singletonList(shardingRuleConfig), null);
}
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 0d0b8080854..3bce804e894 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
@@ -48,33 +48,33 @@ import java.util.stream.Collectors;
@Getter
public final class ShardingSphereDataSource extends AbstractDataSourceAdapter
implements AutoCloseable {
- private final String schemaName;
+ private final String databaseName;
private final ContextManager contextManager;
- public ShardingSphereDataSource(final String schemaName, final
ModeConfiguration modeConfig) throws SQLException {
- this.schemaName = schemaName;
- contextManager = createContextManager(schemaName, modeConfig, new
HashMap<>(), new LinkedList<>(), new Properties());
+ public ShardingSphereDataSource(final String databaseName, final
ModeConfiguration modeConfig) throws SQLException {
+ this.databaseName = databaseName;
+ contextManager = createContextManager(databaseName, modeConfig, new
HashMap<>(), new LinkedList<>(), new Properties());
}
- public ShardingSphereDataSource(final String schemaName, final
ModeConfiguration modeConfig, final Map<String, DataSource> dataSourceMap,
+ public ShardingSphereDataSource(final String databaseName, final
ModeConfiguration modeConfig, final Map<String, DataSource> dataSourceMap,
final Collection<RuleConfiguration>
ruleConfigs, final Properties props) throws SQLException {
- checkRuleConfiguration(schemaName, ruleConfigs);
- this.schemaName = schemaName;
- contextManager = createContextManager(schemaName, modeConfig,
dataSourceMap, ruleConfigs, null == props ? new Properties() : props);
+ checkRuleConfiguration(databaseName, ruleConfigs);
+ this.databaseName = databaseName;
+ contextManager = createContextManager(databaseName, modeConfig,
dataSourceMap, ruleConfigs, null == props ? new Properties() : props);
}
@SuppressWarnings("unchecked")
- private void checkRuleConfiguration(final String schemaName, final
Collection<RuleConfiguration> ruleConfigs) {
- ruleConfigs.forEach(each ->
RuleConfigurationCheckerFactory.newInstance(each).ifPresent(optional ->
optional.check(schemaName, each)));
+ private void checkRuleConfiguration(final String databaseName, final
Collection<RuleConfiguration> ruleConfigs) {
+ ruleConfigs.forEach(each ->
RuleConfigurationCheckerFactory.newInstance(each).ifPresent(optional ->
optional.check(databaseName, each)));
}
- private ContextManager createContextManager(final String schemaName, final
ModeConfiguration modeConfig, final Map<String, DataSource> dataSourceMap,
+ private ContextManager createContextManager(final String databaseName,
final ModeConfiguration modeConfig, final Map<String, DataSource> dataSourceMap,
final
Collection<RuleConfiguration> ruleConfigs, final Properties props) throws
SQLException {
Collection<RuleConfiguration> globalRuleConfigs =
ruleConfigs.stream().filter(each -> each instanceof
GlobalRuleConfiguration).collect(Collectors.toList());
ContextManagerBuilderParameter parameter =
ContextManagerBuilderParameter.builder()
.modeConfig(modeConfig)
- .databaseConfigs(Collections.singletonMap(schemaName, new
DataSourceProvidedSchemaConfiguration(dataSourceMap, ruleConfigs)))
+ .databaseConfigs(Collections.singletonMap(databaseName, new
DataSourceProvidedSchemaConfiguration(dataSourceMap, ruleConfigs)))
.globalRuleConfigs(globalRuleConfigs)
.props(props)
.instanceDefinition(new
InstanceDefinition(InstanceType.JDBC)).build();
@@ -83,7 +83,7 @@ public final class ShardingSphereDataSource extends
AbstractDataSourceAdapter im
@Override
public Connection getConnection() {
- return DriverStateContext.getConnection(schemaName, contextManager);
+ return DriverStateContext.getConnection(databaseName, contextManager);
}
@Override
@@ -98,7 +98,7 @@ public final class ShardingSphereDataSource extends
AbstractDataSourceAdapter im
* @throws Exception exception
*/
public void close(final Collection<String> dataSourceNames) throws
Exception {
- Map<String, DataSource> dataSourceMap =
contextManager.getDataSourceMap(schemaName);
+ Map<String, DataSource> dataSourceMap =
contextManager.getDataSourceMap(databaseName);
for (String each : dataSourceNames) {
close(dataSourceMap.get(each));
}
@@ -113,18 +113,18 @@ public final class ShardingSphereDataSource extends
AbstractDataSourceAdapter im
@Override
public void close() throws Exception {
- close(contextManager.getDataSourceMap(schemaName).keySet());
+ close(contextManager.getDataSourceMap(databaseName).keySet());
}
@Override
public int getLoginTimeout() throws SQLException {
- Map<String, DataSource> dataSourceMap =
contextManager.getDataSourceMap(schemaName);
+ Map<String, DataSource> dataSourceMap =
contextManager.getDataSourceMap(databaseName);
return dataSourceMap.isEmpty() ? 0 :
dataSourceMap.values().iterator().next().getLoginTimeout();
}
@Override
public void setLoginTimeout(final int seconds) throws SQLException {
- for (DataSource each :
contextManager.getDataSourceMap(schemaName).values()) {
+ for (DataSource each :
contextManager.getDataSourceMap(databaseName).values()) {
each.setLoginTimeout(seconds);
}
}
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 242876a5d9b..5a753a7e51d 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
@@ -53,7 +53,7 @@ public final class ShardingSphereDataSourceTest {
@Test
public void assertNewConstructorWithModeConfigurationOnly() throws
SQLException {
ShardingSphereDataSource actual = new
ShardingSphereDataSource(DefaultSchema.LOGIC_NAME, null);
- assertThat(actual.getSchemaName(), is(DefaultSchema.LOGIC_NAME));
+ assertThat(actual.getDatabaseName(), is(DefaultSchema.LOGIC_NAME));
assertNotNull(actual.getContextManager());
assertTrue(actual.getContextManager().getMetaDataContexts().getMetaDataMap().containsKey(DefaultSchema.LOGIC_NAME));
assertTrue(actual.getContextManager().getTransactionContexts().getEngines().containsKey(DefaultSchema.LOGIC_NAME));
@@ -66,7 +66,7 @@ public final class ShardingSphereDataSourceTest {
Connection connection = mock(Connection.class, RETURNS_DEEP_STUBS);
when(connection.getMetaData().getURL()).thenReturn("jdbc:mock://127.0.0.1/foo_ds");
ShardingSphereDataSource actual = createShardingSphereDataSource(new
MockedDataSource(connection));
- assertThat(actual.getSchemaName(), is(DefaultSchema.LOGIC_NAME));
+ assertThat(actual.getDatabaseName(), is(DefaultSchema.LOGIC_NAME));
assertNotNull(actual.getContextManager());
assertTrue(actual.getContextManager().getMetaDataContexts().getMetaDataMap().containsKey(DefaultSchema.LOGIC_NAME));
assertTrue(actual.getContextManager().getTransactionContexts().getEngines().containsKey(DefaultSchema.LOGIC_NAME));
diff --git
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/main/java/org/apache/shardingsphere/spring/boot/ShardingSphereAutoConfiguration.java
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/main/java/org/apache/shardingsphere/spring/boot/ShardingSphereAutoConfiguration.java
index e94b0c3597a..c056007d0c3 100644
---
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/main/java/org/apache/shardingsphere/spring/boot/ShardingSphereAutoConfiguration.java
+++
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/main/java/org/apache/shardingsphere/spring/boot/ShardingSphereAutoConfiguration.java
@@ -25,7 +25,7 @@ import
org.apache.shardingsphere.infra.yaml.config.swapper.mode.ModeConfiguratio
import org.apache.shardingsphere.spring.boot.datasource.DataSourceMapSetter;
import
org.apache.shardingsphere.spring.boot.prop.SpringBootPropertiesConfiguration;
import org.apache.shardingsphere.spring.boot.rule.LocalRulesCondition;
-import org.apache.shardingsphere.spring.boot.schema.SchemaNameSetter;
+import org.apache.shardingsphere.spring.boot.schema.DatabaseNameSetter;
import org.apache.shardingsphere.spring.transaction.TransactionTypeScanner;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.beans.factory.annotation.Autowired;
@@ -61,7 +61,7 @@ import java.util.Optional;
@RequiredArgsConstructor
public class ShardingSphereAutoConfiguration implements EnvironmentAware {
- private String schemaName;
+ private String databaseName;
private final SpringBootPropertiesConfiguration props;
@@ -90,7 +90,7 @@ public class ShardingSphereAutoConfiguration implements
EnvironmentAware {
@Autowired(required = false)
public DataSource shardingSphereDataSource(final
ObjectProvider<List<RuleConfiguration>> rules, final
ObjectProvider<ModeConfiguration> modeConfig) throws SQLException {
Collection<RuleConfiguration> ruleConfigs =
Optional.ofNullable(rules.getIfAvailable()).orElse(Collections.emptyList());
- return ShardingSphereDataSourceFactory.createDataSource(schemaName,
modeConfig.getIfAvailable(), dataSourceMap, ruleConfigs, props.getProps());
+ return ShardingSphereDataSourceFactory.createDataSource(databaseName,
modeConfig.getIfAvailable(), dataSourceMap, ruleConfigs, props.getProps());
}
/**
@@ -103,8 +103,8 @@ public class ShardingSphereAutoConfiguration implements
EnvironmentAware {
@Bean
@ConditionalOnMissingBean(DataSource.class)
public DataSource dataSource(final ModeConfiguration modeConfig) throws
SQLException {
- return !dataSourceMap.isEmpty() ?
ShardingSphereDataSourceFactory.createDataSource(schemaName, modeConfig,
dataSourceMap, Collections.emptyList(), props.getProps())
- : ShardingSphereDataSourceFactory.createDataSource(schemaName,
modeConfig);
+ return !dataSourceMap.isEmpty() ?
ShardingSphereDataSourceFactory.createDataSource(databaseName, modeConfig,
dataSourceMap, Collections.emptyList(), props.getProps())
+ :
ShardingSphereDataSourceFactory.createDataSource(databaseName, modeConfig);
}
/**
@@ -120,6 +120,6 @@ public class ShardingSphereAutoConfiguration implements
EnvironmentAware {
@Override
public final void setEnvironment(final Environment environment) {
dataSourceMap.putAll(DataSourceMapSetter.getDataSourceMap(environment));
- schemaName = SchemaNameSetter.getSchemaName(environment);
+ databaseName = DatabaseNameSetter.getDatabaseName(environment);
}
}
diff --git
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json
index faf162ab878..41ab4f260ef 100644
---
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json
+++
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json
@@ -74,6 +74,10 @@
"name": "spring.shardingsphere.datasource",
"type": "java.util.Map<java.lang.String, java.util.Map<java.lang.String,
java.lang.Object>>"
},
+ {
+ "name": "spring.shardingsphere.database.name",
+ "type":
"org.apache.shardingsphere.spring.boot.ShardingSphereAutoConfiguration"
+ },
{
"name": "spring.shardingsphere.schema.name",
"type":
"org.apache.shardingsphere.spring.boot.ShardingSphereAutoConfiguration"
diff --git
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/parser/DataSourceBeanDefinitionParser.java
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/parser/DataSourceBeanDefinitionParser.java
index 73a34d6979a..f40a323d5b0 100644
---
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/parser/DataSourceBeanDefinitionParser.java
+++
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/parser/DataSourceBeanDefinitionParser.java
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.spring.namespace.parser;
import com.google.common.base.Splitter;
+import com.google.common.base.Strings;
import
org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource;
import org.apache.shardingsphere.infra.config.mode.ModeConfiguration;
import
org.apache.shardingsphere.spring.namespace.tag.DataSourceBeanDefinitionTag;
@@ -47,7 +48,7 @@ public final class DataSourceBeanDefinitionParser extends
AbstractBeanDefinition
@Override
protected AbstractBeanDefinition parseInternal(final Element element,
final ParserContext parserContext) {
BeanDefinitionBuilder factory =
BeanDefinitionBuilder.rootBeanDefinition(ShardingSphereDataSource.class);
- factory.addConstructorArgValue(parseSchemaName(element));
+ factory.addConstructorArgValue(parseDatabaseName(element));
factory.addConstructorArgValue(parseModeConfiguration(element));
if
(!StringUtils.isEmpty(element.getAttribute(DataSourceBeanDefinitionTag.DATA_SOURCE_NAMES_ATTRIBUTE)))
{
factory.addConstructorArgValue(parseDataSources(element));
@@ -58,8 +59,9 @@ public final class DataSourceBeanDefinitionParser extends
AbstractBeanDefinition
return factory.getBeanDefinition();
}
- private String parseSchemaName(final Element element) {
- return
element.getAttribute(DataSourceBeanDefinitionTag.SCHEMA_NAME_ATTRIBUTE);
+ private String parseDatabaseName(final Element element) {
+ String databaseName =
element.getAttribute(DataSourceBeanDefinitionTag.DATABASE_NAME_ATTRIBUTE);
+ return Strings.isNullOrEmpty(databaseName) ?
element.getAttribute(DataSourceBeanDefinitionTag.SCHEMA_NAME_ATTRIBUTE) :
databaseName;
}
// TODO parse mode
diff --git
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/tag/DataSourceBeanDefinitionTag.java
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/tag/DataSourceBeanDefinitionTag.java
index 1aab5311688..b31766f926c 100644
---
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/tag/DataSourceBeanDefinitionTag.java
+++
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/tag/DataSourceBeanDefinitionTag.java
@@ -28,6 +28,8 @@ public final class DataSourceBeanDefinitionTag {
public static final String ROOT_TAG = "data-source";
+ public static final String DATABASE_NAME_ATTRIBUTE = "database-name";
+
public static final String SCHEMA_NAME_ATTRIBUTE = "schema-name";
public static final String DATA_SOURCE_NAMES_ATTRIBUTE =
"data-source-names";
diff --git
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/resources/META-INF/namespace/datasource.xsd
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/resources/META-INF/namespace/datasource.xsd
index 80822804471..189316777c1 100644
---
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/resources/META-INF/namespace/datasource.xsd
+++
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/resources/META-INF/namespace/datasource.xsd
@@ -30,6 +30,7 @@
<xsd:element ref="mode" minOccurs="0" />
</xsd:all>
<xsd:attribute name="id" type="xsd:string" use="required" />
+ <xsd:attribute name="database-name" type="xsd:string" />
<xsd:attribute name="schema-name" type="xsd:string"
default="logic_db" />
<xsd:attribute name="data-source-names" type="xsd:string"/>
<xsd:attribute name="rule-refs" type="xsd:string"/>
diff --git
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/schema/SchemaNameSetter.java
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/schema/DatabaseNameSetter.java
similarity index 67%
rename from
shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/schema/SchemaNameSetter.java
rename to
shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/schema/DatabaseNameSetter.java
index 819fcf89ba6..9dcedaf528c 100644
---
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/schema/SchemaNameSetter.java
+++
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/schema/DatabaseNameSetter.java
@@ -25,24 +25,28 @@ import org.springframework.core.env.Environment;
import org.springframework.core.env.StandardEnvironment;
/**
- * Schema name setter.
+ * Database name setter.
*/
@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class SchemaNameSetter {
+public final class DatabaseNameSetter {
- private static final String PREFIX = "spring.shardingsphere.schema.";
+ private static final String DATABASE_NAME_KEY =
"spring.shardingsphere.database.name";
- private static final String SCHEMA_NAME = "name";
+ private static final String SCHEMA_NAME_KEY =
"spring.shardingsphere.schema.name";
/**
- * Get schema name.
+ * Get database name.
*
* @param environment spring boot environment
* @return schema name
*/
- public static String getSchemaName(final Environment environment) {
+ public static String getDatabaseName(final Environment environment) {
StandardEnvironment standardEnv = (StandardEnvironment) environment;
- return Strings.isNullOrEmpty(standardEnv.getProperty(PREFIX +
SCHEMA_NAME)) ? DefaultSchema.LOGIC_NAME
- : standardEnv.getProperty(PREFIX + SCHEMA_NAME);
+ String databaseName = standardEnv.getProperty(DATABASE_NAME_KEY);
+ if (!Strings.isNullOrEmpty(databaseName)) {
+ return databaseName;
+ }
+ String schemaName = standardEnv.getProperty(SCHEMA_NAME_KEY);
+ return Strings.isNullOrEmpty(schemaName) ? DefaultSchema.LOGIC_NAME :
schemaName;
}
}
diff --git
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/test/java/org/apache/shardingsphere/spring/boot/schema/SchemaNameSetterTest.java
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/test/java/org/apache/shardingsphere/spring/boot/schema/DatabaseNameSetterTest.java
similarity index 67%
rename from
shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/test/java/org/apache/shardingsphere/spring/boot/schema/SchemaNameSetterTest.java
rename to
shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/test/java/org/apache/shardingsphere/spring/boot/schema/DatabaseNameSetterTest.java
index 1016696f815..fac68c207be 100644
---
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/test/java/org/apache/shardingsphere/spring/boot/schema/SchemaNameSetterTest.java
+++
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/test/java/org/apache/shardingsphere/spring/boot/schema/DatabaseNameSetterTest.java
@@ -24,15 +24,23 @@ import org.springframework.mock.env.MockEnvironment;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
-public final class SchemaNameSetterTest {
+public final class DatabaseNameSetterTest {
@Test
- public void assertSchemaName() {
+ public void assertGetDatabaseNameWhenConfigDatabaseName() {
+ MockEnvironment mockEnvironment = new MockEnvironment();
+ mockEnvironment.setProperty("spring.shardingsphere.database.name",
"jdbc_db");
+ StandardEnvironment standardEnvironment = new StandardEnvironment();
+ standardEnvironment.merge(mockEnvironment);
+ assertThat(DatabaseNameSetter.getDatabaseName(standardEnvironment),
is("jdbc_db"));
+ }
+
+ @Test
+ public void assertGetDatabaseNameWhenConfigSchemaName() {
MockEnvironment mockEnvironment = new MockEnvironment();
mockEnvironment.setProperty("spring.shardingsphere.schema.name",
"jdbc_db");
StandardEnvironment standardEnvironment = new StandardEnvironment();
standardEnvironment.merge(mockEnvironment);
- String schemaName =
SchemaNameSetter.getSchemaName(standardEnvironment);
- assertThat(schemaName, is("jdbc_db"));
+ assertThat(DatabaseNameSetter.getDatabaseName(standardEnvironment),
is("jdbc_db"));
}
}
diff --git
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/rulealtered/RuleAlteredJobWorker.java
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/rulealtered/RuleAlteredJobWorker.java
index 43e777ca587..e1c5a93fbd2 100644
---
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/rulealtered/RuleAlteredJobWorker.java
+++
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/rulealtered/RuleAlteredJobWorker.java
@@ -247,9 +247,9 @@ public final class RuleAlteredJobWorker {
}
@SuppressWarnings("unchecked")
- private YamlRootConfiguration getYamlRootConfiguration(final String
schemaName, final String dataSources, final String rules) {
+ private YamlRootConfiguration getYamlRootConfiguration(final String
databaseName, final String dataSources, final String rules) {
YamlRootConfiguration result = new YamlRootConfiguration();
- result.setSchemaName(schemaName);
+ result.setDatabaseName(databaseName);
Map<String, Map<String, Object>> yamlDataSources =
YamlEngine.unmarshal(dataSources, Map.class);
disableSSLForMySQL(yamlDataSources);
result.setDataSources(yamlDataSources);
diff --git
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-spi/src/main/java/org/apache/shardingsphere/data/pipeline/api/datasource/config/impl/ShardingSpherePipelineDataSourceConfiguration.java
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-spi/src/main/java/org/apache/shardingsphere/data/pipeline/api/datasource/config/impl/ShardingSpherePipelineDataSourceConfiguration.java
index 7fdfd9226e3..32cce38ac19 100644
---
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-spi/src/main/java/org/apache/shardingsphere/data/pipeline/api/datasource/config/impl/ShardingSpherePipelineDataSourceConfiguration.java
+++
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-spi/src/main/java/org/apache/shardingsphere/data/pipeline/api/datasource/config/impl/ShardingSpherePipelineDataSourceConfiguration.java
@@ -61,7 +61,7 @@ public final class
ShardingSpherePipelineDataSourceConfiguration implements Pipe
}
public ShardingSpherePipelineDataSourceConfiguration(final
YamlRootConfiguration rootConfig) {
- YamlParameterConfiguration parameterConfig = new
YamlParameterConfiguration(rootConfig.getSchemaName(),
rootConfig.getDataSources(), rootConfig.getRules());
+ YamlParameterConfiguration parameterConfig = new
YamlParameterConfiguration(rootConfig.getDatabaseName(),
rootConfig.getDataSources(), rootConfig.getRules());
this.parameter = YamlEngine.marshal(parameterConfig);
this.rootConfig = rootConfig;
Map<String, Object> props =
rootConfig.getDataSources().values().iterator().next();