You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2023/06/26 13:01:03 UTC
[shardingsphere] branch master updated: Refactor rule node path (#26591)
This is an automated email from the ASF dual-hosted git repository.
panjuan 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 ae4feab9faa Refactor rule node path (#26591)
ae4feab9faa is described below
commit ae4feab9faa945f334b54a52acb0ccfe53509334
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Mon Jun 26 21:00:57 2023 +0800
Refactor rule node path (#26591)
---
.../BroadcastRuleConfigurationEventBuilder.java | 4 +-
.../metadata/converter/BroadcastNodeConverter.java | 24 ++--
.../NewYamlBroadcastRuleConfigurationSwapper.java | 2 +-
...atibleEncryptRuleConfigurationEventBuilder.java | 6 +-
.../EncryptRuleConfigurationEventBuilder.java | 6 +-
.../converter/CompatibleEncryptNodeConverter.java | 34 ++---
.../metadata/converter/EncryptNodeConverter.java | 30 ++---
...lCompatibleEncryptRuleConfigurationSwapper.java | 12 +-
.../NewYamlEncryptRuleConfigurationSwapper.java | 12 +-
.../event/MaskRuleConfigurationEventBuilder.java | 6 +-
.../mask/metadata/converter/MaskNodeConverter.java | 34 ++---
.../NewYamlMaskRuleConfigurationSwapper.java | 12 +-
...riteSplittingRuleConfigurationEventBuilder.java | 6 +-
.../converter/ReadwriteSplittingNodeConverter.java | 34 ++---
...ReadwriteSplittingRuleConfigurationSwapper.java | 12 +-
.../event/ShadowRuleConfigurationEventBuilder.java | 10 +-
.../metadata/converter/ShadowNodeConverter.java | 56 ++++----
.../NewYamlShadowRuleConfigurationSwapper.java | 22 ++--
.../ShardingRuleConfigurationEventBuilder.java | 26 ++--
.../metadata/converter/ShardingNodeConverter.java | 142 ++++++++++-----------
.../NewYamlShardingRuleConfigurationSwapper.java | 60 ++++-----
.../metadata/converter/RuleItemNodeConverter.java | 89 -------------
.../RuleRootNodePath.java} | 26 ++--
.../nodepath/item/NamedRuleItemNodePath.java | 91 +++++++++++++
.../item/UniqueRuleItemNodePath.java} | 40 +++---
.../RuleRootNodePathTest.java} | 18 ++-
.../item/NamedRuleItemNodePathTest.java} | 23 ++--
.../event/SingleRuleConfigurationEventBuilder.java | 4 +-
.../metadata/converter/SingleNodeConverter.java | 16 +--
.../NewYamlSingleRuleConfigurationSwapper.java | 2 +-
30 files changed, 437 insertions(+), 422 deletions(-)
diff --git a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/BroadcastRuleConfigurationEventBuilder.java b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/BroadcastRuleConfigurationEventBuilder.java
index 77cf6d9ac8b..2a8d3d56197 100644
--- a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/BroadcastRuleConfigurationEventBuilder.java
+++ b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/BroadcastRuleConfigurationEventBuilder.java
@@ -36,10 +36,10 @@ public final class BroadcastRuleConfigurationEventBuilder implements RuleConfigu
@Override
public Optional<GovernanceEvent> build(final String databaseName, final DataChangedEvent event) {
- if (!BroadcastNodeConverter.getRuleRootNodeConverter().isRulePath(event.getKey()) || Strings.isNullOrEmpty(event.getValue())) {
+ if (!BroadcastNodeConverter.getRuleRootNodePath().isValidatedPath(event.getKey()) || Strings.isNullOrEmpty(event.getValue())) {
return Optional.empty();
}
- if (BroadcastNodeConverter.getTableNodeConvertor().getNameByActiveVersionPath(event.getKey()).isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
+ if (BroadcastNodeConverter.getTableNodePath().getNameByActiveVersion(event.getKey()).isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
return createBroadcastConfigEvent(databaseName, event);
}
return Optional.empty();
diff --git a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/metadata/converter/BroadcastNodeConverter.java b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/metadata/converter/BroadcastNodeConverter.java
index a2cd4607934..95ee44cb736 100644
--- a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/metadata/converter/BroadcastNodeConverter.java
+++ b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/metadata/converter/BroadcastNodeConverter.java
@@ -19,8 +19,8 @@ package org.apache.shardingsphere.broadcast.metadata.converter;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
-import org.apache.shardingsphere.infra.metadata.converter.RuleItemNodeConverter;
-import org.apache.shardingsphere.infra.metadata.converter.RuleRootNodeConverter;
+import org.apache.shardingsphere.infra.metadata.nodepath.item.NamedRuleItemNodePath;
+import org.apache.shardingsphere.infra.metadata.nodepath.RuleRootNodePath;
/**
* Broadcast node converter.
@@ -30,26 +30,26 @@ public final class BroadcastNodeConverter {
private static final String TABLES_NODE = "tables";
- private static final RuleRootNodeConverter ROOT_NODE_CONVERTER = new RuleRootNodeConverter("broadcast");
+ private static final RuleRootNodePath ROOT_NODE_PATH = new RuleRootNodePath("broadcast");
- private static final RuleItemNodeConverter TABLE_NODE_CONVERTER = new RuleItemNodeConverter(ROOT_NODE_CONVERTER, TABLES_NODE);
+ private static final NamedRuleItemNodePath TABLE_NODE_PATH = new NamedRuleItemNodePath(ROOT_NODE_PATH, TABLES_NODE);
/**
- * Get rule root node converter.
+ * Get rule root node path.
*
- * @return rule root node converter
+ * @return rule root node path
*/
- public static RuleRootNodeConverter getRuleRootNodeConverter() {
- return ROOT_NODE_CONVERTER;
+ public static RuleRootNodePath getRuleRootNodePath() {
+ return ROOT_NODE_PATH;
}
/**
- * Get table node converter.
+ * Get table node path.
*
- * @return table node converter
+ * @return table node path
*/
- public static RuleItemNodeConverter getTableNodeConvertor() {
- return TABLE_NODE_CONVERTER;
+ public static NamedRuleItemNodePath getTableNodePath() {
+ return TABLE_NODE_PATH;
}
/**
diff --git a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/yaml/swapper/NewYamlBroadcastRuleConfigurationSwapper.java b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/yaml/swapper/NewYamlBroadcastRuleConfigurationSwapper.java
index 2a0f0dda48c..287f08f4fd6 100644
--- a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/yaml/swapper/NewYamlBroadcastRuleConfigurationSwapper.java
+++ b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/yaml/swapper/NewYamlBroadcastRuleConfigurationSwapper.java
@@ -47,7 +47,7 @@ public final class NewYamlBroadcastRuleConfigurationSwapper implements NewYamlRu
@Override
public BroadcastRuleConfiguration swapToObject(final Collection<YamlDataNode> dataNodes) {
for (YamlDataNode each : dataNodes) {
- if (BroadcastNodeConverter.getRuleRootNodeConverter().isRulePath(each.getKey())) {
+ if (BroadcastNodeConverter.getRuleRootNodePath().isValidatedPath(each.getKey())) {
YamlBroadcastRuleConfiguration yamlBroadcastRuleConfiguration = YamlEngine.unmarshal(each.getValue(), YamlBroadcastRuleConfiguration.class);
return new BroadcastRuleConfiguration(yamlBroadcastRuleConfiguration.getTables());
}
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/CompatibleEncryptRuleConfigurationEventBuilder.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/CompatibleEncryptRuleConfigurationEventBuilder.java
index 98f2c4c4198..7b43557da67 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/CompatibleEncryptRuleConfigurationEventBuilder.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/CompatibleEncryptRuleConfigurationEventBuilder.java
@@ -40,14 +40,14 @@ public final class CompatibleEncryptRuleConfigurationEventBuilder implements Rul
@Override
public Optional<GovernanceEvent> build(final String databaseName, final DataChangedEvent event) {
- if (!CompatibleEncryptNodeConverter.getRuleRootNodeConverter().isRulePath(event.getKey()) || Strings.isNullOrEmpty(event.getValue())) {
+ if (!CompatibleEncryptNodeConverter.getRuleRootNodePath().isValidatedPath(event.getKey()) || Strings.isNullOrEmpty(event.getValue())) {
return Optional.empty();
}
- Optional<String> tableName = CompatibleEncryptNodeConverter.getTableNodeConvertor().getNameByActiveVersionPath(event.getKey());
+ Optional<String> tableName = CompatibleEncryptNodeConverter.getTableNodePath().getNameByActiveVersion(event.getKey());
if (tableName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
return createEncryptConfigEvent(databaseName, tableName.get(), event);
}
- Optional<String> encryptorName = CompatibleEncryptNodeConverter.getEncryptorNodeConvertor().getNameByActiveVersionPath(event.getKey());
+ Optional<String> encryptorName = CompatibleEncryptNodeConverter.getEncryptorNodePath().getNameByActiveVersion(event.getKey());
if (encryptorName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
return createEncryptorEvent(databaseName, encryptorName.get(), event);
}
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/EncryptRuleConfigurationEventBuilder.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/EncryptRuleConfigurationEventBuilder.java
index b8a4f115711..def19989bdc 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/EncryptRuleConfigurationEventBuilder.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/EncryptRuleConfigurationEventBuilder.java
@@ -38,14 +38,14 @@ public final class EncryptRuleConfigurationEventBuilder implements RuleConfigura
@Override
public Optional<GovernanceEvent> build(final String databaseName, final DataChangedEvent event) {
- if (!EncryptNodeConverter.getRuleRootNodeConverter().isRulePath(event.getKey()) || Strings.isNullOrEmpty(event.getValue())) {
+ if (!EncryptNodeConverter.getRuleRootNodePath().isValidatedPath(event.getKey()) || Strings.isNullOrEmpty(event.getValue())) {
return Optional.empty();
}
- Optional<String> tableName = EncryptNodeConverter.getTableNodeConvertor().getNameByActiveVersionPath(event.getKey());
+ Optional<String> tableName = EncryptNodeConverter.getTableNodePath().getNameByActiveVersion(event.getKey());
if (tableName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
return createEncryptConfigEvent(databaseName, tableName.get(), event);
}
- Optional<String> encryptorName = EncryptNodeConverter.getEncryptorNodeConvertor().getNameByActiveVersionPath(event.getKey());
+ Optional<String> encryptorName = EncryptNodeConverter.getEncryptorNodePath().getNameByActiveVersion(event.getKey());
if (encryptorName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
return createEncryptorEvent(databaseName, encryptorName.get(), event);
}
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/converter/CompatibleEncryptNodeConverter.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/converter/CompatibleEncryptNodeConverter.java
index 479fc5b26cf..62be882beb5 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/converter/CompatibleEncryptNodeConverter.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/converter/CompatibleEncryptNodeConverter.java
@@ -19,8 +19,8 @@ package org.apache.shardingsphere.encrypt.metadata.converter;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
-import org.apache.shardingsphere.infra.metadata.converter.RuleItemNodeConverter;
-import org.apache.shardingsphere.infra.metadata.converter.RuleRootNodeConverter;
+import org.apache.shardingsphere.infra.metadata.nodepath.item.NamedRuleItemNodePath;
+import org.apache.shardingsphere.infra.metadata.nodepath.RuleRootNodePath;
/**
* Compatible encrypt node converter.
@@ -30,36 +30,36 @@ import org.apache.shardingsphere.infra.metadata.converter.RuleRootNodeConverter;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class CompatibleEncryptNodeConverter {
- private static final RuleRootNodeConverter ROOT_NODE_CONVERTER = new RuleRootNodeConverter("compatible_encrypt");
+ private static final RuleRootNodePath ROOT_NODE_PATH = new RuleRootNodePath("compatible_encrypt");
- private static final RuleItemNodeConverter TABLE_NODE_CONVERTER = new RuleItemNodeConverter(ROOT_NODE_CONVERTER, "tables");
+ private static final NamedRuleItemNodePath TABLE_NODE_PATH = new NamedRuleItemNodePath(ROOT_NODE_PATH, "tables");
- private static final RuleItemNodeConverter ENCRYPTOR_NODE_CONVERTER = new RuleItemNodeConverter(ROOT_NODE_CONVERTER, "encryptors");
+ private static final NamedRuleItemNodePath ENCRYPTOR_NODE_PATH = new NamedRuleItemNodePath(ROOT_NODE_PATH, "encryptors");
/**
- * Get rule root node converter.
+ * Get rule root node path.
*
- * @return rule root node converter
+ * @return rule root node path
*/
- public static RuleRootNodeConverter getRuleRootNodeConverter() {
- return ROOT_NODE_CONVERTER;
+ public static RuleRootNodePath getRuleRootNodePath() {
+ return ROOT_NODE_PATH;
}
/**
- * Get table node converter.
+ * Get table node path.
*
- * @return table node converter
+ * @return table node path
*/
- public static RuleItemNodeConverter getTableNodeConvertor() {
- return TABLE_NODE_CONVERTER;
+ public static NamedRuleItemNodePath getTableNodePath() {
+ return TABLE_NODE_PATH;
}
/**
- * Get encryptor node converter.
+ * Get encryptor node path.
*
- * @return encryptor node converter
+ * @return encryptor node path
*/
- public static RuleItemNodeConverter getEncryptorNodeConvertor() {
- return ENCRYPTOR_NODE_CONVERTER;
+ public static NamedRuleItemNodePath getEncryptorNodePath() {
+ return ENCRYPTOR_NODE_PATH;
}
}
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/converter/EncryptNodeConverter.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/converter/EncryptNodeConverter.java
index 0adcd9039de..66aecfb72f9 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/converter/EncryptNodeConverter.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/converter/EncryptNodeConverter.java
@@ -19,8 +19,8 @@ package org.apache.shardingsphere.encrypt.metadata.converter;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
-import org.apache.shardingsphere.infra.metadata.converter.RuleItemNodeConverter;
-import org.apache.shardingsphere.infra.metadata.converter.RuleRootNodeConverter;
+import org.apache.shardingsphere.infra.metadata.nodepath.item.NamedRuleItemNodePath;
+import org.apache.shardingsphere.infra.metadata.nodepath.RuleRootNodePath;
/**
* Encrypt node converter.
@@ -28,36 +28,36 @@ import org.apache.shardingsphere.infra.metadata.converter.RuleRootNodeConverter;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class EncryptNodeConverter {
- private static final RuleRootNodeConverter ROOT_NODE_CONVERTER = new RuleRootNodeConverter("encrypt");
+ private static final RuleRootNodePath ROOT_NODE_PATH = new RuleRootNodePath("encrypt");
- private static final RuleItemNodeConverter TABLE_NODE_CONVERTER = new RuleItemNodeConverter(ROOT_NODE_CONVERTER, "tables");
+ private static final NamedRuleItemNodePath TABLE_NODE_PATH = new NamedRuleItemNodePath(ROOT_NODE_PATH, "tables");
- private static final RuleItemNodeConverter ENCRYPTOR_NODE_CONVERTER = new RuleItemNodeConverter(ROOT_NODE_CONVERTER, "encryptors");
+ private static final NamedRuleItemNodePath ENCRYPTOR_NODE_PATH = new NamedRuleItemNodePath(ROOT_NODE_PATH, "encryptors");
/**
* Get rule root node converter.
*
* @return rule root node converter
*/
- public static RuleRootNodeConverter getRuleRootNodeConverter() {
- return ROOT_NODE_CONVERTER;
+ public static RuleRootNodePath getRuleRootNodePath() {
+ return ROOT_NODE_PATH;
}
/**
- * Get table node converter.
+ * Get table node path.
*
- * @return table node converter
+ * @return table node path
*/
- public static RuleItemNodeConverter getTableNodeConvertor() {
- return TABLE_NODE_CONVERTER;
+ public static NamedRuleItemNodePath getTableNodePath() {
+ return TABLE_NODE_PATH;
}
/**
- * Get encryptor node converter.
+ * Get encryptor node path.
*
- * @return encryptor node converter
+ * @return encryptor node path
*/
- public static RuleItemNodeConverter getEncryptorNodeConvertor() {
- return ENCRYPTOR_NODE_CONVERTER;
+ public static NamedRuleItemNodePath getEncryptorNodePath() {
+ return ENCRYPTOR_NODE_PATH;
}
}
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/yaml/swapper/NewYamlCompatibleEncryptRuleConfigurationSwapper.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/yaml/swapper/NewYamlCompatibleEncryptRuleConfigurationSwapper.java
index 67df1f4483c..856e6bdcbcf 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/yaml/swapper/NewYamlCompatibleEncryptRuleConfigurationSwapper.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/yaml/swapper/NewYamlCompatibleEncryptRuleConfigurationSwapper.java
@@ -54,11 +54,11 @@ public final class NewYamlCompatibleEncryptRuleConfigurationSwapper implements N
public Collection<YamlDataNode> swapToDataNodes(final CompatibleEncryptRuleConfiguration data) {
Collection<YamlDataNode> result = new LinkedHashSet<>();
for (Entry<String, AlgorithmConfiguration> entry : data.getEncryptors().entrySet()) {
- result.add(new YamlDataNode(CompatibleEncryptNodeConverter.getEncryptorNodeConvertor().getNamePath(entry.getKey()),
+ result.add(new YamlDataNode(CompatibleEncryptNodeConverter.getEncryptorNodePath().getPath(entry.getKey()),
YamlEngine.marshal(algorithmSwapper.swapToYamlConfiguration(entry.getValue()))));
}
for (EncryptTableRuleConfiguration each : data.getTables()) {
- result.add(new YamlDataNode(CompatibleEncryptNodeConverter.getTableNodeConvertor().getNamePath(each.getName()), YamlEngine.marshal(tableSwapper.swapToYamlConfiguration(each))));
+ result.add(new YamlDataNode(CompatibleEncryptNodeConverter.getTableNodePath().getPath(each.getName()), YamlEngine.marshal(tableSwapper.swapToYamlConfiguration(each))));
}
return result;
}
@@ -68,11 +68,11 @@ public final class NewYamlCompatibleEncryptRuleConfigurationSwapper implements N
Collection<EncryptTableRuleConfiguration> tables = new LinkedList<>();
Map<String, AlgorithmConfiguration> encryptors = new HashMap<>();
for (YamlDataNode each : dataNodes) {
- if (CompatibleEncryptNodeConverter.getTableNodeConvertor().isPath(each.getKey())) {
- CompatibleEncryptNodeConverter.getTableNodeConvertor().getName(each.getKey())
+ if (CompatibleEncryptNodeConverter.getTableNodePath().isValidatedPath(each.getKey())) {
+ CompatibleEncryptNodeConverter.getTableNodePath().getName(each.getKey())
.ifPresent(tableName -> tables.add(tableSwapper.swapToObject(YamlEngine.unmarshal(each.getValue(), YamlCompatibleEncryptTableRuleConfiguration.class))));
- } else if (CompatibleEncryptNodeConverter.getEncryptorNodeConvertor().isPath(each.getKey())) {
- CompatibleEncryptNodeConverter.getEncryptorNodeConvertor().getName(each.getKey())
+ } else if (CompatibleEncryptNodeConverter.getEncryptorNodePath().isValidatedPath(each.getKey())) {
+ CompatibleEncryptNodeConverter.getEncryptorNodePath().getName(each.getKey())
.ifPresent(encryptorName -> encryptors.put(encryptorName, algorithmSwapper.swapToObject(YamlEngine.unmarshal(each.getValue(), YamlAlgorithmConfiguration.class))));
}
}
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/yaml/swapper/NewYamlEncryptRuleConfigurationSwapper.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/yaml/swapper/NewYamlEncryptRuleConfigurationSwapper.java
index 15eb22f482d..cf336ffc8cd 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/yaml/swapper/NewYamlEncryptRuleConfigurationSwapper.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/yaml/swapper/NewYamlEncryptRuleConfigurationSwapper.java
@@ -51,11 +51,11 @@ public final class NewYamlEncryptRuleConfigurationSwapper implements NewYamlRule
public Collection<YamlDataNode> swapToDataNodes(final EncryptRuleConfiguration data) {
Collection<YamlDataNode> result = new LinkedHashSet<>();
for (Entry<String, AlgorithmConfiguration> entry : data.getEncryptors().entrySet()) {
- result.add(new YamlDataNode(EncryptNodeConverter.getEncryptorNodeConvertor().getNamePath(entry.getKey()),
+ result.add(new YamlDataNode(EncryptNodeConverter.getEncryptorNodePath().getPath(entry.getKey()),
YamlEngine.marshal(algorithmSwapper.swapToYamlConfiguration(entry.getValue()))));
}
for (EncryptTableRuleConfiguration each : data.getTables()) {
- result.add(new YamlDataNode(EncryptNodeConverter.getTableNodeConvertor().getNamePath(each.getName()), YamlEngine.marshal(tableSwapper.swapToYamlConfiguration(each))));
+ result.add(new YamlDataNode(EncryptNodeConverter.getTableNodePath().getPath(each.getName()), YamlEngine.marshal(tableSwapper.swapToYamlConfiguration(each))));
}
return result;
}
@@ -65,11 +65,11 @@ public final class NewYamlEncryptRuleConfigurationSwapper implements NewYamlRule
Collection<EncryptTableRuleConfiguration> tables = new LinkedList<>();
Map<String, AlgorithmConfiguration> encryptors = new HashMap<>();
for (YamlDataNode each : dataNodes) {
- if (EncryptNodeConverter.getTableNodeConvertor().isPath(each.getKey())) {
- EncryptNodeConverter.getTableNodeConvertor().getName(each.getKey())
+ if (EncryptNodeConverter.getTableNodePath().isValidatedPath(each.getKey())) {
+ EncryptNodeConverter.getTableNodePath().getName(each.getKey())
.ifPresent(tableName -> tables.add(tableSwapper.swapToObject(YamlEngine.unmarshal(each.getValue(), YamlEncryptTableRuleConfiguration.class))));
- } else if (EncryptNodeConverter.getEncryptorNodeConvertor().isPath(each.getKey())) {
- EncryptNodeConverter.getEncryptorNodeConvertor().getName(each.getKey())
+ } else if (EncryptNodeConverter.getEncryptorNodePath().isValidatedPath(each.getKey())) {
+ EncryptNodeConverter.getEncryptorNodePath().getName(each.getKey())
.ifPresent(encryptorName -> encryptors.put(encryptorName, algorithmSwapper.swapToObject(YamlEngine.unmarshal(each.getValue(), YamlAlgorithmConfiguration.class))));
}
}
diff --git a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/MaskRuleConfigurationEventBuilder.java b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/MaskRuleConfigurationEventBuilder.java
index e7c5e730c45..b498cfc53e2 100644
--- a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/MaskRuleConfigurationEventBuilder.java
+++ b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/MaskRuleConfigurationEventBuilder.java
@@ -38,14 +38,14 @@ public final class MaskRuleConfigurationEventBuilder implements RuleConfiguratio
@Override
public Optional<GovernanceEvent> build(final String databaseName, final DataChangedEvent event) {
- if (!MaskNodeConverter.getRuleRootNodeConverter().isRulePath(event.getKey()) || Strings.isNullOrEmpty(event.getValue())) {
+ if (!MaskNodeConverter.getRuleRootNodePath().isValidatedPath(event.getKey()) || Strings.isNullOrEmpty(event.getValue())) {
return Optional.empty();
}
- Optional<String> tableName = MaskNodeConverter.getTableNodeConvertor().getNameByActiveVersionPath(event.getKey());
+ Optional<String> tableName = MaskNodeConverter.getTableNodePath().getNameByActiveVersion(event.getKey());
if (tableName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
return createMaskConfigEvent(databaseName, tableName.get(), event);
}
- Optional<String> algorithmName = MaskNodeConverter.getAlgorithmNodeConvertor().getNameByActiveVersionPath(event.getKey());
+ Optional<String> algorithmName = MaskNodeConverter.getAlgorithmNodePath().getNameByActiveVersion(event.getKey());
if (algorithmName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
return createMaskAlgorithmEvent(databaseName, algorithmName.get(), event);
}
diff --git a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/metadata/converter/MaskNodeConverter.java b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/metadata/converter/MaskNodeConverter.java
index 9686ac8caf9..2ccb4d3492f 100644
--- a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/metadata/converter/MaskNodeConverter.java
+++ b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/metadata/converter/MaskNodeConverter.java
@@ -19,8 +19,8 @@ package org.apache.shardingsphere.mask.metadata.converter;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
-import org.apache.shardingsphere.infra.metadata.converter.RuleItemNodeConverter;
-import org.apache.shardingsphere.infra.metadata.converter.RuleRootNodeConverter;
+import org.apache.shardingsphere.infra.metadata.nodepath.item.NamedRuleItemNodePath;
+import org.apache.shardingsphere.infra.metadata.nodepath.RuleRootNodePath;
/**
* Mask node converter.
@@ -28,36 +28,36 @@ import org.apache.shardingsphere.infra.metadata.converter.RuleRootNodeConverter;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class MaskNodeConverter {
- private static final RuleRootNodeConverter ROOT_NODE_CONVERTER = new RuleRootNodeConverter("mask");
+ private static final RuleRootNodePath ROOT_NODE_PATH = new RuleRootNodePath("mask");
- private static final RuleItemNodeConverter TABLE_NODE_CONVERTER = new RuleItemNodeConverter(ROOT_NODE_CONVERTER, "tables");
+ private static final NamedRuleItemNodePath TABLE_NODE_PATH = new NamedRuleItemNodePath(ROOT_NODE_PATH, "tables");
- private static final RuleItemNodeConverter ALGORITHM_NODE_CONVERTER = new RuleItemNodeConverter(ROOT_NODE_CONVERTER, "algorithms");
+ private static final NamedRuleItemNodePath ALGORITHM_NODE_PATH = new NamedRuleItemNodePath(ROOT_NODE_PATH, "algorithms");
/**
- * Get rule root node converter.
+ * Get rule root node path.
*
- * @return rule root node converter
+ * @return rule root node path
*/
- public static RuleRootNodeConverter getRuleRootNodeConverter() {
- return ROOT_NODE_CONVERTER;
+ public static RuleRootNodePath getRuleRootNodePath() {
+ return ROOT_NODE_PATH;
}
/**
- * Get table node converter.
+ * Get table node path.
*
- * @return table node converter
+ * @return table node path
*/
- public static RuleItemNodeConverter getTableNodeConvertor() {
- return TABLE_NODE_CONVERTER;
+ public static NamedRuleItemNodePath getTableNodePath() {
+ return TABLE_NODE_PATH;
}
/**
- * Get algorithm node converter.
+ * Get algorithm node path.
*
- * @return algorithm node converter
+ * @return algorithm node path
*/
- public static RuleItemNodeConverter getAlgorithmNodeConvertor() {
- return ALGORITHM_NODE_CONVERTER;
+ public static NamedRuleItemNodePath getAlgorithmNodePath() {
+ return ALGORITHM_NODE_PATH;
}
}
diff --git a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/yaml/swapper/NewYamlMaskRuleConfigurationSwapper.java b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/yaml/swapper/NewYamlMaskRuleConfigurationSwapper.java
index b9d09d17d24..a188e1994fd 100644
--- a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/yaml/swapper/NewYamlMaskRuleConfigurationSwapper.java
+++ b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/yaml/swapper/NewYamlMaskRuleConfigurationSwapper.java
@@ -50,10 +50,10 @@ public final class NewYamlMaskRuleConfigurationSwapper implements NewYamlRuleCon
public Collection<YamlDataNode> swapToDataNodes(final MaskRuleConfiguration data) {
Collection<YamlDataNode> result = new LinkedHashSet<>();
for (Map.Entry<String, AlgorithmConfiguration> entry : data.getMaskAlgorithms().entrySet()) {
- result.add(new YamlDataNode(MaskNodeConverter.getAlgorithmNodeConvertor().getNamePath(entry.getKey()), YamlEngine.marshal(algorithmSwapper.swapToYamlConfiguration(entry.getValue()))));
+ result.add(new YamlDataNode(MaskNodeConverter.getAlgorithmNodePath().getPath(entry.getKey()), YamlEngine.marshal(algorithmSwapper.swapToYamlConfiguration(entry.getValue()))));
}
for (MaskTableRuleConfiguration each : data.getTables()) {
- result.add(new YamlDataNode(MaskNodeConverter.getTableNodeConvertor().getNamePath(each.getName()), YamlEngine.marshal(tableSwapper.swapToYamlConfiguration(each))));
+ result.add(new YamlDataNode(MaskNodeConverter.getTableNodePath().getPath(each.getName()), YamlEngine.marshal(tableSwapper.swapToYamlConfiguration(each))));
}
return result;
}
@@ -63,11 +63,11 @@ public final class NewYamlMaskRuleConfigurationSwapper implements NewYamlRuleCon
Collection<MaskTableRuleConfiguration> tables = new LinkedList<>();
Map<String, AlgorithmConfiguration> algorithms = new LinkedHashMap<>();
for (YamlDataNode each : dataNodes) {
- if (MaskNodeConverter.getTableNodeConvertor().isPath(each.getKey())) {
- MaskNodeConverter.getTableNodeConvertor().getName(each.getKey())
+ if (MaskNodeConverter.getTableNodePath().isValidatedPath(each.getKey())) {
+ MaskNodeConverter.getTableNodePath().getName(each.getKey())
.ifPresent(tableName -> tables.add(tableSwapper.swapToObject(YamlEngine.unmarshal(each.getValue(), YamlMaskTableRuleConfiguration.class))));
- } else if (MaskNodeConverter.getAlgorithmNodeConvertor().isPath(each.getKey())) {
- MaskNodeConverter.getAlgorithmNodeConvertor().getName(each.getKey())
+ } else if (MaskNodeConverter.getAlgorithmNodePath().isValidatedPath(each.getKey())) {
+ MaskNodeConverter.getAlgorithmNodePath().getName(each.getKey())
.ifPresent(loadBalancerName -> algorithms.put(loadBalancerName, algorithmSwapper.swapToObject(YamlEngine.unmarshal(each.getValue(), YamlAlgorithmConfiguration.class))));
}
}
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/ReadwriteSplittingRuleConfigurationEventBuilder.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/ReadwriteSplittingRuleConfigurationEventBuilder.java
index 5307d265fa9..c531a8fa055 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/ReadwriteSplittingRuleConfigurationEventBuilder.java
+++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/ReadwriteSplittingRuleConfigurationEventBuilder.java
@@ -38,14 +38,14 @@ public final class ReadwriteSplittingRuleConfigurationEventBuilder implements Ru
@Override
public Optional<GovernanceEvent> build(final String databaseName, final DataChangedEvent event) {
- if (!ReadwriteSplittingNodeConverter.getRuleRootNodeConverter().isRulePath(event.getKey()) || Strings.isNullOrEmpty(event.getValue())) {
+ if (!ReadwriteSplittingNodeConverter.getRuleRootNodePath().isValidatedPath(event.getKey()) || Strings.isNullOrEmpty(event.getValue())) {
return Optional.empty();
}
- Optional<String> groupName = ReadwriteSplittingNodeConverter.getDataSourceNodeConvertor().getNameByActiveVersionPath(event.getKey());
+ Optional<String> groupName = ReadwriteSplittingNodeConverter.getDataSourceNodePath().getNameByActiveVersion(event.getKey());
if (groupName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
return createReadwriteSplittingConfigEvent(databaseName, groupName.get(), event);
}
- Optional<String> loadBalancerName = ReadwriteSplittingNodeConverter.getLoadBalancerNodeConverter().getNameByActiveVersionPath(event.getKey());
+ Optional<String> loadBalancerName = ReadwriteSplittingNodeConverter.getLoadBalancerNodePath().getNameByActiveVersion(event.getKey());
if (loadBalancerName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
return createLoadBalanceEvent(databaseName, loadBalancerName.get(), event);
}
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/metadata/converter/ReadwriteSplittingNodeConverter.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/metadata/converter/ReadwriteSplittingNodeConverter.java
index 7c800d4d585..091365de174 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/metadata/converter/ReadwriteSplittingNodeConverter.java
+++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/metadata/converter/ReadwriteSplittingNodeConverter.java
@@ -19,8 +19,8 @@ package org.apache.shardingsphere.readwritesplitting.metadata.converter;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
-import org.apache.shardingsphere.infra.metadata.converter.RuleItemNodeConverter;
-import org.apache.shardingsphere.infra.metadata.converter.RuleRootNodeConverter;
+import org.apache.shardingsphere.infra.metadata.nodepath.item.NamedRuleItemNodePath;
+import org.apache.shardingsphere.infra.metadata.nodepath.RuleRootNodePath;
/**
* Readwrite-splitting node converter.
@@ -28,36 +28,36 @@ import org.apache.shardingsphere.infra.metadata.converter.RuleRootNodeConverter;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class ReadwriteSplittingNodeConverter {
- private static final RuleRootNodeConverter ROOT_NODE_CONVERTER = new RuleRootNodeConverter("readwrite_splitting");
+ private static final RuleRootNodePath ROOT_NODE_PATH = new RuleRootNodePath("readwrite_splitting");
- private static final RuleItemNodeConverter DATA_SOURCE_NODE_CONVERTER = new RuleItemNodeConverter(ROOT_NODE_CONVERTER, "data_sources");
+ private static final NamedRuleItemNodePath DATA_SOURCE_NODE_PATH = new NamedRuleItemNodePath(ROOT_NODE_PATH, "data_sources");
- private static final RuleItemNodeConverter LOAD_BALANCER_NODE_CONVERTER = new RuleItemNodeConverter(ROOT_NODE_CONVERTER, "load_balancers");
+ private static final NamedRuleItemNodePath LOAD_BALANCER_NODE_PATH = new NamedRuleItemNodePath(ROOT_NODE_PATH, "load_balancers");
/**
- * Get rule root node converter.
+ * Get rule root node path.
*
- * @return rule root node converter
+ * @return rule root node path
*/
- public static RuleRootNodeConverter getRuleRootNodeConverter() {
- return ROOT_NODE_CONVERTER;
+ public static RuleRootNodePath getRuleRootNodePath() {
+ return ROOT_NODE_PATH;
}
/**
- * Get data source node converter.
+ * Get data source node path.
*
- * @return data source node converter
+ * @return data source node path
*/
- public static RuleItemNodeConverter getDataSourceNodeConvertor() {
- return DATA_SOURCE_NODE_CONVERTER;
+ public static NamedRuleItemNodePath getDataSourceNodePath() {
+ return DATA_SOURCE_NODE_PATH;
}
/**
- * Get load balancer node converter.
+ * Get load balancer node path.
*
- * @return load balancer node converter
+ * @return load balancer node path
*/
- public static RuleItemNodeConverter getLoadBalancerNodeConverter() {
- return LOAD_BALANCER_NODE_CONVERTER;
+ public static NamedRuleItemNodePath getLoadBalancerNodePath() {
+ return LOAD_BALANCER_NODE_PATH;
}
}
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/NewYamlReadwriteSplittingRuleConfigurationSwapper.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/NewYamlReadwriteSplittingRuleConfigurationSwapper.java
index f9fcb1d3bdd..bff25d06082 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/NewYamlReadwriteSplittingRuleConfigurationSwapper.java
+++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/NewYamlReadwriteSplittingRuleConfigurationSwapper.java
@@ -50,10 +50,10 @@ public final class NewYamlReadwriteSplittingRuleConfigurationSwapper implements
Collection<YamlDataNode> result = new LinkedHashSet<>();
for (Map.Entry<String, AlgorithmConfiguration> entry : data.getLoadBalancers().entrySet()) {
result.add(new YamlDataNode(
- ReadwriteSplittingNodeConverter.getLoadBalancerNodeConverter().getNamePath(entry.getKey()), YamlEngine.marshal(algorithmSwapper.swapToYamlConfiguration(entry.getValue()))));
+ ReadwriteSplittingNodeConverter.getLoadBalancerNodePath().getPath(entry.getKey()), YamlEngine.marshal(algorithmSwapper.swapToYamlConfiguration(entry.getValue()))));
}
for (ReadwriteSplittingDataSourceRuleConfiguration each : data.getDataSources()) {
- result.add(new YamlDataNode(ReadwriteSplittingNodeConverter.getDataSourceNodeConvertor().getNamePath(each.getName()), YamlEngine.marshal(swapToYamlConfiguration(each))));
+ result.add(new YamlDataNode(ReadwriteSplittingNodeConverter.getDataSourceNodePath().getPath(each.getName()), YamlEngine.marshal(swapToYamlConfiguration(each))));
}
return result;
}
@@ -72,11 +72,11 @@ public final class NewYamlReadwriteSplittingRuleConfigurationSwapper implements
Collection<ReadwriteSplittingDataSourceRuleConfiguration> dataSources = new LinkedList<>();
Map<String, AlgorithmConfiguration> loadBalancerMap = new LinkedHashMap<>();
for (YamlDataNode each : dataNodes) {
- if (ReadwriteSplittingNodeConverter.getDataSourceNodeConvertor().isPath(each.getKey())) {
- ReadwriteSplittingNodeConverter.getDataSourceNodeConvertor().getName(each.getKey())
+ if (ReadwriteSplittingNodeConverter.getDataSourceNodePath().isValidatedPath(each.getKey())) {
+ ReadwriteSplittingNodeConverter.getDataSourceNodePath().getName(each.getKey())
.ifPresent(groupName -> dataSources.add(swapDataSource(groupName, YamlEngine.unmarshal(each.getValue(), YamlReadwriteSplittingDataSourceRuleConfiguration.class))));
- } else if (ReadwriteSplittingNodeConverter.getLoadBalancerNodeConverter().isPath(each.getKey())) {
- ReadwriteSplittingNodeConverter.getLoadBalancerNodeConverter().getName(each.getKey())
+ } else if (ReadwriteSplittingNodeConverter.getLoadBalancerNodePath().isValidatedPath(each.getKey())) {
+ ReadwriteSplittingNodeConverter.getLoadBalancerNodePath().getName(each.getKey())
.ifPresent(loadBalancerName -> loadBalancerMap.put(loadBalancerName, algorithmSwapper.swapToObject(YamlEngine.unmarshal(each.getValue(), YamlAlgorithmConfiguration.class))));
}
}
diff --git a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/ShadowRuleConfigurationEventBuilder.java b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/ShadowRuleConfigurationEventBuilder.java
index 87abf9f15f1..403ed3ec8c6 100644
--- a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/ShadowRuleConfigurationEventBuilder.java
+++ b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/ShadowRuleConfigurationEventBuilder.java
@@ -43,22 +43,22 @@ public final class ShadowRuleConfigurationEventBuilder implements RuleConfigurat
@Override
public Optional<GovernanceEvent> build(final String databaseName, final DataChangedEvent event) {
- if (!ShadowNodeConverter.getRuleRootNodeConverter().isRulePath(event.getKey()) || Strings.isNullOrEmpty(event.getValue())) {
+ if (!ShadowNodeConverter.getRuleRootNodePath().isValidatedPath(event.getKey()) || Strings.isNullOrEmpty(event.getValue())) {
return Optional.empty();
}
- Optional<String> dataSourceName = ShadowNodeConverter.getDataSourceNodeConvertor().getNameByActiveVersionPath(event.getKey());
+ Optional<String> dataSourceName = ShadowNodeConverter.getDataSourceNodePath().getNameByActiveVersion(event.getKey());
if (dataSourceName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
return createShadowConfigEvent(databaseName, dataSourceName.get(), event);
}
- Optional<String> tableName = ShadowNodeConverter.getTableNodeConverter().getNameByActiveVersionPath(event.getKey());
+ Optional<String> tableName = ShadowNodeConverter.getTableNodePath().getNameByActiveVersion(event.getKey());
if (tableName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
return createShadowTableConfigEvent(databaseName, tableName.get(), event);
}
- Optional<String> algorithmName = ShadowNodeConverter.getAlgorithmNodeConverter().getNameByActiveVersionPath(event.getKey());
+ Optional<String> algorithmName = ShadowNodeConverter.getAlgorithmNodePath().getNameByActiveVersion(event.getKey());
if (algorithmName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
return createShadowAlgorithmEvent(databaseName, algorithmName.get(), event);
}
- if (ShadowNodeConverter.getDefaultAlgorithmNameNodeConverter().isActiveVersionPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
+ if (ShadowNodeConverter.getDefaultAlgorithmNameNodePath().isActiveVersionPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
return createDefaultShadowAlgorithmNameEvent(databaseName, event);
}
return Optional.empty();
diff --git a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/metadata/converter/ShadowNodeConverter.java b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/metadata/converter/ShadowNodeConverter.java
index b2104f2a57a..7d26168b248 100644
--- a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/metadata/converter/ShadowNodeConverter.java
+++ b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/metadata/converter/ShadowNodeConverter.java
@@ -19,9 +19,9 @@ package org.apache.shardingsphere.shadow.metadata.converter;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
-import org.apache.shardingsphere.infra.metadata.converter.RuleDefaultItemNodeConverter;
-import org.apache.shardingsphere.infra.metadata.converter.RuleItemNodeConverter;
-import org.apache.shardingsphere.infra.metadata.converter.RuleRootNodeConverter;
+import org.apache.shardingsphere.infra.metadata.nodepath.item.UniqueRuleItemNodePath;
+import org.apache.shardingsphere.infra.metadata.nodepath.item.NamedRuleItemNodePath;
+import org.apache.shardingsphere.infra.metadata.nodepath.RuleRootNodePath;
/**
* Shadow node converter.
@@ -29,58 +29,58 @@ import org.apache.shardingsphere.infra.metadata.converter.RuleRootNodeConverter;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class ShadowNodeConverter {
- private static final RuleRootNodeConverter ROOT_NODE_CONVERTER = new RuleRootNodeConverter("shadow");
+ private static final RuleRootNodePath ROOT_NODE_PATH = new RuleRootNodePath("shadow");
- private static final RuleItemNodeConverter DATA_SOURCE_NODE_CONVERTER = new RuleItemNodeConverter(ROOT_NODE_CONVERTER, "data_sources");
+ private static final NamedRuleItemNodePath DATA_SOURCE_NODE_PATH = new NamedRuleItemNodePath(ROOT_NODE_PATH, "data_sources");
- private static final RuleItemNodeConverter TABLE_NODE_CONVERTER = new RuleItemNodeConverter(ROOT_NODE_CONVERTER, "tables");
+ private static final NamedRuleItemNodePath TABLE_NODE_PATH = new NamedRuleItemNodePath(ROOT_NODE_PATH, "tables");
- private static final RuleItemNodeConverter ALGORITHM_NODE_CONVERTER = new RuleItemNodeConverter(ROOT_NODE_CONVERTER, "algorithms");
+ private static final NamedRuleItemNodePath ALGORITHM_NODE_PATH = new NamedRuleItemNodePath(ROOT_NODE_PATH, "algorithms");
- private static final RuleDefaultItemNodeConverter DEFAULT_ALGORITHM_NAME_NODE_CONVERTER = new RuleDefaultItemNodeConverter(ROOT_NODE_CONVERTER, "default_algorithm_name");
+ private static final UniqueRuleItemNodePath DEFAULT_ALGORITHM_NAME_NODE_PATH = new UniqueRuleItemNodePath(ROOT_NODE_PATH, "default_algorithm_name");
/**
- * Get rule root node converter.
+ * Get rule root node path.
*
- * @return rule root node converter
+ * @return rule root node path
*/
- public static RuleRootNodeConverter getRuleRootNodeConverter() {
- return ROOT_NODE_CONVERTER;
+ public static RuleRootNodePath getRuleRootNodePath() {
+ return ROOT_NODE_PATH;
}
/**
- * Get data source node converter.
+ * Get data source node path.
*
- * @return data source node converter
+ * @return data source node path
*/
- public static RuleItemNodeConverter getDataSourceNodeConvertor() {
- return DATA_SOURCE_NODE_CONVERTER;
+ public static NamedRuleItemNodePath getDataSourceNodePath() {
+ return DATA_SOURCE_NODE_PATH;
}
/**
- * Get table node converter.
+ * Get table node path.
*
- * @return table node converter
+ * @return table node path
*/
- public static RuleItemNodeConverter getTableNodeConverter() {
- return TABLE_NODE_CONVERTER;
+ public static NamedRuleItemNodePath getTableNodePath() {
+ return TABLE_NODE_PATH;
}
/**
- * Get algorithm node converter.
+ * Get algorithm node path.
*
- * @return algorithm node converter
+ * @return algorithm node path
*/
- public static RuleItemNodeConverter getAlgorithmNodeConverter() {
- return ALGORITHM_NODE_CONVERTER;
+ public static NamedRuleItemNodePath getAlgorithmNodePath() {
+ return ALGORITHM_NODE_PATH;
}
/**
- * Get default algorithm name node converter.
+ * Get default algorithm name node path.
*
- * @return default algorithm name node converter
+ * @return default algorithm name node path
*/
- public static RuleDefaultItemNodeConverter getDefaultAlgorithmNameNodeConverter() {
- return DEFAULT_ALGORITHM_NAME_NODE_CONVERTER;
+ public static UniqueRuleItemNodePath getDefaultAlgorithmNameNodePath() {
+ return DEFAULT_ALGORITHM_NAME_NODE_PATH;
}
}
diff --git a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/yaml/swapper/NewYamlShadowRuleConfigurationSwapper.java b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/yaml/swapper/NewYamlShadowRuleConfigurationSwapper.java
index 92bb9537459..492bd72d122 100644
--- a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/yaml/swapper/NewYamlShadowRuleConfigurationSwapper.java
+++ b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/yaml/swapper/NewYamlShadowRuleConfigurationSwapper.java
@@ -51,16 +51,16 @@ public final class NewYamlShadowRuleConfigurationSwapper implements NewYamlRuleC
public Collection<YamlDataNode> swapToDataNodes(final ShadowRuleConfiguration data) {
Collection<YamlDataNode> result = new LinkedHashSet<>();
for (Entry<String, AlgorithmConfiguration> entry : data.getShadowAlgorithms().entrySet()) {
- result.add(new YamlDataNode(ShadowNodeConverter.getAlgorithmNodeConverter().getNamePath(entry.getKey()), YamlEngine.marshal(algorithmSwapper.swapToYamlConfiguration(entry.getValue()))));
+ result.add(new YamlDataNode(ShadowNodeConverter.getAlgorithmNodePath().getPath(entry.getKey()), YamlEngine.marshal(algorithmSwapper.swapToYamlConfiguration(entry.getValue()))));
}
if (!Strings.isNullOrEmpty(data.getDefaultShadowAlgorithmName())) {
- result.add(new YamlDataNode(ShadowNodeConverter.getDefaultAlgorithmNameNodeConverter().getPath(), data.getDefaultShadowAlgorithmName()));
+ result.add(new YamlDataNode(ShadowNodeConverter.getDefaultAlgorithmNameNodePath().getPath(), data.getDefaultShadowAlgorithmName()));
}
for (ShadowDataSourceConfiguration each : data.getDataSources()) {
- result.add(new YamlDataNode(ShadowNodeConverter.getDataSourceNodeConvertor().getNamePath(each.getName()), YamlEngine.marshal(swapToDataSourceYamlConfiguration(each))));
+ result.add(new YamlDataNode(ShadowNodeConverter.getDataSourceNodePath().getPath(each.getName()), YamlEngine.marshal(swapToDataSourceYamlConfiguration(each))));
}
for (Entry<String, ShadowTableConfiguration> entry : data.getTables().entrySet()) {
- result.add(new YamlDataNode(ShadowNodeConverter.getTableNodeConverter().getNamePath(entry.getKey()), YamlEngine.marshal(tableSwapper.swapToYamlConfiguration(entry.getValue()))));
+ result.add(new YamlDataNode(ShadowNodeConverter.getTableNodePath().getPath(entry.getKey()), YamlEngine.marshal(tableSwapper.swapToYamlConfiguration(entry.getValue()))));
}
return result;
}
@@ -76,17 +76,17 @@ public final class NewYamlShadowRuleConfigurationSwapper implements NewYamlRuleC
public ShadowRuleConfiguration swapToObject(final Collection<YamlDataNode> dataNodes) {
ShadowRuleConfiguration result = new ShadowRuleConfiguration();
for (YamlDataNode each : dataNodes) {
- if (ShadowNodeConverter.getDataSourceNodeConvertor().isPath(each.getKey())) {
- ShadowNodeConverter.getDataSourceNodeConvertor().getName(each.getKey())
+ if (ShadowNodeConverter.getDataSourceNodePath().isValidatedPath(each.getKey())) {
+ ShadowNodeConverter.getDataSourceNodePath().getName(each.getKey())
.ifPresent(dataSourceName -> result.getDataSources().add(swapDataSource(dataSourceName, YamlEngine.unmarshal(each.getValue(), YamlShadowDataSourceConfiguration.class))));
- } else if (ShadowNodeConverter.getTableNodeConverter().isPath(each.getKey())) {
- ShadowNodeConverter.getTableNodeConverter().getName(each.getKey())
+ } else if (ShadowNodeConverter.getTableNodePath().isValidatedPath(each.getKey())) {
+ ShadowNodeConverter.getTableNodePath().getName(each.getKey())
.ifPresent(tableName -> result.getTables().put(tableName, tableSwapper.swapToObject(YamlEngine.unmarshal(each.getValue(), YamlShadowTableConfiguration.class))));
- } else if (ShadowNodeConverter.getAlgorithmNodeConverter().isPath(each.getKey())) {
- ShadowNodeConverter.getAlgorithmNodeConverter().getName(each.getKey())
+ } else if (ShadowNodeConverter.getAlgorithmNodePath().isValidatedPath(each.getKey())) {
+ ShadowNodeConverter.getAlgorithmNodePath().getName(each.getKey())
.ifPresent(algorithmName -> result.getShadowAlgorithms().put(algorithmName,
algorithmSwapper.swapToObject(YamlEngine.unmarshal(each.getValue(), YamlAlgorithmConfiguration.class))));
- } else if (ShadowNodeConverter.getDefaultAlgorithmNameNodeConverter().isPath(each.getKey())) {
+ } else if (ShadowNodeConverter.getDefaultAlgorithmNameNodePath().isValidatedPath(each.getKey())) {
result.setDefaultShadowAlgorithmName(each.getValue());
}
}
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/ShardingRuleConfigurationEventBuilder.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/ShardingRuleConfigurationEventBuilder.java
index 16c74cf2d88..c40bfa6680d 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/ShardingRuleConfigurationEventBuilder.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/ShardingRuleConfigurationEventBuilder.java
@@ -63,49 +63,49 @@ public final class ShardingRuleConfigurationEventBuilder implements RuleConfigur
@Override
public Optional<GovernanceEvent> build(final String databaseName, final DataChangedEvent event) {
- if (!ShardingNodeConverter.getRuleRootNodeConverter().isRulePath(event.getKey()) || Strings.isNullOrEmpty(event.getValue())) {
+ if (!ShardingNodeConverter.getRuleRootNodePath().isValidatedPath(event.getKey()) || Strings.isNullOrEmpty(event.getValue())) {
return Optional.empty();
}
- Optional<String> tableName = ShardingNodeConverter.getTableNodeConverter().getNameByActiveVersionPath(event.getKey());
+ Optional<String> tableName = ShardingNodeConverter.getTableNodePath().getNameByActiveVersion(event.getKey());
if (tableName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
return createShardingTableConfigEvent(databaseName, tableName.get(), event);
}
- Optional<String> autoTableName = ShardingNodeConverter.getAutoTableNodeConverter().getNameByActiveVersionPath(event.getKey());
+ Optional<String> autoTableName = ShardingNodeConverter.getAutoTableNodePath().getNameByActiveVersion(event.getKey());
if (autoTableName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
return createShardingAutoTableConfigEvent(databaseName, autoTableName.get(), event);
}
- Optional<String> bindingTableName = ShardingNodeConverter.getBindingTableNodeConverter().getNameByActiveVersionPath(event.getKey());
+ Optional<String> bindingTableName = ShardingNodeConverter.getBindingTableNodePath().getNameByActiveVersion(event.getKey());
if (bindingTableName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
return createShardingTableReferenceConfigEvent(databaseName, bindingTableName.get(), event);
}
- if (ShardingNodeConverter.getDefaultDatabaseStrategyNodeConverter().isActiveVersionPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
+ if (ShardingNodeConverter.getDefaultDatabaseStrategyNodePath().isActiveVersionPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
return createDefaultDatabaseStrategyConfigEvent(databaseName, event);
}
- if (ShardingNodeConverter.getDefaultTableStrategyNodeConverter().isActiveVersionPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
+ if (ShardingNodeConverter.getDefaultTableStrategyNodePath().isActiveVersionPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
return createDefaultTableStrategyConfigEvent(databaseName, event);
}
- if (ShardingNodeConverter.getDefaultKeyGenerateStrategyNodeConverter().isActiveVersionPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
+ if (ShardingNodeConverter.getDefaultKeyGenerateStrategyNodePath().isActiveVersionPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
return createDefaultKeyGenerateStrategyConfigEvent(databaseName, event);
}
- if (ShardingNodeConverter.getDefaultAuditStrategyNodeConverter().isActiveVersionPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
+ if (ShardingNodeConverter.getDefaultAuditStrategyNodePath().isActiveVersionPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
return createDefaultShardingAuditorStrategyConfigEvent(databaseName, event);
}
- if (ShardingNodeConverter.getDefaultShardingColumnNodeConverter().isActiveVersionPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
+ if (ShardingNodeConverter.getDefaultShardingColumnNodePath().isActiveVersionPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
return createDefaultShardingColumnEvent(databaseName, event);
}
- Optional<String> algorithmName = ShardingNodeConverter.getAlgorithmNodeConverter().getNameByActiveVersionPath(event.getKey());
+ Optional<String> algorithmName = ShardingNodeConverter.getAlgorithmNodePath().getNameByActiveVersion(event.getKey());
if (algorithmName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
return createShardingAlgorithmEvent(databaseName, algorithmName.get(), event);
}
- Optional<String> keyGeneratorName = ShardingNodeConverter.getKeyGeneratorNodeConverter().getNameByActiveVersionPath(event.getKey());
+ Optional<String> keyGeneratorName = ShardingNodeConverter.getKeyGeneratorNodePath().getNameByActiveVersion(event.getKey());
if (keyGeneratorName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
return createKeyGeneratorEvent(databaseName, keyGeneratorName.get(), event);
}
- Optional<String> auditorName = ShardingNodeConverter.getAuditorNodeConverter().getNameByActiveVersionPath(event.getKey());
+ Optional<String> auditorName = ShardingNodeConverter.getAuditorNodePath().getNameByActiveVersion(event.getKey());
if (auditorName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
return createAuditorEvent(databaseName, auditorName.get(), event);
}
- if (ShardingNodeConverter.getShardingCacheNodeConverter().isActiveVersionPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
+ if (ShardingNodeConverter.getShardingCacheNodePath().isActiveVersionPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
return createShardingCacheEvent(databaseName, event);
}
return Optional.empty();
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/converter/ShardingNodeConverter.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/converter/ShardingNodeConverter.java
index 4fff77b8c61..f47ac2a5a32 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/converter/ShardingNodeConverter.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/converter/ShardingNodeConverter.java
@@ -19,9 +19,9 @@ package org.apache.shardingsphere.sharding.metadata.converter;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
-import org.apache.shardingsphere.infra.metadata.converter.RuleDefaultItemNodeConverter;
-import org.apache.shardingsphere.infra.metadata.converter.RuleItemNodeConverter;
-import org.apache.shardingsphere.infra.metadata.converter.RuleRootNodeConverter;
+import org.apache.shardingsphere.infra.metadata.nodepath.item.UniqueRuleItemNodePath;
+import org.apache.shardingsphere.infra.metadata.nodepath.item.NamedRuleItemNodePath;
+import org.apache.shardingsphere.infra.metadata.nodepath.RuleRootNodePath;
/**
* Sharding node converter.
@@ -31,149 +31,149 @@ public final class ShardingNodeConverter {
private static final String DEFAULT_STRATEGIES_NODE = "default_strategies";
- private static final RuleRootNodeConverter ROOT_NODE_CONVERTER = new RuleRootNodeConverter("sharding");
+ private static final RuleRootNodePath ROOT_NODE_PATH = new RuleRootNodePath("sharding");
- private static final RuleItemNodeConverter TABLE_NODE_CONVERTER = new RuleItemNodeConverter(ROOT_NODE_CONVERTER, "tables");
+ private static final NamedRuleItemNodePath TABLE_NODE_PATH = new NamedRuleItemNodePath(ROOT_NODE_PATH, "tables");
- private static final RuleItemNodeConverter AUTO_TABLE_NODE_CONVERTER = new RuleItemNodeConverter(ROOT_NODE_CONVERTER, "auto_tables");
+ private static final NamedRuleItemNodePath AUTO_TABLE_NODE_PATH = new NamedRuleItemNodePath(ROOT_NODE_PATH, "auto_tables");
- private static final RuleItemNodeConverter BINDING_TABLE_NODE_CONVERTER = new RuleItemNodeConverter(ROOT_NODE_CONVERTER, "binding_tables");
+ private static final NamedRuleItemNodePath BINDING_TABLE_NODE_PATH = new NamedRuleItemNodePath(ROOT_NODE_PATH, "binding_tables");
- private static final RuleItemNodeConverter ALGORITHM_NODE_CONVERTER = new RuleItemNodeConverter(ROOT_NODE_CONVERTER, "algorithms");
+ private static final NamedRuleItemNodePath ALGORITHM_NODE_PATH = new NamedRuleItemNodePath(ROOT_NODE_PATH, "algorithms");
- private static final RuleItemNodeConverter KEY_GENERATOR_NODE_CONVERTER = new RuleItemNodeConverter(ROOT_NODE_CONVERTER, "key_generators");
+ private static final NamedRuleItemNodePath KEY_GENERATOR_NODE_PATH = new NamedRuleItemNodePath(ROOT_NODE_PATH, "key_generators");
- private static final RuleItemNodeConverter AUDITOR_NODE_CONVERTER = new RuleItemNodeConverter(ROOT_NODE_CONVERTER, "auditors");
+ private static final NamedRuleItemNodePath AUDITOR_NODE_PATH = new NamedRuleItemNodePath(ROOT_NODE_PATH, "auditors");
- private static final RuleDefaultItemNodeConverter DEFAULT_DATABASE_STRATEGY_NODE_CONVERTER =
- new RuleDefaultItemNodeConverter(ROOT_NODE_CONVERTER, DEFAULT_STRATEGIES_NODE, "default_database_strategy");
+ private static final UniqueRuleItemNodePath DEFAULT_DATABASE_STRATEGY_NODE_PATH =
+ new UniqueRuleItemNodePath(ROOT_NODE_PATH, DEFAULT_STRATEGIES_NODE, "default_database_strategy");
- private static final RuleDefaultItemNodeConverter DEFAULT_TABLE_STRATEGY_NODE_CONVERTER = new RuleDefaultItemNodeConverter(ROOT_NODE_CONVERTER, DEFAULT_STRATEGIES_NODE, "default_table_strategy");
+ private static final UniqueRuleItemNodePath DEFAULT_TABLE_STRATEGY_NODE_PATH = new UniqueRuleItemNodePath(ROOT_NODE_PATH, DEFAULT_STRATEGIES_NODE, "default_table_strategy");
- private static final RuleDefaultItemNodeConverter DEFAULT_KEY_GENERATE_STRATEGY_NODE_CONVERTER =
- new RuleDefaultItemNodeConverter(ROOT_NODE_CONVERTER, DEFAULT_STRATEGIES_NODE, "default_key_generate_strategy");
+ private static final UniqueRuleItemNodePath DEFAULT_KEY_GENERATE_STRATEGY_NODE_PATH =
+ new UniqueRuleItemNodePath(ROOT_NODE_PATH, DEFAULT_STRATEGIES_NODE, "default_key_generate_strategy");
- private static final RuleDefaultItemNodeConverter DEFAULT_AUDIT_STRATEGY_NODE_CONVERTER = new RuleDefaultItemNodeConverter(ROOT_NODE_CONVERTER, DEFAULT_STRATEGIES_NODE, "default_audit_strategy");
+ private static final UniqueRuleItemNodePath DEFAULT_AUDIT_STRATEGY_NODE_PATH = new UniqueRuleItemNodePath(ROOT_NODE_PATH, DEFAULT_STRATEGIES_NODE, "default_audit_strategy");
- private static final RuleDefaultItemNodeConverter DEFAULT_SHARDING_COLUMN_NODE_CONVERTER =
- new RuleDefaultItemNodeConverter(ROOT_NODE_CONVERTER, DEFAULT_STRATEGIES_NODE, "default_sharding_column");
+ private static final UniqueRuleItemNodePath DEFAULT_SHARDING_COLUMN_NODE_PATH =
+ new UniqueRuleItemNodePath(ROOT_NODE_PATH, DEFAULT_STRATEGIES_NODE, "default_sharding_column");
- private static final RuleDefaultItemNodeConverter SHARDING_CACHE_NODE_CONVERTER = new RuleDefaultItemNodeConverter(ROOT_NODE_CONVERTER, "sharding_cache");
+ private static final UniqueRuleItemNodePath SHARDING_CACHE_NODE_PATH = new UniqueRuleItemNodePath(ROOT_NODE_PATH, "sharding_cache");
/**
- * Get rule root node converter.
+ * Get rule root node path.
*
- * @return rule root node converter
+ * @return rule root node path
*/
- public static RuleRootNodeConverter getRuleRootNodeConverter() {
- return ROOT_NODE_CONVERTER;
+ public static RuleRootNodePath getRuleRootNodePath() {
+ return ROOT_NODE_PATH;
}
/**
- * Get table node converter.
+ * Get table node path.
*
- * @return table node converter
+ * @return table node path
*/
- public static RuleItemNodeConverter getTableNodeConverter() {
- return TABLE_NODE_CONVERTER;
+ public static NamedRuleItemNodePath getTableNodePath() {
+ return TABLE_NODE_PATH;
}
/**
- * Get auto table node converter.
+ * Get auto table node path.
*
- * @return auto table node converter
+ * @return auto table node path
*/
- public static RuleItemNodeConverter getAutoTableNodeConverter() {
- return AUTO_TABLE_NODE_CONVERTER;
+ public static NamedRuleItemNodePath getAutoTableNodePath() {
+ return AUTO_TABLE_NODE_PATH;
}
/**
- * Get binding table node converter.
+ * Get binding table node path.
*
- * @return binding table node converter
+ * @return binding table node path
*/
- public static RuleItemNodeConverter getBindingTableNodeConverter() {
- return BINDING_TABLE_NODE_CONVERTER;
+ public static NamedRuleItemNodePath getBindingTableNodePath() {
+ return BINDING_TABLE_NODE_PATH;
}
/**
- * Get algorithm node converter.
+ * Get algorithm node path.
*
- * @return algorithm node converter
+ * @return algorithm node path
*/
- public static RuleItemNodeConverter getAlgorithmNodeConverter() {
- return ALGORITHM_NODE_CONVERTER;
+ public static NamedRuleItemNodePath getAlgorithmNodePath() {
+ return ALGORITHM_NODE_PATH;
}
/**
- * Get key generator node converter.
+ * Get key generator node path.
*
- * @return key generator node converter
+ * @return key generator node path
*/
- public static RuleItemNodeConverter getKeyGeneratorNodeConverter() {
- return KEY_GENERATOR_NODE_CONVERTER;
+ public static NamedRuleItemNodePath getKeyGeneratorNodePath() {
+ return KEY_GENERATOR_NODE_PATH;
}
/**
- * Get auditor node converter.
+ * Get auditor node path.
*
- * @return auditor node converter
+ * @return auditor node path
*/
- public static RuleItemNodeConverter getAuditorNodeConverter() {
- return AUDITOR_NODE_CONVERTER;
+ public static NamedRuleItemNodePath getAuditorNodePath() {
+ return AUDITOR_NODE_PATH;
}
/**
- * Get default database strategy node converter.
+ * Get default database strategy node path.
*
- * @return default database strategy node converter
+ * @return default database strategy node path
*/
- public static RuleDefaultItemNodeConverter getDefaultDatabaseStrategyNodeConverter() {
- return DEFAULT_DATABASE_STRATEGY_NODE_CONVERTER;
+ public static UniqueRuleItemNodePath getDefaultDatabaseStrategyNodePath() {
+ return DEFAULT_DATABASE_STRATEGY_NODE_PATH;
}
/**
- * Get default table strategy node converter.
+ * Get default table strategy node path.
*
- * @return default table strategy node converter
+ * @return default table strategy node path
*/
- public static RuleDefaultItemNodeConverter getDefaultTableStrategyNodeConverter() {
- return DEFAULT_TABLE_STRATEGY_NODE_CONVERTER;
+ public static UniqueRuleItemNodePath getDefaultTableStrategyNodePath() {
+ return DEFAULT_TABLE_STRATEGY_NODE_PATH;
}
/**
- * Get default key generate strategy node converter.
+ * Get default key generate strategy node path.
*
- * @return default key generate strategy node converter
+ * @return default key generate strategy node path
*/
- public static RuleDefaultItemNodeConverter getDefaultKeyGenerateStrategyNodeConverter() {
- return DEFAULT_KEY_GENERATE_STRATEGY_NODE_CONVERTER;
+ public static UniqueRuleItemNodePath getDefaultKeyGenerateStrategyNodePath() {
+ return DEFAULT_KEY_GENERATE_STRATEGY_NODE_PATH;
}
/**
- * Get default audit strategy node converter.
+ * Get default audit strategy node path.
*
- * @return default table strategy node converter
+ * @return default table strategy node path
*/
- public static RuleDefaultItemNodeConverter getDefaultAuditStrategyNodeConverter() {
- return DEFAULT_AUDIT_STRATEGY_NODE_CONVERTER;
+ public static UniqueRuleItemNodePath getDefaultAuditStrategyNodePath() {
+ return DEFAULT_AUDIT_STRATEGY_NODE_PATH;
}
/**
- * Get default sharding column node converter.
+ * Get default sharding column node path.
*
- * @return default sharding column node converter
+ * @return default sharding column node path
*/
- public static RuleDefaultItemNodeConverter getDefaultShardingColumnNodeConverter() {
- return DEFAULT_SHARDING_COLUMN_NODE_CONVERTER;
+ public static UniqueRuleItemNodePath getDefaultShardingColumnNodePath() {
+ return DEFAULT_SHARDING_COLUMN_NODE_PATH;
}
/**
- * Get sharding cache node converter.
+ * Get sharding cache node path.
*
- * @return sharding cache node converter
+ * @return sharding cache node path
*/
- public static RuleDefaultItemNodeConverter getShardingCacheNodeConverter() {
- return SHARDING_CACHE_NODE_CONVERTER;
+ public static UniqueRuleItemNodePath getShardingCacheNodePath() {
+ return SHARDING_CACHE_NODE_PATH;
}
}
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/yaml/swapper/NewYamlShardingRuleConfigurationSwapper.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/yaml/swapper/NewYamlShardingRuleConfigurationSwapper.java
index 9e5e36f4e67..e99114d714e 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/yaml/swapper/NewYamlShardingRuleConfigurationSwapper.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/yaml/swapper/NewYamlShardingRuleConfigurationSwapper.java
@@ -74,10 +74,10 @@ public final class NewYamlShardingRuleConfigurationSwapper implements NewYamlRul
swapStrategies(data, result);
swapTableRules(data, result);
if (null != data.getDefaultShardingColumn()) {
- result.add(new YamlDataNode(ShardingNodeConverter.getDefaultShardingColumnNodeConverter().getPath(), data.getDefaultShardingColumn()));
+ result.add(new YamlDataNode(ShardingNodeConverter.getDefaultShardingColumnNodePath().getPath(), data.getDefaultShardingColumn()));
}
if (null != data.getShardingCache()) {
- result.add(new YamlDataNode(ShardingNodeConverter.getShardingCacheNodeConverter().getPath(),
+ result.add(new YamlDataNode(ShardingNodeConverter.getShardingCacheNodePath().getPath(),
YamlEngine.marshal(shardingCacheYamlSwapper.swapToYamlConfiguration(data.getShardingCache()))));
}
return result;
@@ -85,46 +85,46 @@ public final class NewYamlShardingRuleConfigurationSwapper implements NewYamlRul
private void swapAlgorithms(final ShardingRuleConfiguration data, final Collection<YamlDataNode> result) {
for (Entry<String, AlgorithmConfiguration> each : data.getShardingAlgorithms().entrySet()) {
- result.add(new YamlDataNode(ShardingNodeConverter.getAlgorithmNodeConverter().getNamePath(each.getKey()), YamlEngine.marshal(algorithmSwapper.swapToYamlConfiguration(each.getValue()))));
+ result.add(new YamlDataNode(ShardingNodeConverter.getAlgorithmNodePath().getPath(each.getKey()), YamlEngine.marshal(algorithmSwapper.swapToYamlConfiguration(each.getValue()))));
}
for (Entry<String, AlgorithmConfiguration> each : data.getKeyGenerators().entrySet()) {
result.add(new YamlDataNode(
- ShardingNodeConverter.getKeyGeneratorNodeConverter().getNamePath(each.getKey()), YamlEngine.marshal(algorithmSwapper.swapToYamlConfiguration(each.getValue()))));
+ ShardingNodeConverter.getKeyGeneratorNodePath().getPath(each.getKey()), YamlEngine.marshal(algorithmSwapper.swapToYamlConfiguration(each.getValue()))));
}
for (Entry<String, AlgorithmConfiguration> each : data.getAuditors().entrySet()) {
- result.add(new YamlDataNode(ShardingNodeConverter.getAuditorNodeConverter().getNamePath(each.getKey()), YamlEngine.marshal(algorithmSwapper.swapToYamlConfiguration(each.getValue()))));
+ result.add(new YamlDataNode(ShardingNodeConverter.getAuditorNodePath().getPath(each.getKey()), YamlEngine.marshal(algorithmSwapper.swapToYamlConfiguration(each.getValue()))));
}
}
private void swapStrategies(final ShardingRuleConfiguration data, final Collection<YamlDataNode> result) {
if (null != data.getDefaultDatabaseShardingStrategy()) {
- result.add(new YamlDataNode(ShardingNodeConverter.getDefaultDatabaseStrategyNodeConverter().getPath(),
+ result.add(new YamlDataNode(ShardingNodeConverter.getDefaultDatabaseStrategyNodePath().getPath(),
YamlEngine.marshal(shardingStrategySwapper.swapToYamlConfiguration(data.getDefaultDatabaseShardingStrategy()))));
}
if (null != data.getDefaultTableShardingStrategy()) {
- result.add(new YamlDataNode(ShardingNodeConverter.getDefaultTableStrategyNodeConverter().getPath(),
+ result.add(new YamlDataNode(ShardingNodeConverter.getDefaultTableStrategyNodePath().getPath(),
YamlEngine.marshal(shardingStrategySwapper.swapToYamlConfiguration(data.getDefaultTableShardingStrategy()))));
}
if (null != data.getDefaultKeyGenerateStrategy()) {
- result.add(new YamlDataNode(ShardingNodeConverter.getDefaultKeyGenerateStrategyNodeConverter().getPath(),
+ result.add(new YamlDataNode(ShardingNodeConverter.getDefaultKeyGenerateStrategyNodePath().getPath(),
YamlEngine.marshal(keyGenerateStrategySwapper.swapToYamlConfiguration(data.getDefaultKeyGenerateStrategy()))));
}
if (null != data.getDefaultAuditStrategy()) {
- result.add(new YamlDataNode(ShardingNodeConverter.getDefaultAuditStrategyNodeConverter().getPath(),
+ result.add(new YamlDataNode(ShardingNodeConverter.getDefaultAuditStrategyNodePath().getPath(),
YamlEngine.marshal(auditStrategySwapper.swapToYamlConfiguration(data.getDefaultAuditStrategy()))));
}
}
private void swapTableRules(final ShardingRuleConfiguration data, final Collection<YamlDataNode> result) {
for (ShardingTableRuleConfiguration each : data.getTables()) {
- result.add(new YamlDataNode(ShardingNodeConverter.getTableNodeConverter().getNamePath(each.getLogicTable()), YamlEngine.marshal(tableSwapper.swapToYamlConfiguration(each))));
+ result.add(new YamlDataNode(ShardingNodeConverter.getTableNodePath().getPath(each.getLogicTable()), YamlEngine.marshal(tableSwapper.swapToYamlConfiguration(each))));
}
for (ShardingAutoTableRuleConfiguration each : data.getAutoTables()) {
- result.add(new YamlDataNode(ShardingNodeConverter.getAutoTableNodeConverter().getNamePath(each.getLogicTable()), YamlEngine.marshal(autoTableYamlSwapper.swapToYamlConfiguration(each))));
+ result.add(new YamlDataNode(ShardingNodeConverter.getAutoTableNodePath().getPath(each.getLogicTable()), YamlEngine.marshal(autoTableYamlSwapper.swapToYamlConfiguration(each))));
}
for (ShardingTableReferenceRuleConfiguration each : data.getBindingTableGroups()) {
result.add(new YamlDataNode(
- ShardingNodeConverter.getBindingTableNodeConverter().getNamePath(each.getName()), YamlShardingTableReferenceRuleConfigurationConverter.convertToYamlString(each)));
+ ShardingNodeConverter.getBindingTableNodePath().getPath(each.getName()), YamlShardingTableReferenceRuleConfigurationConverter.convertToYamlString(each)));
}
}
@@ -132,37 +132,37 @@ public final class NewYamlShardingRuleConfigurationSwapper implements NewYamlRul
public ShardingRuleConfiguration swapToObject(final Collection<YamlDataNode> dataNodes) {
ShardingRuleConfiguration result = new ShardingRuleConfiguration();
for (YamlDataNode each : dataNodes) {
- if (ShardingNodeConverter.getTableNodeConverter().isPath(each.getKey())) {
- ShardingNodeConverter.getTableNodeConverter().getName(each.getKey())
+ if (ShardingNodeConverter.getTableNodePath().isValidatedPath(each.getKey())) {
+ ShardingNodeConverter.getTableNodePath().getName(each.getKey())
.ifPresent(tableName -> result.getTables().add(tableSwapper.swapToObject(YamlEngine.unmarshal(each.getValue(), YamlTableRuleConfiguration.class))));
- } else if (ShardingNodeConverter.getAutoTableNodeConverter().isPath(each.getKey())) {
- ShardingNodeConverter.getAutoTableNodeConverter().getName(each.getKey())
+ } else if (ShardingNodeConverter.getAutoTableNodePath().isValidatedPath(each.getKey())) {
+ ShardingNodeConverter.getAutoTableNodePath().getName(each.getKey())
.ifPresent(autoTableName -> result.getAutoTables().add(autoTableYamlSwapper.swapToObject(YamlEngine.unmarshal(each.getValue(), YamlShardingAutoTableRuleConfiguration.class))));
- } else if (ShardingNodeConverter.getBindingTableNodeConverter().isPath(each.getKey())) {
- ShardingNodeConverter.getBindingTableNodeConverter().getName(each.getKey())
+ } else if (ShardingNodeConverter.getBindingTableNodePath().isValidatedPath(each.getKey())) {
+ ShardingNodeConverter.getBindingTableNodePath().getName(each.getKey())
.ifPresent(bindingTableName -> result.getBindingTableGroups().add(YamlShardingTableReferenceRuleConfigurationConverter.convertToObject(each.getValue())));
- } else if (ShardingNodeConverter.getDefaultDatabaseStrategyNodeConverter().isPath(each.getKey())) {
+ } else if (ShardingNodeConverter.getDefaultDatabaseStrategyNodePath().isValidatedPath(each.getKey())) {
result.setDefaultDatabaseShardingStrategy(shardingStrategySwapper.swapToObject(YamlEngine.unmarshal(each.getValue(), YamlShardingStrategyConfiguration.class)));
- } else if (ShardingNodeConverter.getDefaultTableStrategyNodeConverter().isPath(each.getKey())) {
+ } else if (ShardingNodeConverter.getDefaultTableStrategyNodePath().isValidatedPath(each.getKey())) {
result.setDefaultTableShardingStrategy(shardingStrategySwapper.swapToObject(YamlEngine.unmarshal(each.getValue(), YamlShardingStrategyConfiguration.class)));
- } else if (ShardingNodeConverter.getDefaultKeyGenerateStrategyNodeConverter().isPath(each.getKey())) {
+ } else if (ShardingNodeConverter.getDefaultKeyGenerateStrategyNodePath().isValidatedPath(each.getKey())) {
result.setDefaultKeyGenerateStrategy(keyGenerateStrategySwapper.swapToObject(YamlEngine.unmarshal(each.getValue(), YamlKeyGenerateStrategyConfiguration.class)));
- } else if (ShardingNodeConverter.getDefaultAuditStrategyNodeConverter().isPath(each.getKey())) {
+ } else if (ShardingNodeConverter.getDefaultAuditStrategyNodePath().isValidatedPath(each.getKey())) {
result.setDefaultAuditStrategy(auditStrategySwapper.swapToObject(YamlEngine.unmarshal(each.getValue(), YamlShardingAuditStrategyConfiguration.class)));
- } else if (ShardingNodeConverter.getDefaultShardingColumnNodeConverter().isPath(each.getKey())) {
+ } else if (ShardingNodeConverter.getDefaultShardingColumnNodePath().isValidatedPath(each.getKey())) {
result.setDefaultShardingColumn(each.getValue());
- } else if (ShardingNodeConverter.getAlgorithmNodeConverter().isPath(each.getKey())) {
- ShardingNodeConverter.getAlgorithmNodeConverter().getName(each.getKey())
+ } else if (ShardingNodeConverter.getAlgorithmNodePath().isValidatedPath(each.getKey())) {
+ ShardingNodeConverter.getAlgorithmNodePath().getName(each.getKey())
.ifPresent(algorithmName -> result.getShardingAlgorithms().put(algorithmName,
algorithmSwapper.swapToObject(YamlEngine.unmarshal(each.getValue(), YamlAlgorithmConfiguration.class))));
- } else if (ShardingNodeConverter.getKeyGeneratorNodeConverter().isPath(each.getKey())) {
- ShardingNodeConverter.getKeyGeneratorNodeConverter().getName(each.getKey())
+ } else if (ShardingNodeConverter.getKeyGeneratorNodePath().isValidatedPath(each.getKey())) {
+ ShardingNodeConverter.getKeyGeneratorNodePath().getName(each.getKey())
.ifPresent(keyGeneratorName -> result.getKeyGenerators().put(keyGeneratorName,
algorithmSwapper.swapToObject(YamlEngine.unmarshal(each.getValue(), YamlAlgorithmConfiguration.class))));
- } else if (ShardingNodeConverter.getAuditorNodeConverter().isPath(each.getKey())) {
- ShardingNodeConverter.getAuditorNodeConverter().getName(each.getKey())
+ } else if (ShardingNodeConverter.getAuditorNodePath().isValidatedPath(each.getKey())) {
+ ShardingNodeConverter.getAuditorNodePath().getName(each.getKey())
.ifPresent(auditorName -> result.getAuditors().put(auditorName, algorithmSwapper.swapToObject(YamlEngine.unmarshal(each.getValue(), YamlAlgorithmConfiguration.class))));
- } else if (ShardingNodeConverter.getShardingCacheNodeConverter().isPath(each.getKey())) {
+ } else if (ShardingNodeConverter.getShardingCacheNodePath().isValidatedPath(each.getKey())) {
result.setShardingCache(shardingCacheYamlSwapper.swapToObject(YamlEngine.unmarshal(each.getValue(), YamlShardingCacheConfiguration.class)));
}
}
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/converter/RuleItemNodeConverter.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/converter/RuleItemNodeConverter.java
deleted file mode 100644
index 4fc82301894..00000000000
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/converter/RuleItemNodeConverter.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.infra.metadata.converter;
-
-import java.util.Optional;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * Rule item node converter.
- */
-public final class RuleItemNodeConverter {
-
- private static final String RULE_NAME = "/(\\w+)/versions/\\d+$";
-
- private static final String RULE_ACTIVE_VERSION = "/(\\w+)/active_version$";
-
- private final String itemsNode;
-
- private final Pattern itemsPathPattern;
-
- private final Pattern itemNamePathPattern;
-
- private final Pattern itemVersionPathPattern;
-
- public RuleItemNodeConverter(final RuleRootNodeConverter ruleRootNodeConverter, final String itemsNode) {
- this.itemsNode = itemsNode;
- itemsPathPattern = Pattern.compile(ruleRootNodeConverter.getRuleNodePrefix() + "/" + itemsNode + "/.*", Pattern.CASE_INSENSITIVE);
- itemNamePathPattern = Pattern.compile(ruleRootNodeConverter.getRuleNodePrefix() + "/" + itemsNode + RULE_NAME, Pattern.CASE_INSENSITIVE);
- itemVersionPathPattern = Pattern.compile(ruleRootNodeConverter.getRuleNodePrefix() + "/" + itemsNode + RULE_ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
- }
-
- /**
- * Get item name path.
- *
- * @param itemName item name
- * @return item name path
- */
- public String getNamePath(final String itemName) {
- return String.join("/", itemsNode, itemName);
- }
-
- /**
- * Is item path.
- *
- * @param rulePath rule path
- * @return true or false
- */
- public boolean isPath(final String rulePath) {
- return itemsPathPattern.matcher(rulePath).find();
- }
-
- /**
- * Get item name.
- *
- * @param rulePath rule path
- * @return item name
- */
- public Optional<String> getName(final String rulePath) {
- Matcher matcher = itemNamePathPattern.matcher(rulePath);
- return matcher.find() ? Optional.of(matcher.group(3)) : Optional.empty();
- }
-
- /**
- * Get item name by active version path.
- *
- * @param rulePath rule path
- * @return item version
- */
- public Optional<String> getNameByActiveVersionPath(final String rulePath) {
- Matcher matcher = itemVersionPathPattern.matcher(rulePath);
- return matcher.find() ? Optional.of(matcher.group(3)) : Optional.empty();
- }
-}
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/converter/RuleRootNodeConverter.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/nodepath/RuleRootNodePath.java
similarity index 62%
rename from infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/converter/RuleRootNodeConverter.java
rename to infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/nodepath/RuleRootNodePath.java
index 9cf21f10834..7e8e610f87b 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/converter/RuleRootNodeConverter.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/nodepath/RuleRootNodePath.java
@@ -15,36 +15,36 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.metadata.converter;
+package org.apache.shardingsphere.infra.metadata.nodepath;
import lombok.Getter;
import java.util.regex.Pattern;
/**
- * Rule root node converter.
+ * Rule root node path.
*/
-public final class RuleRootNodeConverter {
+public final class RuleRootNodePath {
private static final String RULE_NODE_PREFIX = "/([\\w\\-]+)/([\\w\\-]+)/rules/";
@Getter
- private final String ruleNodePrefix;
+ private final String nodePrefix;
- private final Pattern rulePathPattern;
+ private final Pattern pathPattern;
- public RuleRootNodeConverter(final String ruleType) {
- ruleNodePrefix = RULE_NODE_PREFIX + ruleType;
- rulePathPattern = Pattern.compile(ruleNodePrefix + "/.*", Pattern.CASE_INSENSITIVE);
+ public RuleRootNodePath(final String ruleType) {
+ nodePrefix = RULE_NODE_PREFIX + ruleType;
+ pathPattern = Pattern.compile(nodePrefix + "/.*", Pattern.CASE_INSENSITIVE);
}
/**
- * Is rule path.
+ * Judge whether is validated rule path.
*
- * @param rulePath rule path to be judged
- * @return true or false
+ * @param path path to be judged
+ * @return is validated rule path or not
*/
- public boolean isRulePath(final String rulePath) {
- return rulePathPattern.matcher(rulePath).find();
+ public boolean isValidatedPath(final String path) {
+ return pathPattern.matcher(path).find();
}
}
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/nodepath/item/NamedRuleItemNodePath.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/nodepath/item/NamedRuleItemNodePath.java
new file mode 100644
index 00000000000..14f7ea2825e
--- /dev/null
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/nodepath/item/NamedRuleItemNodePath.java
@@ -0,0 +1,91 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.infra.metadata.nodepath.item;
+
+import org.apache.shardingsphere.infra.metadata.nodepath.RuleRootNodePath;
+
+import java.util.Optional;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Named rule item node path.
+ */
+public final class NamedRuleItemNodePath {
+
+ private static final String NAME = "/(\\w+)/versions/\\d+$";
+
+ private static final String ACTIVE_VERSION = "/(\\w+)/active_version$";
+
+ private final String type;
+
+ private final Pattern pathPattern;
+
+ private final Pattern namePathPattern;
+
+ private final Pattern activeVersionPathPattern;
+
+ public NamedRuleItemNodePath(final RuleRootNodePath rootNodePath, final String type) {
+ this.type = type;
+ pathPattern = Pattern.compile(rootNodePath.getNodePrefix() + "/" + type + "/.*", Pattern.CASE_INSENSITIVE);
+ namePathPattern = Pattern.compile(rootNodePath.getNodePrefix() + "/" + type + NAME, Pattern.CASE_INSENSITIVE);
+ activeVersionPathPattern = Pattern.compile(rootNodePath.getNodePrefix() + "/" + type + ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
+ }
+
+ /**
+ * Get rule item path.
+ *
+ * @param itemName item name
+ * @return rule item path
+ */
+ public String getPath(final String itemName) {
+ return String.join("/", type, itemName);
+ }
+
+ /**
+ * Judge whether is validated rule item path.
+ *
+ * @param path path to be judged
+ * @return is validated rule item path or not
+ */
+ public boolean isValidatedPath(final String path) {
+ return pathPattern.matcher(path).find();
+ }
+
+ /**
+ * Get rule item name.
+ *
+ * @param path path
+ * @return got item rule name
+ */
+ public Optional<String> getName(final String path) {
+ Matcher matcher = namePathPattern.matcher(path);
+ return matcher.find() ? Optional.of(matcher.group(3)) : Optional.empty();
+ }
+
+ /**
+ * Get rule item name by active version.
+ *
+ * @param path path
+ * @return got rule item name
+ */
+ public Optional<String> getNameByActiveVersion(final String path) {
+ Matcher matcher = activeVersionPathPattern.matcher(path);
+ return matcher.find() ? Optional.of(matcher.group(3)) : Optional.empty();
+ }
+}
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/converter/RuleDefaultItemNodeConverter.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/nodepath/item/UniqueRuleItemNodePath.java
similarity index 53%
rename from infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/converter/RuleDefaultItemNodeConverter.java
rename to infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/nodepath/item/UniqueRuleItemNodePath.java
index d7319bbac8a..e310815c0db 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/converter/RuleDefaultItemNodeConverter.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/nodepath/item/UniqueRuleItemNodePath.java
@@ -15,15 +15,17 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.metadata.converter;
+package org.apache.shardingsphere.infra.metadata.nodepath.item;
+
+import org.apache.shardingsphere.infra.metadata.nodepath.RuleRootNodePath;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
- * Rule default item node converter.
+ * Unique rule item node path.
*/
-public final class RuleDefaultItemNodeConverter {
+public final class UniqueRuleItemNodePath {
private static final String VERSIONS = "/versions/\\d+$";
@@ -31,24 +33,24 @@ public final class RuleDefaultItemNodeConverter {
private final String parentNode;
- private final String itemsNode;
+ private final String type;
- private final Pattern itemsPathPattern;
+ private final Pattern pathPattern;
private final Pattern activeVersionPathPattern;
- public RuleDefaultItemNodeConverter(final RuleRootNodeConverter ruleRootNodeConverter, final String itemsNode) {
+ public UniqueRuleItemNodePath(final RuleRootNodePath ruleRootNodePath, final String type) {
parentNode = null;
- this.itemsNode = itemsNode;
- itemsPathPattern = Pattern.compile(ruleRootNodeConverter.getRuleNodePrefix() + "/" + itemsNode + VERSIONS, Pattern.CASE_INSENSITIVE);
- activeVersionPathPattern = Pattern.compile(ruleRootNodeConverter.getRuleNodePrefix() + "/" + itemsNode + ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
+ this.type = type;
+ pathPattern = Pattern.compile(ruleRootNodePath.getNodePrefix() + "/" + type + VERSIONS, Pattern.CASE_INSENSITIVE);
+ activeVersionPathPattern = Pattern.compile(ruleRootNodePath.getNodePrefix() + "/" + type + ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
}
- public RuleDefaultItemNodeConverter(final RuleRootNodeConverter ruleRootNodeConverter, final String parentNode, final String itemsNode) {
+ public UniqueRuleItemNodePath(final RuleRootNodePath ruleRootNodePath, final String parentNode, final String type) {
this.parentNode = parentNode;
- this.itemsNode = itemsNode;
- itemsPathPattern = Pattern.compile(ruleRootNodeConverter.getRuleNodePrefix() + "/" + parentNode + "/" + itemsNode + VERSIONS, Pattern.CASE_INSENSITIVE);
- activeVersionPathPattern = Pattern.compile(ruleRootNodeConverter.getRuleNodePrefix() + "/" + parentNode + "/" + itemsNode + ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
+ this.type = type;
+ pathPattern = Pattern.compile(ruleRootNodePath.getNodePrefix() + "/" + parentNode + "/" + type + VERSIONS, Pattern.CASE_INSENSITIVE);
+ activeVersionPathPattern = Pattern.compile(ruleRootNodePath.getNodePrefix() + "/" + parentNode + "/" + type + ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
}
/**
@@ -57,17 +59,17 @@ public final class RuleDefaultItemNodeConverter {
* @return path
*/
public String getPath() {
- return null == parentNode ? String.join("/", itemsNode) : String.join("/", parentNode, itemsNode);
+ return null == parentNode ? String.join("/", type) : String.join("/", parentNode, type);
}
/**
- * Is item path.
+ * Judge whether is validated rule item path.
*
- * @param rulePath rule path
- * @return true or false
+ * @param path path to be judged
+ * @return is validated rule item path or not
*/
- public boolean isPath(final String rulePath) {
- return itemsPathPattern.matcher(rulePath).find();
+ public boolean isValidatedPath(final String path) {
+ return pathPattern.matcher(path).find();
}
/**
diff --git a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/converter/RuleRootNodeConverterTest.java b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/nodepath/RuleRootNodePathTest.java
similarity index 68%
rename from infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/converter/RuleRootNodeConverterTest.java
rename to infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/nodepath/RuleRootNodePathTest.java
index 077ea295f1b..5c3b6f5c5b4 100644
--- a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/converter/RuleRootNodeConverterTest.java
+++ b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/nodepath/RuleRootNodePathTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.metadata.converter;
+package org.apache.shardingsphere.infra.metadata.nodepath;
import org.junit.jupiter.api.Test;
@@ -24,18 +24,22 @@ import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
-class RuleRootNodeConverterTest {
+class RuleRootNodePathTest {
- private final RuleRootNodeConverter converter = new RuleRootNodeConverter("foo");
+ private final RuleRootNodePath nodePath = new RuleRootNodePath("foo");
@Test
void assertGetRuleNodePrefix() {
- assertThat(converter.getRuleNodePrefix(), is("/([\\w\\-]+)/([\\w\\-]+)/rules/foo"));
+ assertThat(nodePath.getNodePrefix(), is("/([\\w\\-]+)/([\\w\\-]+)/rules/foo"));
}
@Test
- void assertIsRulePath() {
- assertTrue(converter.isRulePath("/metadata/foo_db/rules/foo/tables/foo_table"));
- assertFalse(converter.isRulePath("/metadata/foo_db/rules/bar/tables/foo_table"));
+ void assertIsValidatedPath() {
+ assertTrue(nodePath.isValidatedPath("/metadata/foo_db/rules/foo/tables/foo_table"));
+ }
+
+ @Test
+ void assertIsNotValidatedPath() {
+ assertFalse(nodePath.isValidatedPath("/metadata/foo_db/rules/bar/tables/foo_table"));
}
}
diff --git a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/converter/RuleItemNodeConverterTest.java b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/nodepath/item/NamedRuleItemNodePathTest.java
similarity index 65%
rename from infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/converter/RuleItemNodeConverterTest.java
rename to infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/nodepath/item/NamedRuleItemNodePathTest.java
index 45d6b806291..1fae062c8ab 100644
--- a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/converter/RuleItemNodeConverterTest.java
+++ b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/nodepath/item/NamedRuleItemNodePathTest.java
@@ -15,28 +15,35 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.metadata.converter;
+package org.apache.shardingsphere.infra.metadata.nodepath.item;
+import org.apache.shardingsphere.infra.metadata.nodepath.RuleRootNodePath;
import org.junit.jupiter.api.Test;
import java.util.Optional;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
-class RuleItemNodeConverterTest {
+class NamedRuleItemNodePathTest {
- private final RuleItemNodeConverter converter = new RuleItemNodeConverter(new RuleRootNodeConverter("foo"), "tables");
+ private final NamedRuleItemNodePath converter = new NamedRuleItemNodePath(new RuleRootNodePath("foo"), "tables");
@Test
- void assertGetNamePath() {
- assertThat(converter.getNamePath("foo_table"), is("tables/foo_table"));
+ void assertGetPath() {
+ assertThat(converter.getPath("foo_table"), is("tables/foo_table"));
}
@Test
- void assertIsPath() {
- assertTrue(converter.isPath("/metadata/foo_db/rules/foo/tables/foo_table/versions/0"));
+ void assertIsValidatedPath() {
+ assertTrue(converter.isValidatedPath("/metadata/foo_db/rules/foo/tables/foo_table/versions/0"));
+ }
+
+ @Test
+ void assertIsNotValidatedPath() {
+ assertFalse(converter.isValidatedPath("/metadata/foo_db/rules/bar/tables/foo_table/versions/0"));
}
@Test
@@ -48,7 +55,7 @@ class RuleItemNodeConverterTest {
@Test
void assertGetNameByActiveVersionPath() {
- Optional<String> actual = converter.getNameByActiveVersionPath("/metadata/foo_db/rules/foo/tables/foo_table/active_version");
+ Optional<String> actual = converter.getNameByActiveVersion("/metadata/foo_db/rules/foo/tables/foo_table/active_version");
assertTrue(actual.isPresent());
assertThat(actual.get(), is("foo_table"));
}
diff --git a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/event/SingleRuleConfigurationEventBuilder.java b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/event/SingleRuleConfigurationEventBuilder.java
index 4574e8b25f5..b3786717dab 100644
--- a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/event/SingleRuleConfigurationEventBuilder.java
+++ b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/event/SingleRuleConfigurationEventBuilder.java
@@ -36,10 +36,10 @@ public final class SingleRuleConfigurationEventBuilder implements RuleConfigurat
@Override
public Optional<GovernanceEvent> build(final String databaseName, final DataChangedEvent event) {
- if (!SingleNodeConverter.getTableNodeConverter().isPath(event.getKey()) || Strings.isNullOrEmpty(event.getValue())) {
+ if (!SingleNodeConverter.getTableNodePath().isValidatedPath(event.getKey()) || Strings.isNullOrEmpty(event.getValue())) {
return Optional.empty();
}
- if (SingleNodeConverter.getTableNodeConverter().isActiveVersionPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
+ if (SingleNodeConverter.getTableNodePath().isActiveVersionPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
return createSingleConfigEvent(databaseName, event);
}
return Optional.empty();
diff --git a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/converter/SingleNodeConverter.java b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/converter/SingleNodeConverter.java
index 5690a9b2273..4fa3a53040c 100644
--- a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/converter/SingleNodeConverter.java
+++ b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/converter/SingleNodeConverter.java
@@ -19,8 +19,8 @@ package org.apache.shardingsphere.single.metadata.converter;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
-import org.apache.shardingsphere.infra.metadata.converter.RuleDefaultItemNodeConverter;
-import org.apache.shardingsphere.infra.metadata.converter.RuleRootNodeConverter;
+import org.apache.shardingsphere.infra.metadata.nodepath.item.UniqueRuleItemNodePath;
+import org.apache.shardingsphere.infra.metadata.nodepath.RuleRootNodePath;
/**
* Single node converter.
@@ -30,17 +30,17 @@ public final class SingleNodeConverter {
private static final String TABLES_NODE = "tables";
- private static final RuleRootNodeConverter ROOT_NODE_CONVERTER = new RuleRootNodeConverter("single");
+ private static final RuleRootNodePath ROOT_NODE_PATH = new RuleRootNodePath("single");
- private static final RuleDefaultItemNodeConverter TABLE_NODE_CONVERTER = new RuleDefaultItemNodeConverter(ROOT_NODE_CONVERTER, "tables");
+ private static final UniqueRuleItemNodePath TABLE_NODE_PATH = new UniqueRuleItemNodePath(ROOT_NODE_PATH, "tables");
/**
- * Get table node converter.
+ * Get table node path.
*
- * @return table node converter
+ * @return table node path
*/
- public static RuleDefaultItemNodeConverter getTableNodeConverter() {
- return TABLE_NODE_CONVERTER;
+ public static UniqueRuleItemNodePath getTableNodePath() {
+ return TABLE_NODE_PATH;
}
/**
diff --git a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/yaml/config/swapper/NewYamlSingleRuleConfigurationSwapper.java b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/yaml/config/swapper/NewYamlSingleRuleConfigurationSwapper.java
index 6da3b76e0af..932ad91b0ad 100644
--- a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/yaml/config/swapper/NewYamlSingleRuleConfigurationSwapper.java
+++ b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/yaml/config/swapper/NewYamlSingleRuleConfigurationSwapper.java
@@ -49,7 +49,7 @@ public final class NewYamlSingleRuleConfigurationSwapper implements NewYamlRuleC
@Override
public SingleRuleConfiguration swapToObject(final Collection<YamlDataNode> dataNodes) {
for (YamlDataNode each : dataNodes) {
- if (SingleNodeConverter.getTableNodeConverter().isPath(each.getKey())) {
+ if (SingleNodeConverter.getTableNodePath().isValidatedPath(each.getKey())) {
return swapToObject(YamlEngine.unmarshal(each.getValue(), YamlSingleRuleConfiguration.class));
}
}