This is an automated email from the ASF dual-hosted git repository.

zichaowang 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 b00e08ffd13 Refactor RepositoryTupleField.type() (#31147)
b00e08ffd13 is described below

commit b00e08ffd131a27e3bced2ebaf653ce90cf44085
Author: Liang Zhang <[email protected]>
AuthorDate: Tue May 7 04:31:54 2024 +0800

    Refactor RepositoryTupleField.type() (#31147)
---
 .../config/YamlBroadcastRuleConfiguration.java     |  3 ++-
 .../yaml/config/YamlEncryptRuleConfiguration.java  |  5 +++--
 .../yaml/config/YamlMaskRuleConfiguration.java     |  7 +++---
 .../YamlReadwriteSplittingRuleConfiguration.java   |  5 +++--
 .../yaml/config/YamlShadowRuleConfiguration.java   |  9 ++++----
 .../yaml/config/YamlShardingRuleConfiguration.java | 25 +++++++++++-----------
 ...onfigurationRepositoryTupleSwapperEngineIT.java | 20 ++++++++---------
 .../pojo/rule/annotation/RepositoryTupleField.java | 14 +++++++++---
 .../mode/engine/RepositoryTupleSwapperEngine.java  |  2 +-
 9 files changed, 52 insertions(+), 38 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 be63bcf80e6..f821680c1de 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
@@ -25,6 +25,7 @@ import 
org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleField;
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleEntity;
+import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleField.Type;
 
 import java.util.Collection;
 import java.util.LinkedList;
@@ -37,7 +38,7 @@ import java.util.LinkedList;
 @Setter
 public final class YamlBroadcastRuleConfiguration implements 
YamlRuleConfiguration {
     
-    @RepositoryTupleField(value = BroadcastRuleNodePathProvider.TABLES, order 
= 0)
+    @RepositoryTupleField(value = BroadcastRuleNodePathProvider.TABLES, type = 
Type.ALGORITHM)
     private Collection<String> tables = new LinkedList<>();
     
     @Override
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 afdc4c5a433..583db75cff6 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
@@ -26,6 +26,7 @@ import 
org.apache.shardingsphere.infra.algorithm.core.yaml.YamlAlgorithmConfigur
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleField;
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleEntity;
+import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleField.Type;
 
 import java.util.LinkedHashMap;
 import java.util.Map;
@@ -38,10 +39,10 @@ import java.util.Map;
 @Setter
 public final class YamlEncryptRuleConfiguration implements 
YamlRuleConfiguration {
     
-    @RepositoryTupleField(value = EncryptRuleNodePathProvider.TABLES, order = 
100)
+    @RepositoryTupleField(value = EncryptRuleNodePathProvider.TABLES, type = 
Type.TABLE)
     private Map<String, YamlEncryptTableRuleConfiguration> tables = new 
LinkedHashMap<>();
     
-    @RepositoryTupleField(value = EncryptRuleNodePathProvider.ENCRYPTORS, 
order = 0)
+    @RepositoryTupleField(value = EncryptRuleNodePathProvider.ENCRYPTORS, type 
= Type.ALGORITHM)
     private Map<String, YamlAlgorithmConfiguration> encryptors = new 
LinkedHashMap<>();
     
     @Override
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 ea105c0d145..754bc42b28a 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
@@ -21,8 +21,9 @@ import lombok.Getter;
 import lombok.Setter;
 import 
org.apache.shardingsphere.infra.algorithm.core.yaml.YamlAlgorithmConfiguration;
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
-import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleField;
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleEntity;
+import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleField;
+import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleField.Type;
 import org.apache.shardingsphere.mask.api.config.MaskRuleConfiguration;
 import 
org.apache.shardingsphere.mask.metadata.nodepath.MaskRuleNodePathProvider;
 import 
org.apache.shardingsphere.mask.yaml.config.rule.YamlMaskTableRuleConfiguration;
@@ -38,10 +39,10 @@ import java.util.Map;
 @Setter
 public final class YamlMaskRuleConfiguration implements YamlRuleConfiguration {
     
-    @RepositoryTupleField(value = MaskRuleNodePathProvider.TABLES, order = 100)
+    @RepositoryTupleField(value = MaskRuleNodePathProvider.TABLES, type = 
Type.TABLE)
     private Map<String, YamlMaskTableRuleConfiguration> tables = new 
LinkedHashMap<>();
     
-    @RepositoryTupleField(value = MaskRuleNodePathProvider.MASK_ALGORITHMS, 
order = 0)
+    @RepositoryTupleField(value = MaskRuleNodePathProvider.MASK_ALGORITHMS, 
type = Type.ALGORITHM)
     private Map<String, YamlAlgorithmConfiguration> maskAlgorithms = new 
LinkedHashMap<>();
     
     @Override
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 6b889e74bee..5da718c2124 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
@@ -23,6 +23,7 @@ import 
org.apache.shardingsphere.infra.algorithm.core.yaml.YamlAlgorithmConfigur
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleField;
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleEntity;
+import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleField.Type;
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.metadata.nodepath.ReadwriteSplittingRuleNodePathProvider;
 import 
org.apache.shardingsphere.readwritesplitting.yaml.config.rule.YamlReadwriteSplittingDataSourceGroupRuleConfiguration;
@@ -38,10 +39,10 @@ import java.util.Map;
 @Setter
 public final class YamlReadwriteSplittingRuleConfiguration implements 
YamlRuleConfiguration {
     
-    @RepositoryTupleField(value = 
ReadwriteSplittingRuleNodePathProvider.DATA_SOURCES, order = 100)
+    @RepositoryTupleField(value = 
ReadwriteSplittingRuleNodePathProvider.DATA_SOURCES, type = Type.DATA_SOURCE)
     private Map<String, 
YamlReadwriteSplittingDataSourceGroupRuleConfiguration> dataSourceGroups = new 
LinkedHashMap<>();
     
-    @RepositoryTupleField(value = 
ReadwriteSplittingRuleNodePathProvider.LOAD_BALANCERS, order = 0)
+    @RepositoryTupleField(value = 
ReadwriteSplittingRuleNodePathProvider.LOAD_BALANCERS, type = Type.ALGORITHM)
     private Map<String, YamlAlgorithmConfiguration> loadBalancers = new 
LinkedHashMap<>();
     
     @Override
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 5dfb0c0a474..7d55a358033 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
@@ -23,6 +23,7 @@ import 
org.apache.shardingsphere.infra.algorithm.core.yaml.YamlAlgorithmConfigur
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleField;
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleEntity;
+import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleField.Type;
 import org.apache.shardingsphere.shadow.api.config.ShadowRuleConfiguration;
 import 
org.apache.shardingsphere.shadow.metadata.nodepath.ShadowRuleNodePathProvider;
 import 
org.apache.shardingsphere.shadow.yaml.config.datasource.YamlShadowDataSourceConfiguration;
@@ -39,16 +40,16 @@ import java.util.Map;
 @Setter
 public final class YamlShadowRuleConfiguration implements 
YamlRuleConfiguration {
     
-    @RepositoryTupleField(value = ShadowRuleNodePathProvider.DATA_SOURCES, 
order = 100)
+    @RepositoryTupleField(value = ShadowRuleNodePathProvider.DATA_SOURCES, 
type = Type.DATA_SOURCE)
     private Map<String, YamlShadowDataSourceConfiguration> dataSources = new 
LinkedHashMap<>();
     
-    @RepositoryTupleField(value = ShadowRuleNodePathProvider.TABLES, order = 
101)
+    @RepositoryTupleField(value = ShadowRuleNodePathProvider.TABLES, type = 
Type.TABLE)
     private Map<String, YamlShadowTableConfiguration> tables = new 
LinkedHashMap<>();
     
-    @RepositoryTupleField(value = ShadowRuleNodePathProvider.ALGORITHMS, order 
= 0)
+    @RepositoryTupleField(value = ShadowRuleNodePathProvider.ALGORITHMS, type 
= Type.ALGORITHM)
     private Map<String, YamlAlgorithmConfiguration> shadowAlgorithms = new 
LinkedHashMap<>();
     
-    @RepositoryTupleField(value = 
ShadowRuleNodePathProvider.DEFAULT_ALGORITHM, order = 1)
+    @RepositoryTupleField(value = 
ShadowRuleNodePathProvider.DEFAULT_ALGORITHM, type = Type.DEFAULT_ALGORITHM)
     private String defaultShadowAlgorithmName;
     
     @Override
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 2183dc18069..bc3f6cb4ce8 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
@@ -23,6 +23,7 @@ import 
org.apache.shardingsphere.infra.algorithm.core.yaml.YamlAlgorithmConfigur
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleField;
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleEntity;
+import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleField.Type;
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleKeyListNameGenerator;
 import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
 import 
org.apache.shardingsphere.sharding.metadata.nodepath.ShardingRuleNodePathProvider;
@@ -47,41 +48,41 @@ import java.util.Map;
 @Setter
 public final class YamlShardingRuleConfiguration implements 
YamlRuleConfiguration {
     
-    @RepositoryTupleField(value = ShardingRuleNodePathProvider.TABLES, order = 
500)
+    @RepositoryTupleField(value = ShardingRuleNodePathProvider.TABLES, type = 
Type.TABLE)
     private Map<String, YamlTableRuleConfiguration> tables = new 
LinkedHashMap<>();
     
-    @RepositoryTupleField(value = ShardingRuleNodePathProvider.AUTO_TABLES, 
order = 501)
+    @RepositoryTupleField(value = ShardingRuleNodePathProvider.AUTO_TABLES, 
type = Type.TABLE)
     private Map<String, YamlShardingAutoTableRuleConfiguration> autoTables = 
new LinkedHashMap<>();
     
-    @RepositoryTupleField(value = ShardingRuleNodePathProvider.BINDING_TABLES, 
order = 502)
+    @RepositoryTupleField(value = ShardingRuleNodePathProvider.BINDING_TABLES, 
type = Type.TABLE)
     
@RepositoryTupleKeyListNameGenerator(ShardingBindingTableRepositoryTupleKeyListNameGenerator.class)
     private Collection<String> bindingTables = new LinkedList<>();
     
-    @RepositoryTupleField(value = 
ShardingRuleNodePathProvider.DEFAULT_DATABASE_STRATEGY, order = 100)
+    @RepositoryTupleField(value = 
ShardingRuleNodePathProvider.DEFAULT_DATABASE_STRATEGY, type = 
Type.DEFAULT_STRATEGY)
     private YamlShardingStrategyConfiguration defaultDatabaseStrategy;
     
-    @RepositoryTupleField(value = 
ShardingRuleNodePathProvider.DEFAULT_TABLE_STRATEGY, order = 101)
+    @RepositoryTupleField(value = 
ShardingRuleNodePathProvider.DEFAULT_TABLE_STRATEGY, type = 
Type.DEFAULT_STRATEGY)
     private YamlShardingStrategyConfiguration defaultTableStrategy;
     
-    @RepositoryTupleField(value = 
ShardingRuleNodePathProvider.DEFAULT_KEY_GENERATE_STRATEGY, order = 102)
+    @RepositoryTupleField(value = 
ShardingRuleNodePathProvider.DEFAULT_KEY_GENERATE_STRATEGY, type = 
Type.DEFAULT_STRATEGY)
     private YamlKeyGenerateStrategyConfiguration defaultKeyGenerateStrategy;
     
-    @RepositoryTupleField(value = 
ShardingRuleNodePathProvider.DEFAULT_AUDIT_STRATEGY, order = 103)
+    @RepositoryTupleField(value = 
ShardingRuleNodePathProvider.DEFAULT_AUDIT_STRATEGY, type = 
Type.DEFAULT_STRATEGY)
     private YamlShardingAuditStrategyConfiguration defaultAuditStrategy;
     
-    @RepositoryTupleField(value = ShardingRuleNodePathProvider.ALGORITHMS, 
order = 0)
+    @RepositoryTupleField(value = ShardingRuleNodePathProvider.ALGORITHMS, 
type = Type.ALGORITHM)
     private Map<String, YamlAlgorithmConfiguration> shardingAlgorithms = new 
LinkedHashMap<>();
     
-    @RepositoryTupleField(value = ShardingRuleNodePathProvider.KEY_GENERATORS, 
order = 1)
+    @RepositoryTupleField(value = ShardingRuleNodePathProvider.KEY_GENERATORS, 
type = Type.ALGORITHM)
     private Map<String, YamlAlgorithmConfiguration> keyGenerators = new 
LinkedHashMap<>();
     
-    @RepositoryTupleField(value = ShardingRuleNodePathProvider.AUDITORS, order 
= 2)
+    @RepositoryTupleField(value = ShardingRuleNodePathProvider.AUDITORS, type 
= Type.ALGORITHM)
     private Map<String, YamlAlgorithmConfiguration> auditors = new 
LinkedHashMap<>();
     
-    @RepositoryTupleField(value = 
ShardingRuleNodePathProvider.DEFAULT_SHARDING_COLUMN, order = 200)
+    @RepositoryTupleField(value = 
ShardingRuleNodePathProvider.DEFAULT_SHARDING_COLUMN, type = Type.OTHER)
     private String defaultShardingColumn;
     
-    @RepositoryTupleField(value = ShardingRuleNodePathProvider.SHARDING_CACHE, 
order = 201)
+    @RepositoryTupleField(value = ShardingRuleNodePathProvider.SHARDING_CACHE, 
type = Type.OTHER)
     private YamlShardingCacheConfiguration shardingCache;
     
     @Override
diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/it/ShardingConfigurationRepositoryTupleSwapperEngineIT.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/it/ShardingConfigurationRepositoryTupleSwapperEngineIT.java
index 70de0e39451..9ea584acf36 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/it/ShardingConfigurationRepositoryTupleSwapperEngineIT.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/it/ShardingConfigurationRepositoryTupleSwapperEngineIT.java
@@ -59,20 +59,20 @@ class ShardingConfigurationRepositoryTupleSwapperEngineIT 
extends RepositoryTupl
         assertRepositoryTuple(actualRepositoryTuples.get(10),
                 "default_strategies/default_audit_strategy", 
((YamlShardingRuleConfiguration) 
expectedYamlRuleConfig).getDefaultAuditStrategy());
         assertRepositoryTuple(actualRepositoryTuples.get(11),
-                "default_strategies/default_sharding_column", 
((YamlShardingRuleConfiguration) 
expectedYamlRuleConfig).getDefaultShardingColumn());
-        assertRepositoryTuple(actualRepositoryTuples.get(12),
-                "sharding_cache", ((YamlShardingRuleConfiguration) 
expectedYamlRuleConfig).getShardingCache());
-        assertRepositoryTuple(actualRepositoryTuples.get(13),
                 "tables/t_user", ((YamlShardingRuleConfiguration) 
expectedYamlRuleConfig).getTables().get("t_user"));
-        assertRepositoryTuple(actualRepositoryTuples.get(14),
+        assertRepositoryTuple(actualRepositoryTuples.get(12),
                 "tables/t_stock", ((YamlShardingRuleConfiguration) 
expectedYamlRuleConfig).getTables().get("t_stock"));
-        assertRepositoryTuple(actualRepositoryTuples.get(15),
+        assertRepositoryTuple(actualRepositoryTuples.get(13),
                 "tables/t_order", ((YamlShardingRuleConfiguration) 
expectedYamlRuleConfig).getTables().get("t_order"));
-        assertRepositoryTuple(actualRepositoryTuples.get(16),
+        assertRepositoryTuple(actualRepositoryTuples.get(14),
                 "tables/t_order_item", ((YamlShardingRuleConfiguration) 
expectedYamlRuleConfig).getTables().get("t_order_item"));
-        assertRepositoryTuple(actualRepositoryTuples.get(17),
-                "binding_tables" + 
actualRepositoryTuples.get(17).getKey().substring(actualRepositoryTuples.get(17).getKey().indexOf("/")),
+        assertRepositoryTuple(actualRepositoryTuples.get(15),
+                "binding_tables" + 
actualRepositoryTuples.get(15).getKey().substring(actualRepositoryTuples.get(15).getKey().indexOf("/")),
                 new ArrayList<>(((YamlShardingRuleConfiguration) 
expectedYamlRuleConfig).getBindingTables()).get(0));
-        assertRepositoryTuple(actualRepositoryTuples.get(18), 
"binding_tables/foo", new ArrayList<>(((YamlShardingRuleConfiguration) 
expectedYamlRuleConfig).getBindingTables()).get(1));
+        assertRepositoryTuple(actualRepositoryTuples.get(16), 
"binding_tables/foo", new ArrayList<>(((YamlShardingRuleConfiguration) 
expectedYamlRuleConfig).getBindingTables()).get(1));
+        assertRepositoryTuple(actualRepositoryTuples.get(17),
+                "default_strategies/default_sharding_column", 
((YamlShardingRuleConfiguration) 
expectedYamlRuleConfig).getDefaultShardingColumn());
+        assertRepositoryTuple(actualRepositoryTuples.get(18),
+                "sharding_cache", ((YamlShardingRuleConfiguration) 
expectedYamlRuleConfig).getShardingCache());
     }
 }
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/yaml/config/pojo/rule/annotation/RepositoryTupleField.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/yaml/config/pojo/rule/annotation/RepositoryTupleField.java
index 47d71b3d893..31bcf22ef25 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/yaml/config/pojo/rule/annotation/RepositoryTupleField.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/yaml/config/pojo/rule/annotation/RepositoryTupleField.java
@@ -17,6 +17,8 @@
 
 package org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation;
 
+import lombok.RequiredArgsConstructor;
+
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -37,9 +39,15 @@ public @interface RepositoryTupleField {
     String value();
     
     /**
-     * Get persist order.
+     * Get type.
      * 
-     * @return persist order
+     * @return type
      */
-    int order();
+    Type type();
+    
+    @RequiredArgsConstructor
+    enum Type implements Comparable<Type> {
+        
+        ALGORITHM, DEFAULT_ALGORITHM, STRATEGY, DEFAULT_STRATEGY, DATA_SOURCE, 
TABLE, OTHER
+    }
 }
diff --git 
a/mode/api/src/main/java/org/apache/shardingsphere/mode/engine/RepositoryTupleSwapperEngine.java
 
b/mode/api/src/main/java/org/apache/shardingsphere/mode/engine/RepositoryTupleSwapperEngine.java
index a1cc5bafafa..88ccf234037 100644
--- 
a/mode/api/src/main/java/org/apache/shardingsphere/mode/engine/RepositoryTupleSwapperEngine.java
+++ 
b/mode/api/src/main/java/org/apache/shardingsphere/mode/engine/RepositoryTupleSwapperEngine.java
@@ -121,7 +121,7 @@ public final class RepositoryTupleSwapperEngine {
     private Collection<Field> getFields(final Class<? extends 
YamlRuleConfiguration> yamlRuleConfigurationClass) {
         return Arrays.stream(yamlRuleConfigurationClass.getDeclaredFields())
                 .filter(each -> null != 
each.getAnnotation(RepositoryTupleField.class))
-                .sorted(Comparator.comparingInt(o -> 
o.getAnnotation(RepositoryTupleField.class).order())).collect(Collectors.toList());
+                .sorted(Comparator.comparingInt(o -> 
o.getAnnotation(RepositoryTupleField.class).type().ordinal())).collect(Collectors.toList());
     }
     
     /**

Reply via email to