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 228ec459821 Refactor RuleDefinitionBackendHandler (#29783)
228ec459821 is described below
commit 228ec459821913a46d3b880b299faa8d60454a26
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Jan 20 00:14:31 2024 +0800
Refactor RuleDefinitionBackendHandler (#29783)
* Refactor RuleDefinitionBackendHandler
* Refactor RuleDefinitionBackendHandler
---
.../rdl/rule/RuleDefinitionBackendHandler.java | 35 ++++++++++------------
1 file changed, 15 insertions(+), 20 deletions(-)
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/RuleDefinitionBackendHandler.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/RuleDefinitionBackendHandler.java
index ede6fb5732b..c70e0c5f8bd 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/RuleDefinitionBackendHandler.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/RuleDefinitionBackendHandler.java
@@ -59,24 +59,24 @@ public final class RuleDefinitionBackendHandler<T extends
RuleDefinitionStatemen
@Override
protected ResponseHeader execute(final String databaseName, final T
sqlStatement) {
DatabaseRuleRDLExecutor executor =
TypedSPILoader.getService(DatabaseRuleRDLExecutor.class,
sqlStatement.getClass());
- Class<? extends RuleConfiguration> ruleConfigClass =
executor.getRuleConfigurationClass();
ShardingSphereDatabase database =
ProxyContext.getInstance().getDatabase(databaseName);
+ Class<? extends RuleConfiguration> ruleConfigClass =
executor.getRuleConfigurationClass();
RuleConfiguration currentRuleConfig =
findCurrentRuleConfiguration(database, ruleConfigClass).orElse(null);
executor.checkSQLStatement(database, sqlStatement, currentRuleConfig);
if (getRefreshStatus(sqlStatement, currentRuleConfig, executor)) {
-
ProxyContext.getInstance().getContextManager().getInstanceContext().getModeContextManager().alterRuleConfiguration(databaseName,
- processSQLStatement(database, sqlStatement, executor,
currentRuleConfig));
+
ProxyContext.getInstance().getContextManager().getInstanceContext().getModeContextManager()
+ .alterRuleConfiguration(databaseName,
processSQLStatement(database, sqlStatement, executor, currentRuleConfig));
}
return new UpdateResponseHeader(sqlStatement);
}
private Optional<RuleConfiguration> findCurrentRuleConfiguration(final
ShardingSphereDatabase database, final Class<? extends RuleConfiguration>
ruleConfigClass) {
- for (RuleConfiguration each :
database.getRuleMetaData().getConfigurations()) {
- if (ruleConfigClass.isAssignableFrom(each.getClass())) {
- return Optional.of(each);
- }
- }
- return Optional.empty();
+ return
database.getRuleMetaData().getConfigurations().stream().filter(each ->
ruleConfigClass.isAssignableFrom(each.getClass())).findFirst();
+ }
+
+ @SuppressWarnings({"unchecked", "rawtypes"})
+ private boolean getRefreshStatus(final SQLStatement sqlStatement, final
RuleConfiguration currentRuleConfig, final DatabaseRuleRDLExecutor<?, ?>
executor) {
+ return !(executor instanceof DatabaseRuleRDLDropExecutor) ||
((DatabaseRuleRDLDropExecutor) executor).hasAnyOneToBeDropped(sqlStatement,
currentRuleConfig);
}
@SuppressWarnings("rawtypes")
@@ -101,15 +101,6 @@ public final class RuleDefinitionBackendHandler<T extends
RuleDefinitionStatemen
return result;
}
- @SuppressWarnings({"unchecked", "rawtypes"})
- private RuleConfiguration decorateRuleConfiguration(final
ShardingSphereDatabase database, final RuleConfiguration ruleConfig) {
- Optional<RuleConfigurationDecorator> decorator =
TypedSPILoader.findService(RuleConfigurationDecorator.class,
ruleConfig.getClass());
- return decorator.map(optional -> optional.decorate(database.getName(),
-
database.getResourceMetaData().getStorageUnits().entrySet().stream()
- .collect(Collectors.toMap(Entry::getKey, entry ->
entry.getValue().getDataSource(), (oldValue, currentValue) -> oldValue,
LinkedHashMap::new)),
- database.getRuleMetaData().getRules(),
ruleConfig)).orElse(ruleConfig);
- }
-
@SuppressWarnings({"rawtypes", "unchecked"})
private RuleConfiguration processCreate(final T sqlStatement, final
DatabaseRuleRDLCreateExecutor executor, final RuleConfiguration
currentRuleConfig) {
RuleConfiguration toBeCreatedRuleConfig =
executor.buildToBeCreatedRuleConfiguration(currentRuleConfig, sqlStatement);
@@ -142,7 +133,11 @@ public final class RuleDefinitionBackendHandler<T extends
RuleDefinitionStatemen
}
}
- private boolean getRefreshStatus(final SQLStatement sqlStatement, final
RuleConfiguration currentRuleConfig, final DatabaseRuleRDLExecutor<?, ?>
executor) {
- return !(executor instanceof DatabaseRuleRDLDropExecutor) ||
((DatabaseRuleRDLDropExecutor) executor).hasAnyOneToBeDropped(sqlStatement,
currentRuleConfig);
+ @SuppressWarnings("unchecked")
+ private RuleConfiguration decorateRuleConfiguration(final
ShardingSphereDatabase database, final RuleConfiguration ruleConfig) {
+ return TypedSPILoader.findService(RuleConfigurationDecorator.class,
ruleConfig.getClass()).map(optional -> optional.decorate(database.getName(),
+
database.getResourceMetaData().getStorageUnits().entrySet().stream()
+ .collect(Collectors.toMap(Entry::getKey, entry ->
entry.getValue().getDataSource(), (oldValue, currentValue) -> oldValue,
LinkedHashMap::new)),
+ database.getRuleMetaData().getRules(),
ruleConfig)).orElse(ruleConfig);
}
}