提交 7e3d28b1 编写于 作者: T tristaZero

Merge branch 'dev' of ssh://github.com/shardingjdbc/sharding-jdbc into dev

......@@ -17,6 +17,8 @@
package org.apache.shardingsphere.core.rule;
import org.apache.shardingsphere.api.config.RuleConfiguration;
/**
* Base rule.
*
......@@ -24,4 +26,11 @@ package org.apache.shardingsphere.core.rule;
* @author panjuan
*/
public interface BaseRule {
/**
* Get rule configuration.
*
* @return rule configuration
*/
RuleConfiguration getRuleConfiguration();
}
......@@ -52,25 +52,25 @@ public final class EncryptRule implements BaseRule {
private final Map<String, EncryptTable> tables = new LinkedHashMap<>();
private EncryptRuleConfiguration encryptRuleConfig;
private EncryptRuleConfiguration ruleConfiguration;
public EncryptRule() {
encryptRuleConfig = new EncryptRuleConfiguration();
ruleConfiguration = new EncryptRuleConfiguration();
}
public EncryptRule(final EncryptRuleConfiguration encryptRuleConfiguration) {
this.encryptRuleConfig = encryptRuleConfiguration;
this.ruleConfiguration = encryptRuleConfiguration;
Preconditions.checkArgument(isValidEncryptRuleConfig(), "Invalid encrypt column configurations in EncryptTableRuleConfigurations.");
initEncryptors(encryptRuleConfiguration.getEncryptors());
initTables(encryptRuleConfiguration.getTables());
}
private boolean isValidEncryptRuleConfig() {
return (encryptRuleConfig.getEncryptors().isEmpty() && encryptRuleConfig.getTables().isEmpty()) || isValidEncryptTableConfig();
return (ruleConfiguration.getEncryptors().isEmpty() && ruleConfiguration.getTables().isEmpty()) || isValidEncryptTableConfig();
}
private boolean isValidEncryptTableConfig() {
for (EncryptTableRuleConfiguration table : encryptRuleConfig.getTables().values()) {
for (EncryptTableRuleConfiguration table : ruleConfiguration.getTables().values()) {
for (EncryptColumnRuleConfiguration column : table.getColumns().values()) {
if (!isValidColumnConfig(column)) {
return false;
......@@ -81,7 +81,7 @@ public final class EncryptRule implements BaseRule {
}
private boolean isValidColumnConfig(final EncryptColumnRuleConfiguration column) {
return !Strings.isNullOrEmpty(column.getEncryptor()) && !Strings.isNullOrEmpty(column.getCipherColumn()) && encryptRuleConfig.getEncryptors().keySet().contains(column.getEncryptor());
return !Strings.isNullOrEmpty(column.getEncryptor()) && !Strings.isNullOrEmpty(column.getCipherColumn()) && ruleConfiguration.getEncryptors().keySet().contains(column.getEncryptor());
}
private void initEncryptors(final Map<String, EncryptorRuleConfiguration> encryptors) {
......
......@@ -42,14 +42,14 @@ public class MasterSlaveRule implements BaseRule {
private final MasterSlaveLoadBalanceAlgorithm loadBalanceAlgorithm;
private final MasterSlaveRuleConfiguration masterSlaveRuleConfiguration;
private final MasterSlaveRuleConfiguration ruleConfiguration;
public MasterSlaveRule(final String name, final String masterDataSourceName, final Collection<String> slaveDataSourceNames, final MasterSlaveLoadBalanceAlgorithm loadBalanceAlgorithm) {
this.name = name;
this.masterDataSourceName = masterDataSourceName;
this.slaveDataSourceNames = slaveDataSourceNames;
this.loadBalanceAlgorithm = null == loadBalanceAlgorithm ? new MasterSlaveLoadBalanceAlgorithmServiceLoader().newService() : loadBalanceAlgorithm;
masterSlaveRuleConfiguration = new MasterSlaveRuleConfiguration(name, masterDataSourceName, slaveDataSourceNames,
ruleConfiguration = new MasterSlaveRuleConfiguration(name, masterDataSourceName, slaveDataSourceNames,
new LoadBalanceStrategyConfiguration(this.loadBalanceAlgorithm.getType(), this.loadBalanceAlgorithm.getProperties()));
}
......@@ -58,7 +58,7 @@ public class MasterSlaveRule implements BaseRule {
masterDataSourceName = config.getMasterDataSourceName();
slaveDataSourceNames = config.getSlaveDataSourceNames();
loadBalanceAlgorithm = createMasterSlaveLoadBalanceAlgorithm(config.getLoadBalanceStrategyConfiguration());
masterSlaveRuleConfiguration = config;
ruleConfiguration = config;
}
private MasterSlaveLoadBalanceAlgorithm createMasterSlaveLoadBalanceAlgorithm(final LoadBalanceStrategyConfiguration loadBalanceStrategyConfiguration) {
......
......@@ -52,7 +52,7 @@ import java.util.TreeSet;
@Getter
public class ShardingRule implements BaseRule {
private final ShardingRuleConfiguration shardingRuleConfig;
private final ShardingRuleConfiguration ruleConfiguration;
private final ShardingDataSourceNames shardingDataSourceNames;
......@@ -75,7 +75,7 @@ public class ShardingRule implements BaseRule {
public ShardingRule(final ShardingRuleConfiguration shardingRuleConfig, final Collection<String> dataSourceNames) {
Preconditions.checkArgument(null != shardingRuleConfig, "ShardingRuleConfig cannot be null.");
Preconditions.checkArgument(null != dataSourceNames && !dataSourceNames.isEmpty(), "Data sources cannot be empty.");
this.shardingRuleConfig = shardingRuleConfig;
this.ruleConfiguration = shardingRuleConfig;
shardingDataSourceNames = new ShardingDataSourceNames(shardingRuleConfig, dataSourceNames);
tableRules = createTableRules(shardingRuleConfig);
bindingTableRules = createBindingTableRules(shardingRuleConfig.getBindingTableGroups());
......@@ -139,7 +139,7 @@ public class ShardingRule implements BaseRule {
}
private EncryptRule createEncryptRule(final EncryptRuleConfiguration encryptRuleConfig) {
return null == encryptRuleConfig ? new EncryptRule() : new EncryptRule(shardingRuleConfig.getEncryptRuleConfig());
return null == encryptRuleConfig ? new EncryptRule() : new EncryptRule(ruleConfiguration.getEncryptRuleConfig());
}
/**
......
......@@ -51,7 +51,7 @@ public class EncryptDataSource extends AbstractUnsupportedOperationDataSource im
private PrintWriter logWriter = new PrintWriter(System.out);
public EncryptDataSource(final DataSource dataSource, final EncryptRule encryptRule, final Properties props) throws SQLException {
ConfigurationLogger.log(encryptRule.getEncryptRuleConfig());
ConfigurationLogger.log(encryptRule.getRuleConfiguration());
ConfigurationLogger.log(props);
this.dataSource = dataSource;
runtimeContext = new EncryptRuntimeContext(dataSource, encryptRule, props, getDatabaseType());
......
......@@ -43,7 +43,7 @@ public class MasterSlaveDataSource extends AbstractDataSourceAdapter {
public MasterSlaveDataSource(final Map<String, DataSource> dataSourceMap, final MasterSlaveRule masterSlaveRule, final Properties props) throws SQLException {
super(dataSourceMap);
ConfigurationLogger.log(masterSlaveRule.getMasterSlaveRuleConfiguration());
ConfigurationLogger.log(masterSlaveRule.getRuleConfiguration());
ConfigurationLogger.log(props);
runtimeContext = new MasterSlaveRuntimeContext(dataSourceMap, masterSlaveRule, props, getDatabaseType());
}
......
......@@ -46,7 +46,7 @@ public class ShardingDataSource extends AbstractDataSourceAdapter {
public ShardingDataSource(final Map<String, DataSource> dataSourceMap, final ShardingRule shardingRule, final Properties props) throws SQLException {
super(dataSourceMap);
ConfigurationLogger.log(shardingRule.getShardingRuleConfig());
ConfigurationLogger.log(shardingRule.getRuleConfiguration());
ConfigurationLogger.log(props);
checkDataSourceType(dataSourceMap);
runtimeContext = new ShardingRuntimeContext(dataSourceMap, shardingRule, props, getDatabaseType());
......
......@@ -68,7 +68,7 @@ public class OrchestrationEncryptDataSource extends AbstractOrchestrationDataSou
public OrchestrationEncryptDataSource(final EncryptDataSource dataSource, final OrchestrationConfiguration orchestrationConfig) throws SQLException {
super(new ShardingOrchestrationFacade(orchestrationConfig, Collections.singletonList(ShardingConstant.LOGIC_SCHEMA_NAME)));
this.dataSource = new EncryptDataSource(
dataSource.getDataSource(), new EncryptRule(dataSource.getRuntimeContext().getRule().getEncryptRuleConfig()), dataSource.getRuntimeContext().getProps().getProps());
dataSource.getDataSource(), new EncryptRule(dataSource.getRuntimeContext().getRule().getRuleConfiguration()), dataSource.getRuntimeContext().getProps().getProps());
initShardingOrchestrationFacade(
Collections.singletonMap(ShardingConstant.LOGIC_SCHEMA_NAME, DataSourceConverter.getDataSourceConfigurationMap(Collections.singletonMap(ENCRYPT_DATASOURCE, dataSource.getDataSource()))),
getRuleConfigurationMap(), dataSource.getRuntimeContext().getProps().getProps());
......@@ -80,7 +80,7 @@ public class OrchestrationEncryptDataSource extends AbstractOrchestrationDataSou
private Map<String, RuleConfiguration> getRuleConfigurationMap() {
Map<String, RuleConfiguration> result = new HashMap<>(1);
result.put(ShardingConstant.LOGIC_SCHEMA_NAME, dataSource.getRuntimeContext().getRule().getEncryptRuleConfig());
result.put(ShardingConstant.LOGIC_SCHEMA_NAME, dataSource.getRuntimeContext().getRule().getRuleConfiguration());
return result;
}
......
......@@ -69,7 +69,7 @@ public class OrchestrationMasterSlaveDataSource extends AbstractOrchestrationDat
public OrchestrationMasterSlaveDataSource(final MasterSlaveDataSource masterSlaveDataSource, final OrchestrationConfiguration orchestrationConfig) throws SQLException {
super(new ShardingOrchestrationFacade(orchestrationConfig, Collections.singletonList(ShardingConstant.LOGIC_SCHEMA_NAME)));
dataSource = new MasterSlaveDataSource(masterSlaveDataSource.getDataSourceMap(),
new OrchestrationMasterSlaveRule(masterSlaveDataSource.getRuntimeContext().getRule().getMasterSlaveRuleConfiguration()),
new OrchestrationMasterSlaveRule(masterSlaveDataSource.getRuntimeContext().getRule().getRuleConfiguration()),
masterSlaveDataSource.getRuntimeContext().getProps().getProps());
initShardingOrchestrationFacade(Collections.singletonMap(ShardingConstant.LOGIC_SCHEMA_NAME, DataSourceConverter.getDataSourceConfigurationMap(dataSource.getDataSourceMap())),
getRuleConfigurationMap(), dataSource.getRuntimeContext().getProps().getProps());
......
......@@ -67,7 +67,7 @@ public class OrchestrationShardingDataSource extends AbstractOrchestrationDataSo
public OrchestrationShardingDataSource(final ShardingDataSource shardingDataSource, final OrchestrationConfiguration orchestrationConfig) throws SQLException {
super(new ShardingOrchestrationFacade(orchestrationConfig, Collections.singletonList(ShardingConstant.LOGIC_SCHEMA_NAME)));
dataSource = new ShardingDataSource(shardingDataSource.getDataSourceMap(), new OrchestrationShardingRule(shardingDataSource.getRuntimeContext().getRule().getShardingRuleConfig(),
dataSource = new ShardingDataSource(shardingDataSource.getDataSourceMap(), new OrchestrationShardingRule(shardingDataSource.getRuntimeContext().getRule().getRuleConfiguration(),
shardingDataSource.getDataSourceMap().keySet()), shardingDataSource.getRuntimeContext().getProps().getProps());
initShardingOrchestrationFacade(Collections.singletonMap(ShardingConstant.LOGIC_SCHEMA_NAME, DataSourceConverter.getDataSourceConfigurationMap(dataSource.getDataSourceMap())),
getRuleConfigurationMap(), dataSource.getRuntimeContext().getProps().getProps());
......@@ -75,7 +75,7 @@ public class OrchestrationShardingDataSource extends AbstractOrchestrationDataSo
private Map<String, RuleConfiguration> getRuleConfigurationMap() {
Map<String, RuleConfiguration> result = new LinkedHashMap<>(1, 1);
result.put(ShardingConstant.LOGIC_SCHEMA_NAME, dataSource.getRuntimeContext().getRule().getShardingRuleConfig());
result.put(ShardingConstant.LOGIC_SCHEMA_NAME, dataSource.getRuntimeContext().getRule().getRuleConfiguration());
return result;
}
......
......@@ -80,7 +80,7 @@ public final class OrchestrationEncryptDataSourceTest {
encryptDataSource.renew(getEncryptRuleChangedEvent());
assertThat(encryptDataSource.getDataSource().getRuntimeContext().getRule().getEncryptTableNames().size(), is(1));
assertThat(encryptDataSource.getDataSource().getRuntimeContext().getRule().getEncryptTableNames().iterator().next(), is("t_order_item"));
Map<String, EncryptorRuleConfiguration> encryptorRuleConfigurations = encryptDataSource.getDataSource().getRuntimeContext().getRule().getEncryptRuleConfig().getEncryptors();
Map<String, EncryptorRuleConfiguration> encryptorRuleConfigurations = encryptDataSource.getDataSource().getRuntimeContext().getRule().getRuleConfiguration().getEncryptors();
assertThat(encryptorRuleConfigurations.size(), is(1));
assertTrue(encryptorRuleConfigurations.containsKey("order_encryptor"));
EncryptorRuleConfiguration encryptorRuleConfig = encryptorRuleConfigurations.get("order_encryptor");
......
......@@ -63,7 +63,7 @@ public class OrchestrationSpringBootEncryptTest {
BasicDataSource embedDataSource = (BasicDataSource) encryptDataSource.getDataSource();
assertThat(embedDataSource.getMaxTotal(), is(100));
assertThat(embedDataSource.getUsername(), is("sa"));
EncryptRuleConfiguration encryptRuleConfig = encryptDataSource.getRuntimeContext().getRule().getEncryptRuleConfig();
EncryptRuleConfiguration encryptRuleConfig = encryptDataSource.getRuntimeContext().getRule().getRuleConfiguration();
assertThat(encryptRuleConfig.getEncryptors().size(), is(1));
assertTrue(encryptRuleConfig.getEncryptors().containsKey("order_encrypt"));
assertThat(encryptRuleConfig.getEncryptors().get("order_encrypt").getType(), is("aes"));
......
......@@ -85,7 +85,7 @@ public class OrchestrationSpringBootRegistryEncryptTest {
BasicDataSource embedDataSource = (BasicDataSource) encryptDataSource.getDataSource();
assertThat(embedDataSource.getMaxTotal(), is(100));
assertThat(embedDataSource.getUsername(), is("sa"));
EncryptRuleConfiguration encryptRuleConfig = encryptDataSource.getRuntimeContext().getRule().getEncryptRuleConfig();
EncryptRuleConfiguration encryptRuleConfig = encryptDataSource.getRuntimeContext().getRule().getRuleConfiguration();
assertThat(encryptRuleConfig.getEncryptors().size(), is(1));
assertTrue(encryptRuleConfig.getEncryptors().containsKey("order_encrypt"));
assertThat(encryptRuleConfig.getEncryptors().get("order_encrypt").getType(), is("aes"));
......
......@@ -59,8 +59,8 @@ public class OrchestrationEncryptNamespaceTest extends AbstractJUnit4SpringConte
}
private void assertEncryptRule(final EncryptRule encryptRule) {
assertNotNull(encryptRule.getEncryptRuleConfig());
EncryptRuleConfiguration ruleConfiguration = encryptRule.getEncryptRuleConfig();
assertNotNull(encryptRule.getRuleConfiguration());
EncryptRuleConfiguration ruleConfiguration = encryptRule.getRuleConfiguration();
assertThat(ruleConfiguration.getEncryptors().size(), is(2));
EncryptorRuleConfiguration encryptorRule = ruleConfiguration.getEncryptors().get("encryptor_md5");
assertNotNull(encryptorRule);
......
......@@ -52,6 +52,6 @@ public class SpringBootBroadcastTableTest {
ShardingRule shardingRule = shardingDataSource.getRuntimeContext().getRule();
assertThat(shardingRule.getBroadcastTables(), CoreMatchers.<Collection<String>>is(Collections.singletonList("t_config")));
assertThat(shardingRule.getShardingDataSourceNames().getDataSourceNames().size(), is(3));
assertThat(shardingRule.getShardingRuleConfig().getDefaultDataSourceName(), is("ds"));
assertThat(shardingRule.getRuleConfiguration().getDefaultDataSourceName(), is("ds"));
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册