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 2024/01/19 16:14:37 UTC
(shardingsphere) branch master updated: Refactor RuleDefinitionBackendHandler (#29783)
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 <zh...@apache.org>
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);
}
}