You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by to...@apache.org on 2024/05/04 15:34:09 UTC
(shardingsphere) branch master updated: Remove usage of RepositoryTupleSwapper.getRuleTypeName() (#31113)
This is an automated email from the ASF dual-hosted git repository.
totalo 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 3723c357ea8 Remove usage of RepositoryTupleSwapper.getRuleTypeName() (#31113)
3723c357ea8 is described below
commit 3723c357ea8fa69721b4c6810ac88b6e3f4e3af8
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Sat May 4 23:34:02 2024 +0800
Remove usage of RepositoryTupleSwapper.getRuleTypeName() (#31113)
---
.../yaml/config/YamlBroadcastRuleConfiguration.java | 2 +-
.../encrypt/yaml/config/YamlEncryptRuleConfiguration.java | 2 +-
.../mask/yaml/config/YamlMaskRuleConfiguration.java | 2 +-
.../config/YamlReadwriteSplittingRuleConfiguration.java | 2 +-
.../shadow/yaml/config/YamlShadowRuleConfiguration.java | 2 +-
.../sharding/yaml/config/YamlShardingRuleConfiguration.java | 2 +-
.../config/pojo/rule/annotation/RepositoryTupleEntity.java | 7 +++++++
.../rule/engine/database/type/DropDatabaseRuleOperator.java | 7 +++++--
.../yaml/config/YamlAuthorityRuleConfiguration.java | 2 +-
.../yaml/config/YamlGlobalClockRuleConfiguration.java | 2 +-
.../logging/yaml/config/YamlLoggingRuleConfiguration.java | 2 +-
.../service/config/RepositoryTupleSwapperEngine.java | 4 +++-
.../config/database/rule/DatabaseRulePersistService.java | 8 +++++---
.../yaml/config/pojo/YamlSingleRuleConfiguration.java | 2 +-
.../yaml/config/YamlSQLFederationRuleConfiguration.java | 2 +-
.../parser/yaml/config/YamlSQLParserRuleConfiguration.java | 2 +-
.../yaml/config/YamlSQLTranslatorRuleConfiguration.java | 2 +-
.../traffic/yaml/config/YamlTrafficRuleConfiguration.java | 2 +-
.../yaml/config/YamlTransactionRuleConfiguration.java | 2 +-
.../mode/manager/context/ConfigurationContextManager.java | 8 +++-----
.../test/it/yaml/RepositoryTupleSwapperIT.java | 13 ++++++++-----
21 files changed, 46 insertions(+), 31 deletions(-)
diff --git a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/yaml/config/YamlBroadcastRuleConfiguration.java b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/yaml/config/YamlBroadcastRuleConfiguration.java
index bef67d0a8b1..be63bcf80e6 100644
--- a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/yaml/config/YamlBroadcastRuleConfiguration.java
+++ b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/yaml/config/YamlBroadcastRuleConfiguration.java
@@ -32,7 +32,7 @@ import java.util.LinkedList;
/**
* Broadcast rule configuration for YAML.
*/
-@RepositoryTupleEntity
+@RepositoryTupleEntity("broadcast")
@Getter
@Setter
public final class YamlBroadcastRuleConfiguration implements YamlRuleConfiguration {
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/yaml/config/YamlEncryptRuleConfiguration.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/yaml/config/YamlEncryptRuleConfiguration.java
index 32d313b1277..afdc4c5a433 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/yaml/config/YamlEncryptRuleConfiguration.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/yaml/config/YamlEncryptRuleConfiguration.java
@@ -33,7 +33,7 @@ import java.util.Map;
/**
* Encrypt rule configuration for YAML.
*/
-@RepositoryTupleEntity
+@RepositoryTupleEntity("encrypt")
@Getter
@Setter
public final class YamlEncryptRuleConfiguration implements YamlRuleConfiguration {
diff --git a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/yaml/config/YamlMaskRuleConfiguration.java b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/yaml/config/YamlMaskRuleConfiguration.java
index 89e70dcc9f6..ea105c0d145 100644
--- a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/yaml/config/YamlMaskRuleConfiguration.java
+++ b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/yaml/config/YamlMaskRuleConfiguration.java
@@ -33,7 +33,7 @@ import java.util.Map;
/**
* Mask rule configuration for YAML.
*/
-@RepositoryTupleEntity
+@RepositoryTupleEntity("mask")
@Getter
@Setter
public final class YamlMaskRuleConfiguration implements YamlRuleConfiguration {
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/YamlReadwriteSplittingRuleConfiguration.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/YamlReadwriteSplittingRuleConfiguration.java
index 2c3b9ac9c80..6b889e74bee 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/YamlReadwriteSplittingRuleConfiguration.java
+++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/YamlReadwriteSplittingRuleConfiguration.java
@@ -33,7 +33,7 @@ import java.util.Map;
/**
* Readwrite-splitting rule configuration for YAML.
*/
-@RepositoryTupleEntity
+@RepositoryTupleEntity("readwrite_splitting")
@Getter
@Setter
public final class YamlReadwriteSplittingRuleConfiguration implements YamlRuleConfiguration {
diff --git a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/yaml/config/YamlShadowRuleConfiguration.java b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/yaml/config/YamlShadowRuleConfiguration.java
index 95fa805e904..5dfb0c0a474 100644
--- a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/yaml/config/YamlShadowRuleConfiguration.java
+++ b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/yaml/config/YamlShadowRuleConfiguration.java
@@ -34,7 +34,7 @@ import java.util.Map;
/**
* Shadow rule configuration.
*/
-@RepositoryTupleEntity
+@RepositoryTupleEntity("shadow")
@Getter
@Setter
public final class YamlShadowRuleConfiguration implements YamlRuleConfiguration {
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/yaml/config/YamlShardingRuleConfiguration.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/yaml/config/YamlShardingRuleConfiguration.java
index 81ad57c2cc1..6e792ca5ce7 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/yaml/config/YamlShardingRuleConfiguration.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/yaml/config/YamlShardingRuleConfiguration.java
@@ -42,7 +42,7 @@ import java.util.Map;
/**
* Sharding rule configuration for YAML.
*/
-@RepositoryTupleEntity
+@RepositoryTupleEntity("sharding")
@Getter
@Setter
public final class YamlShardingRuleConfiguration implements YamlRuleConfiguration {
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/yaml/config/pojo/rule/annotation/RepositoryTupleEntity.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/yaml/config/pojo/rule/annotation/RepositoryTupleEntity.java
index 3d45c41a9d7..3575118ac98 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/yaml/config/pojo/rule/annotation/RepositoryTupleEntity.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/yaml/config/pojo/rule/annotation/RepositoryTupleEntity.java
@@ -28,4 +28,11 @@ import java.lang.annotation.Target;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface RepositoryTupleEntity {
+
+ /**
+ * Get rule type name.
+ *
+ * @return rule type name
+ */
+ String value();
}
diff --git a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/DropDatabaseRuleOperator.java b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/DropDatabaseRuleOperator.java
index 9f2eb7d8a4b..9a59766e797 100644
--- a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/DropDatabaseRuleOperator.java
+++ b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/DropDatabaseRuleOperator.java
@@ -30,12 +30,14 @@ import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
import org.apache.shardingsphere.infra.rule.attribute.datasource.StaticDataSourceRuleAttribute;
import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader;
import org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
+import org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleEntity;
import org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlRuleConfigurationSwapperEngine;
-import org.apache.shardingsphere.mode.spi.RepositoryTupleSwapper;
import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.apache.shardingsphere.mode.spi.RepositoryTupleSwapper;
import java.util.Collection;
import java.util.Collections;
+import java.util.Objects;
/**
* Drop database rule operator.
@@ -67,7 +69,8 @@ public final class DropDatabaseRuleOperator implements DatabaseRuleOperator {
if (null != toBeAlteredRuleConfig && ((DatabaseRuleConfiguration) toBeAlteredRuleConfig).isEmpty()) {
YamlRuleConfiguration yamlRuleConfig = new YamlRuleConfigurationSwapperEngine().swapToYamlRuleConfiguration(currentRuleConfig);
OrderedSPILoader.getServices(RepositoryTupleSwapper.class, Collections.singleton(yamlRuleConfig)).values().stream().findFirst()
- .ifPresent(optional -> modeContextManager.removeRuleConfiguration(database.getName(), optional.getRuleTypeName()));
+ .ifPresent(optional -> modeContextManager.removeRuleConfiguration(database.getName(),
+ Objects.requireNonNull(yamlRuleConfig.getClass().getAnnotation(RepositoryTupleEntity.class)).value()));
return Collections.emptyList();
}
return modeContextManager.alterRuleConfiguration(database.getName(), toBeAlteredRuleConfig);
diff --git a/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/yaml/config/YamlAuthorityRuleConfiguration.java b/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/yaml/config/YamlAuthorityRuleConfiguration.java
index ff83334dff7..f3afe30e226 100644
--- a/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/yaml/config/YamlAuthorityRuleConfiguration.java
+++ b/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/yaml/config/YamlAuthorityRuleConfiguration.java
@@ -33,7 +33,7 @@ import java.util.Map;
/**
* Authority rule configuration for YAML.
*/
-@RepositoryTupleEntity
+@RepositoryTupleEntity("authority")
@RepositoryTupleType("authority")
@Getter
@Setter
diff --git a/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/yaml/config/YamlGlobalClockRuleConfiguration.java b/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/yaml/config/YamlGlobalClockRuleConfiguration.java
index dd40944cc28..0cd0c979172 100644
--- a/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/yaml/config/YamlGlobalClockRuleConfiguration.java
+++ b/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/yaml/config/YamlGlobalClockRuleConfiguration.java
@@ -29,7 +29,7 @@ import java.util.Properties;
/**
* Global clock rule configuration for YAML.
*/
-@RepositoryTupleEntity
+@RepositoryTupleEntity("global_clock")
@RepositoryTupleType("global_clock")
@Getter
@Setter
diff --git a/kernel/logging/core/src/main/java/org/apache/shardingsphere/logging/yaml/config/YamlLoggingRuleConfiguration.java b/kernel/logging/core/src/main/java/org/apache/shardingsphere/logging/yaml/config/YamlLoggingRuleConfiguration.java
index 5c2da869dfe..9b93e576983 100644
--- a/kernel/logging/core/src/main/java/org/apache/shardingsphere/logging/yaml/config/YamlLoggingRuleConfiguration.java
+++ b/kernel/logging/core/src/main/java/org/apache/shardingsphere/logging/yaml/config/YamlLoggingRuleConfiguration.java
@@ -30,7 +30,7 @@ import java.util.LinkedList;
/**
* Logging rule configuration for YAML.
*/
-@RepositoryTupleEntity
+@RepositoryTupleEntity("logging")
@RepositoryTupleType("logging")
@Getter
@Setter
diff --git a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/RepositoryTupleSwapperEngine.java b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/RepositoryTupleSwapperEngine.java
index ed1d2234735..79ba0dec2ea 100644
--- a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/RepositoryTupleSwapperEngine.java
+++ b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/RepositoryTupleSwapperEngine.java
@@ -21,6 +21,7 @@ import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader;
import org.apache.shardingsphere.infra.util.yaml.datanode.RepositoryTuple;
import org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
+import org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleEntity;
import org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlRuleConfigurationSwapperEngine;
import org.apache.shardingsphere.mode.engine.AutoRepositoryTupleSwapperEngine;
import org.apache.shardingsphere.mode.spi.RepositoryTupleSwapper;
@@ -28,6 +29,7 @@ import org.apache.shardingsphere.mode.spi.RepositoryTupleSwapper;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
+import java.util.Objects;
import java.util.Optional;
/**
@@ -71,7 +73,7 @@ public final class RepositoryTupleSwapperEngine {
YamlRuleConfigurationSwapperEngine yamlSwapperEngine = new YamlRuleConfigurationSwapperEngine();
AutoRepositoryTupleSwapperEngine repositoryTupleSwapperEngine = new AutoRepositoryTupleSwapperEngine();
for (RepositoryTupleSwapper each : OrderedSPILoader.getServices(RepositoryTupleSwapper.class)) {
- if (ruleName.equals(each.getRuleTypeName())) {
+ if (ruleName.equals(Objects.requireNonNull((RepositoryTupleEntity) each.getTypeClass().getAnnotation(RepositoryTupleEntity.class)).value())) {
Optional<YamlRuleConfiguration> yamlRuleConfig = repositoryTupleSwapperEngine.swapToObject(repositoryTuples, each.getTypeClass());
return yamlRuleConfig.map(yamlSwapperEngine::swapToRuleConfiguration);
}
diff --git a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/rule/DatabaseRulePersistService.java b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/rule/DatabaseRulePersistService.java
index 88c8e077a51..53cc1656261 100644
--- a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/rule/DatabaseRulePersistService.java
+++ b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/rule/DatabaseRulePersistService.java
@@ -23,6 +23,7 @@ import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader;
import org.apache.shardingsphere.infra.util.yaml.datanode.RepositoryTuple;
import org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
+import org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleEntity;
import org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlRuleConfigurationSwapperEngine;
import org.apache.shardingsphere.metadata.persist.node.metadata.DatabaseRuleMetaDataNode;
import org.apache.shardingsphere.metadata.persist.service.config.RepositoryTuplePersistService;
@@ -37,6 +38,7 @@ import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Map.Entry;
+import java.util.Objects;
/**
* Database rule persist service.
@@ -62,7 +64,7 @@ public final class DatabaseRulePersistService implements DatabaseBasedPersistSer
for (Entry<YamlRuleConfiguration, RepositoryTupleSwapper> entry : OrderedSPILoader.getServices(RepositoryTupleSwapper.class, yamlRuleConfigs).entrySet()) {
Collection<RepositoryTuple> repositoryTuples = repositoryTupleSwapperEngine.swapToRepositoryTuples(entry.getKey());
if (!repositoryTuples.isEmpty()) {
- persistDataNodes(databaseName, entry.getValue().getRuleTypeName(), repositoryTuples);
+ persistDataNodes(databaseName, Objects.requireNonNull(entry.getKey().getClass().getAnnotation(RepositoryTupleEntity.class)).value(), repositoryTuples);
}
}
}
@@ -86,7 +88,7 @@ public final class DatabaseRulePersistService implements DatabaseBasedPersistSer
for (Entry<YamlRuleConfiguration, RepositoryTupleSwapper> entry : OrderedSPILoader.getServices(RepositoryTupleSwapper.class, yamlRuleConfigs).entrySet()) {
Collection<RepositoryTuple> repositoryTuples = repositoryTupleSwapperEngine.swapToRepositoryTuples(entry.getKey());
if (!repositoryTuples.isEmpty()) {
- result.addAll(persistDataNodes(databaseName, entry.getValue().getRuleTypeName(), repositoryTuples));
+ result.addAll(persistDataNodes(databaseName, Objects.requireNonNull(entry.getKey().getClass().getAnnotation(RepositoryTupleEntity.class)).value(), repositoryTuples));
}
}
return result;
@@ -119,7 +121,7 @@ public final class DatabaseRulePersistService implements DatabaseBasedPersistSer
}
List<RepositoryTuple> newRepositoryTuples = new LinkedList<>(repositoryTuples);
Collections.reverse(newRepositoryTuples);
- result.addAll(deleteDataNodes(databaseName, entry.getValue().getRuleTypeName(), newRepositoryTuples));
+ result.addAll(deleteDataNodes(databaseName, Objects.requireNonNull(entry.getKey().getClass().getAnnotation(RepositoryTupleEntity.class)).value(), newRepositoryTuples));
}
return result;
}
diff --git a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/yaml/config/pojo/YamlSingleRuleConfiguration.java b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/yaml/config/pojo/YamlSingleRuleConfiguration.java
index f358700b0f8..2f5a2d64322 100644
--- a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/yaml/config/pojo/YamlSingleRuleConfiguration.java
+++ b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/yaml/config/pojo/YamlSingleRuleConfiguration.java
@@ -31,7 +31,7 @@ import java.util.LinkedList;
/**
* Single rule configuration for YAML.
*/
-@RepositoryTupleEntity
+@RepositoryTupleEntity("single")
@RepositoryTupleType(SingleRuleNodePathProvider.TABLES)
@Getter
@Setter
diff --git a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/yaml/config/YamlSQLFederationRuleConfiguration.java b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/yaml/config/YamlSQLFederationRuleConfiguration.java
index ec286312c6d..e34fa344e79 100644
--- a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/yaml/config/YamlSQLFederationRuleConfiguration.java
+++ b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/yaml/config/YamlSQLFederationRuleConfiguration.java
@@ -27,7 +27,7 @@ import org.apache.shardingsphere.sqlfederation.api.config.SQLFederationRuleConfi
/**
* SQL federation rule configuration for YAML.
*/
-@RepositoryTupleEntity
+@RepositoryTupleEntity("sql_federation")
@RepositoryTupleType("sql_federation")
@Getter
@Setter
diff --git a/kernel/sql-parser/core/src/main/java/org/apache/shardingsphere/parser/yaml/config/YamlSQLParserRuleConfiguration.java b/kernel/sql-parser/core/src/main/java/org/apache/shardingsphere/parser/yaml/config/YamlSQLParserRuleConfiguration.java
index 93ff4148cbd..2a5bfe52871 100644
--- a/kernel/sql-parser/core/src/main/java/org/apache/shardingsphere/parser/yaml/config/YamlSQLParserRuleConfiguration.java
+++ b/kernel/sql-parser/core/src/main/java/org/apache/shardingsphere/parser/yaml/config/YamlSQLParserRuleConfiguration.java
@@ -27,7 +27,7 @@ import org.apache.shardingsphere.parser.config.SQLParserRuleConfiguration;
/**
* SQL parser configuration for YAML.
*/
-@RepositoryTupleEntity
+@RepositoryTupleEntity("sql_parser")
@RepositoryTupleType("sql_parser")
@Getter
@Setter
diff --git a/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/yaml/config/YamlSQLTranslatorRuleConfiguration.java b/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/yaml/config/YamlSQLTranslatorRuleConfiguration.java
index 12b0ba4f980..4a53e1fca94 100644
--- a/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/yaml/config/YamlSQLTranslatorRuleConfiguration.java
+++ b/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/yaml/config/YamlSQLTranslatorRuleConfiguration.java
@@ -29,7 +29,7 @@ import java.util.Properties;
/**
* SQL translator configuration for YAML.
*/
-@RepositoryTupleEntity
+@RepositoryTupleEntity("sql_translator")
@RepositoryTupleType("sql_translator")
@Getter
@Setter
diff --git a/kernel/traffic/core/src/main/java/org/apache/shardingsphere/traffic/yaml/config/YamlTrafficRuleConfiguration.java b/kernel/traffic/core/src/main/java/org/apache/shardingsphere/traffic/yaml/config/YamlTrafficRuleConfiguration.java
index 9d4aefa7e84..73cb30c7c6c 100644
--- a/kernel/traffic/core/src/main/java/org/apache/shardingsphere/traffic/yaml/config/YamlTrafficRuleConfiguration.java
+++ b/kernel/traffic/core/src/main/java/org/apache/shardingsphere/traffic/yaml/config/YamlTrafficRuleConfiguration.java
@@ -31,7 +31,7 @@ import java.util.Map;
/**
* Traffic rule configuration for YAML.
*/
-@RepositoryTupleEntity
+@RepositoryTupleEntity("traffic")
@RepositoryTupleType("traffic")
@Getter
@Setter
diff --git a/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/yaml/config/YamlTransactionRuleConfiguration.java b/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/yaml/config/YamlTransactionRuleConfiguration.java
index 12251de1785..f75918b4c46 100644
--- a/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/yaml/config/YamlTransactionRuleConfiguration.java
+++ b/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/yaml/config/YamlTransactionRuleConfiguration.java
@@ -29,7 +29,7 @@ import java.util.Properties;
/**
* Transaction rule configuration for YAML.
*/
-@RepositoryTupleEntity
+@RepositoryTupleEntity("transaction")
@RepositoryTupleType("transaction")
@Getter
@Setter
diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/context/ConfigurationContextManager.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/context/ConfigurationContextManager.java
index a5f9aafb6c8..f0f8082e721 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/context/ConfigurationContextManager.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/context/ConfigurationContextManager.java
@@ -38,10 +38,9 @@ import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSp
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import org.apache.shardingsphere.infra.rule.builder.database.DatabaseRulesBuilder;
import org.apache.shardingsphere.infra.rule.builder.global.GlobalRulesBuilder;
-import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader;
import org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
+import org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleEntity;
import org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlRuleConfigurationSwapperEngine;
-import org.apache.shardingsphere.mode.spi.RepositoryTupleSwapper;
import org.apache.shardingsphere.metadata.factory.ExternalMetaDataFactory;
import org.apache.shardingsphere.metadata.factory.InternalMetaDataFactory;
import org.apache.shardingsphere.metadata.persist.MetaDataBasedPersistService;
@@ -58,6 +57,7 @@ import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Objects;
import java.util.Optional;
import java.util.Properties;
import java.util.concurrent.atomic.AtomicReference;
@@ -375,12 +375,10 @@ public final class ConfigurationContextManager {
}
// Optimize string comparison rule type.
- @SuppressWarnings("rawtypes")
@SneakyThrows(Exception.class)
private void closeStaleTransactionRule(final RuleConfiguration ruleConfig) {
YamlRuleConfiguration yamlRuleConfig = new YamlRuleConfigurationSwapperEngine().swapToYamlRuleConfiguration(ruleConfig);
- RepositoryTupleSwapper repositoryTupleSwapper = OrderedSPILoader.getServices(RepositoryTupleSwapper.class, Collections.singleton(yamlRuleConfig)).get(yamlRuleConfig);
- if (!"transaction".equals(repositoryTupleSwapper.getRuleTypeName())) {
+ if (!"transaction".equals(Objects.requireNonNull(yamlRuleConfig.getClass().getAnnotation(RepositoryTupleEntity.class)).value())) {
return;
}
Optional<TransactionRule> transactionRule = metaDataContexts.get().getMetaData().getGlobalRuleMetaData().findSingleRule(TransactionRule.class);
diff --git a/test/it/yaml/src/main/java/org/apache/shardingsphere/test/it/yaml/RepositoryTupleSwapperIT.java b/test/it/yaml/src/main/java/org/apache/shardingsphere/test/it/yaml/RepositoryTupleSwapperIT.java
index ea6e3029d2a..843684516f9 100644
--- a/test/it/yaml/src/main/java/org/apache/shardingsphere/test/it/yaml/RepositoryTupleSwapperIT.java
+++ b/test/it/yaml/src/main/java/org/apache/shardingsphere/test/it/yaml/RepositoryTupleSwapperIT.java
@@ -21,8 +21,9 @@ import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import org.apache.shardingsphere.infra.util.yaml.datanode.RepositoryTuple;
import org.apache.shardingsphere.infra.yaml.config.pojo.YamlRootConfiguration;
import org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
-import org.apache.shardingsphere.mode.spi.RepositoryTupleSwapper;
+import org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleEntity;
import org.apache.shardingsphere.mode.engine.AutoRepositoryTupleSwapperEngine;
+import org.apache.shardingsphere.mode.spi.RepositoryTupleSwapper;
import org.junit.jupiter.api.Test;
import java.io.File;
@@ -34,6 +35,7 @@ import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
@@ -92,7 +94,8 @@ public abstract class RepositoryTupleSwapperIT {
private String getActualYamlContent() throws IOException {
YamlRuleConfiguration yamlRuleConfig = loadYamlRuleConfiguration();
Collection<RepositoryTuple> repositoryTuples = new AutoRepositoryTupleSwapperEngine().swapToRepositoryTuples(yamlRuleConfig).stream()
- .map(each -> new RepositoryTuple(getRepositoryTupleKey(each), each.getValue())).collect(Collectors.toList());
+ .map(each -> new RepositoryTuple(getRepositoryTupleKey(Objects.requireNonNull(yamlRuleConfig.getClass().getAnnotation(RepositoryTupleEntity.class)).value(), each), each.getValue()))
+ .collect(Collectors.toList());
AutoRepositoryTupleSwapperEngine repositoryTupleSwapperEngine = new AutoRepositoryTupleSwapperEngine();
Optional<YamlRuleConfiguration> actualYamlRuleConfig = repositoryTupleSwapperEngine.swapToObject(repositoryTuples, swapper.getTypeClass());
assertTrue(actualYamlRuleConfig.isPresent());
@@ -101,10 +104,10 @@ public abstract class RepositoryTupleSwapperIT {
return YamlEngine.marshal(yamlRootConfig);
}
- private String getRepositoryTupleKey(final RepositoryTuple tuple) {
+ private String getRepositoryTupleKey(final String ruleTypeName, final RepositoryTuple tuple) {
return isGlobalRule
- ? String.format("/metadata/rules/%s/versions/0", swapper.getRuleTypeName())
- : String.format("/metadata/foo_db/rules/%s/%s/versions/0", swapper.getRuleTypeName(), tuple.getKey());
+ ? String.format("/metadata/rules/%s/versions/0", ruleTypeName)
+ : String.format("/metadata/foo_db/rules/%s/%s/versions/0", ruleTypeName, tuple.getKey());
}
private String getExpectedYamlContent() throws IOException {