This is an automated email from the ASF dual-hosted git repository.
chengzhang 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 f822fd6b031 Refactor rule node converters (#26560)
f822fd6b031 is described below
commit f822fd6b0310d2bfe25ac744dcaebb313820de3c
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Jun 26 04:03:02 2023 +0800
Refactor rule node converters (#26560)
* Refactor BroadcastNodeConverter
* Refactor ReadwriteSplittingNodeConverter
* Refactor MaskNodeConverter
* Refactor ShadowNodeConverter
* Refactor ShardingNodeConverter
* Fix test cases
---
.../BroadcastRuleConfigurationEventBuilder.java | 4 +-
.../metadata/converter/BroadcastNodeConverter.java | 41 +--
.../NewYamlBroadcastRuleConfigurationSwapper.java | 2 +-
.../coverter/BroadcastNodeConverterTest.java | 31 --
.../converter/CompatibleEncryptNodeConverter.java | 8 +-
.../metadata/converter/EncryptNodeConverter.java | 8 +-
.../event/MaskRuleConfigurationEventBuilder.java | 6 +-
.../mask/metadata/converter/MaskNodeConverter.java | 119 +------
.../NewYamlMaskRuleConfigurationSwapper.java | 12 +-
.../metadata/converter/MaskNodeConverterTest.java | 78 -----
...riteSplittingRuleConfigurationEventBuilder.java | 6 +-
.../converter/ReadwriteSplittingNodeConverter.java | 119 +------
...ReadwriteSplittingRuleConfigurationSwapper.java | 16 +-
.../ReadwriteSplittingNodeConverterTest.java | 78 -----
.../event/ShadowRuleConfigurationEventBuilder.java | 8 +-
.../metadata/converter/ShadowNodeConverter.java | 173 ++--------
.../NewYamlShadowRuleConfigurationSwapper.java | 18 +-
.../converter/ShadowNodeConverterTest.java | 106 ------
.../ShardingRuleConfigurationEventBuilder.java | 14 +-
.../metadata/converter/ShardingNodeConverter.java | 380 +++++----------------
.../NewYamlShardingRuleConfigurationSwapper.java | 38 ++-
.../converter/ShardingNodeConverterTest.java | 234 -------------
22 files changed, 229 insertions(+), 1270 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 eff7d33d6ee..77cf6d9ac8b 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.isBroadcastPath(event.getKey()) ||
Strings.isNullOrEmpty(event.getValue())) {
+ if
(!BroadcastNodeConverter.getRuleRootNodeConverter().isRulePath(event.getKey())
|| Strings.isNullOrEmpty(event.getValue())) {
return Optional.empty();
}
- if (BroadcastNodeConverter.isTablesActiveVersionPath(event.getKey())
&& !Strings.isNullOrEmpty(event.getValue())) {
+ if
(BroadcastNodeConverter.getTableNodeConvertor().getNameByActiveVersionPath(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 cdd1d9aedfc..a2cd4607934 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,9 +19,8 @@ package
org.apache.shardingsphere.broadcast.metadata.converter;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
+import
org.apache.shardingsphere.infra.metadata.converter.RuleItemNodeConverter;
+import
org.apache.shardingsphere.infra.metadata.converter.RuleRootNodeConverter;
/**
* Broadcast node converter.
@@ -29,44 +28,36 @@ import java.util.regex.Pattern;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class BroadcastNodeConverter {
- private static final String ROOT_NODE = "broadcast";
-
private static final String TABLES_NODE = "tables";
- private static final String RULES_NODE_PREFIX =
"/([\\w\\-]+)/([\\w\\-]+)/rules/";
+ private static final RuleRootNodeConverter ROOT_NODE_CONVERTER = new
RuleRootNodeConverter("broadcast");
- private static final String RULE_ACTIVE_VERSION = "/active_version$";
+ private static final RuleItemNodeConverter TABLE_NODE_CONVERTER = new
RuleItemNodeConverter(ROOT_NODE_CONVERTER, TABLES_NODE);
/**
- * Get tables path.
+ * Get rule root node converter.
*
- * @return tables path
+ * @return rule root node converter
*/
- public static String getTablesPath() {
- return TABLES_NODE;
+ public static RuleRootNodeConverter getRuleRootNodeConverter() {
+ return ROOT_NODE_CONVERTER;
}
/**
- * Is broadcast path.
+ * Get table node converter.
*
- * @param rulePath rule path
- * @return true or false
+ * @return table node converter
*/
- public static boolean isBroadcastPath(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE +
"/.*", Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find();
+ public static RuleItemNodeConverter getTableNodeConvertor() {
+ return TABLE_NODE_CONVERTER;
}
/**
- * Is broadcast tables active version path.
+ * Get tables path.
*
- * @param rulePath rule path
- * @return true or false
+ * @return tables path
*/
- public static boolean isTablesActiveVersionPath(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ TABLES_NODE + RULE_ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find();
+ public static String getTablesPath() {
+ return TABLES_NODE;
}
}
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 cc03cee1900..2a0f0dda48c 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.isBroadcastPath(each.getKey())) {
+ if
(BroadcastNodeConverter.getRuleRootNodeConverter().isRulePath(each.getKey())) {
YamlBroadcastRuleConfiguration yamlBroadcastRuleConfiguration
= YamlEngine.unmarshal(each.getValue(), YamlBroadcastRuleConfiguration.class);
return new
BroadcastRuleConfiguration(yamlBroadcastRuleConfiguration.getTables());
}
diff --git
a/features/broadcast/core/src/test/java/org/apache/shardingsphere/broadcast/metadata/coverter/BroadcastNodeConverterTest.java
b/features/broadcast/core/src/test/java/org/apache/shardingsphere/broadcast/metadata/coverter/BroadcastNodeConverterTest.java
deleted file mode 100644
index 4bc7b8fd766..00000000000
---
a/features/broadcast/core/src/test/java/org/apache/shardingsphere/broadcast/metadata/coverter/BroadcastNodeConverterTest.java
+++ /dev/null
@@ -1,31 +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.broadcast.metadata.coverter;
-
-import
org.apache.shardingsphere.broadcast.metadata.converter.BroadcastNodeConverter;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-class BroadcastNodeConverterTest {
-
- @Test
- void assertIsTablesActiveVersionPath() {
-
assertTrue(BroadcastNodeConverter.isTablesActiveVersionPath("/metadata/foo_db/rules/broadcast/tables/active_version"));
- }
-}
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 c26591d6c97..479fc5b26cf 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
@@ -46,18 +46,18 @@ public final class CompatibleEncryptNodeConverter {
}
/**
- * Get table node convertor.
+ * Get table node converter.
*
- * @return table node convertor
+ * @return table node converter
*/
public static RuleItemNodeConverter getTableNodeConvertor() {
return TABLE_NODE_CONVERTER;
}
/**
- * Get encryptor node convertor.
+ * Get encryptor node converter.
*
- * @return encryptor node convertor
+ * @return encryptor node converter
*/
public static RuleItemNodeConverter getEncryptorNodeConvertor() {
return ENCRYPTOR_NODE_CONVERTER;
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 fe0b0fa044c..0adcd9039de 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
@@ -44,18 +44,18 @@ public final class EncryptNodeConverter {
}
/**
- * Get table node convertor.
+ * Get table node converter.
*
- * @return table node convertor
+ * @return table node converter
*/
public static RuleItemNodeConverter getTableNodeConvertor() {
return TABLE_NODE_CONVERTER;
}
/**
- * Get encryptor node convertor.
+ * Get encryptor node converter.
*
- * @return encryptor node convertor
+ * @return encryptor node converter
*/
public static RuleItemNodeConverter getEncryptorNodeConvertor() {
return ENCRYPTOR_NODE_CONVERTER;
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 36526253f7d..e7c5e730c45 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.isMaskPath(event.getKey()) ||
Strings.isNullOrEmpty(event.getValue())) {
+ if
(!MaskNodeConverter.getRuleRootNodeConverter().isRulePath(event.getKey()) ||
Strings.isNullOrEmpty(event.getValue())) {
return Optional.empty();
}
- Optional<String> tableName =
MaskNodeConverter.getTableNameByActiveVersionPath(event.getKey());
+ Optional<String> tableName =
MaskNodeConverter.getTableNodeConvertor().getNameByActiveVersionPath(event.getKey());
if (tableName.isPresent() && !Strings.isNullOrEmpty(event.getValue()))
{
return createMaskConfigEvent(databaseName, tableName.get(), event);
}
- Optional<String> algorithmName =
MaskNodeConverter.getAlgorithmNameByActiveVersionPath(event.getKey());
+ Optional<String> algorithmName =
MaskNodeConverter.getAlgorithmNodeConvertor().getNameByActiveVersionPath(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 343bf83da51..9686ac8caf9 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,10 +19,8 @@ package org.apache.shardingsphere.mask.metadata.converter;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
-
-import java.util.Optional;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
+import
org.apache.shardingsphere.infra.metadata.converter.RuleItemNodeConverter;
+import
org.apache.shardingsphere.infra.metadata.converter.RuleRootNodeConverter;
/**
* Mask node converter.
@@ -30,119 +28,36 @@ import java.util.regex.Pattern;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class MaskNodeConverter {
- private static final String ROOT_NODE = "mask";
-
- private static final String TABLES_NODE = "tables";
-
- private static final String ALGORITHMS_NODE = "algorithms";
-
- private static final String RULES_NODE_PREFIX =
"/([\\w\\-]+)/([\\w\\-]+)/rules/";
-
- private static final String RULE_NAME_PATTERN = "/([\\w\\-]+)?";
-
- private static final String RULE_ACTIVE_VERSION =
"/([\\w\\-]+)/active_version$";
-
- /**
- * Get table name path.
- *
- * @param tableName table name
- * @return table name path
- */
- public static String getTableNamePath(final String tableName) {
- return String.join("/", TABLES_NODE, tableName);
- }
-
- /**
- * Get mask algorithm path.
- *
- * @param maskAlgorithmName mask algorithm name
- * @return mask algorithm path
- */
- public static String getMaskAlgorithmPath(final String maskAlgorithmName) {
- return String.join("/", ALGORITHMS_NODE, maskAlgorithmName);
- }
-
- /**
- * Is mask path.
- *
- * @param rulePath rule path
- * @return true or false
- */
- public static boolean isMaskPath(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE +
"/.*", Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find();
- }
-
- /**
- * Is mask table path.
- *
- * @param rulePath rule path
- * @return true or false
- */
- public static boolean isTablePath(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ TABLES_NODE + "/.*", Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find();
- }
+ private static final RuleRootNodeConverter ROOT_NODE_CONVERTER = new
RuleRootNodeConverter("mask");
- /**
- * Is mask algorithm path.
- *
- * @param rulePath rule path
- * @return true or false
- */
- public static boolean isAlgorithmPath(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ ALGORITHMS_NODE + "/.*", Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find();
- }
+ private static final RuleItemNodeConverter TABLE_NODE_CONVERTER = new
RuleItemNodeConverter(ROOT_NODE_CONVERTER, "tables");
- /**
- * Get table name.
- *
- * @param rulePath rule path
- * @return table name
- */
- public static Optional<String> getTableName(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ TABLES_NODE + RULE_NAME_PATTERN, Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
- }
+ private static final RuleItemNodeConverter ALGORITHM_NODE_CONVERTER = new
RuleItemNodeConverter(ROOT_NODE_CONVERTER, "algorithms");
/**
- * Get algorithm name.
+ * Get rule root node converter.
*
- * @param rulePath rule path
- * @return algorithm name
+ * @return rule root node converter
*/
- public static Optional<String> getAlgorithmName(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ ALGORITHMS_NODE + RULE_NAME_PATTERN, Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
+ public static RuleRootNodeConverter getRuleRootNodeConverter() {
+ return ROOT_NODE_CONVERTER;
}
/**
- * Get table name by active version.
+ * Get table node converter.
*
- * @param activeVersionPath active version path
- * @return table name
+ * @return table node converter
*/
- public static Optional<String> getTableNameByActiveVersionPath(final
String activeVersionPath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ TABLES_NODE + RULE_ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(activeVersionPath);
- return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
+ public static RuleItemNodeConverter getTableNodeConvertor() {
+ return TABLE_NODE_CONVERTER;
}
/**
- * Get algorithm name by active version.
+ * Get algorithm node converter.
*
- * @param activeVersionPath active version path
- * @return algorithm name
+ * @return algorithm node converter
*/
- public static Optional<String> getAlgorithmNameByActiveVersionPath(final
String activeVersionPath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ ALGORITHMS_NODE + RULE_ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(activeVersionPath);
- return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
+ public static RuleItemNodeConverter getAlgorithmNodeConvertor() {
+ return ALGORITHM_NODE_CONVERTER;
}
}
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 351d394f40b..b9d09d17d24 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.getMaskAlgorithmPath(entry.getKey()),
YamlEngine.marshal(algorithmSwapper.swapToYamlConfiguration(entry.getValue()))));
+ result.add(new
YamlDataNode(MaskNodeConverter.getAlgorithmNodeConvertor().getNamePath(entry.getKey()),
YamlEngine.marshal(algorithmSwapper.swapToYamlConfiguration(entry.getValue()))));
}
for (MaskTableRuleConfiguration each : data.getTables()) {
- result.add(new
YamlDataNode(MaskNodeConverter.getTableNamePath(each.getName()),
YamlEngine.marshal(tableSwapper.swapToYamlConfiguration(each))));
+ result.add(new
YamlDataNode(MaskNodeConverter.getTableNodeConvertor().getNamePath(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.isTablePath(each.getKey())) {
- MaskNodeConverter.getTableName(each.getKey())
+ if
(MaskNodeConverter.getTableNodeConvertor().isPath(each.getKey())) {
+
MaskNodeConverter.getTableNodeConvertor().getName(each.getKey())
.ifPresent(tableName ->
tables.add(tableSwapper.swapToObject(YamlEngine.unmarshal(each.getValue(),
YamlMaskTableRuleConfiguration.class))));
- } else if (MaskNodeConverter.isAlgorithmPath(each.getKey())) {
- MaskNodeConverter.getAlgorithmName(each.getKey())
+ } else if
(MaskNodeConverter.getAlgorithmNodeConvertor().isPath(each.getKey())) {
+
MaskNodeConverter.getAlgorithmNodeConvertor().getName(each.getKey())
.ifPresent(loadBalancerName ->
algorithms.put(loadBalancerName,
algorithmSwapper.swapToObject(YamlEngine.unmarshal(each.getValue(),
YamlAlgorithmConfiguration.class))));
}
}
diff --git
a/features/mask/core/src/test/java/org/apache/shardingsphere/mask/metadata/converter/MaskNodeConverterTest.java
b/features/mask/core/src/test/java/org/apache/shardingsphere/mask/metadata/converter/MaskNodeConverterTest.java
deleted file mode 100644
index 3ecaa742599..00000000000
---
a/features/mask/core/src/test/java/org/apache/shardingsphere/mask/metadata/converter/MaskNodeConverterTest.java
+++ /dev/null
@@ -1,78 +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.mask.metadata.converter;
-
-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 MaskNodeConverterTest {
-
- @Test
- void assertGetTableNamePath() {
- assertThat(MaskNodeConverter.getTableNamePath("foo_table"),
is("tables/foo_table"));
- }
-
- @Test
- void assertGetAlgorithmPath() {
- assertThat(MaskNodeConverter.getMaskAlgorithmPath("MD5"),
is("algorithms/MD5"));
- }
-
- @Test
- void assertCheckIsTargetRuleByRulePath() {
-
assertTrue(MaskNodeConverter.isMaskPath("/metadata/foo_db/rules/mask/tables/foo_table"));
-
assertFalse(MaskNodeConverter.isMaskPath("/metadata/foo_db/rules/foo/tables/foo_table"));
-
assertTrue(MaskNodeConverter.isTablePath("/metadata/foo_db/rules/mask/tables/foo_table"));
-
assertFalse(MaskNodeConverter.isTablePath("/metadata/foo_db/rules/mask/algorithms/MD5"));
-
assertTrue(MaskNodeConverter.isAlgorithmPath("/metadata/foo_db/rules/mask/algorithms/MD5"));
-
assertFalse(MaskNodeConverter.isAlgorithmPath("/metadata/foo_db/rules/mask/tables/foo_table"));
- }
-
- @Test
- void assertGetTableNameByRulePath() {
- Optional<String> actual =
MaskNodeConverter.getTableName("/metadata/foo_db/rules/mask/tables/foo_table");
- assertTrue(actual.isPresent());
- assertThat(actual.get(), is("foo_table"));
- }
-
- @Test
- void assertGetAlgorithmNameByRulePath() {
- Optional<String> actual =
MaskNodeConverter.getAlgorithmName("/metadata/foo_db/rules/mask/algorithms/MD5");
- assertTrue(actual.isPresent());
- assertThat(actual.get(), is("MD5"));
- }
-
- @Test
- void assertGetMaskTableVersion() {
- Optional<String> actual =
MaskNodeConverter.getTableNameByActiveVersionPath("/metadata/foo_db/rules/mask/tables/foo_table/active_version");
- assertTrue(actual.isPresent());
- assertThat(actual.get(), is("foo_table"));
- }
-
- @Test
- void assertGetMaskAlgorithmVersion() {
- Optional<String> actual =
MaskNodeConverter.getAlgorithmNameByActiveVersionPath("/metadata/foo_db/rules/mask/algorithms/md5_mask/active_version");
- assertTrue(actual.isPresent());
- assertThat(actual.get(), is("md5_mask"));
- }
-}
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 14b270f1277..5307d265fa9 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.isReadwriteSplittingPath(event.getKey()) ||
Strings.isNullOrEmpty(event.getValue())) {
+ if
(!ReadwriteSplittingNodeConverter.getRuleRootNodeConverter().isRulePath(event.getKey())
|| Strings.isNullOrEmpty(event.getValue())) {
return Optional.empty();
}
- Optional<String> groupName =
ReadwriteSplittingNodeConverter.getGroupNameByActiveVersionPath(event.getKey());
+ Optional<String> groupName =
ReadwriteSplittingNodeConverter.getDataSourceNodeConvertor().getNameByActiveVersionPath(event.getKey());
if (groupName.isPresent() && !Strings.isNullOrEmpty(event.getValue()))
{
return createReadwriteSplittingConfigEvent(databaseName,
groupName.get(), event);
}
- Optional<String> loadBalancerName =
ReadwriteSplittingNodeConverter.getLoadBalancerNameByActiveVersionPath(event.getKey());
+ Optional<String> loadBalancerName =
ReadwriteSplittingNodeConverter.getLoadBalancerNodeConverter().getNameByActiveVersionPath(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 b73a620a6e0..7c800d4d585 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,10 +19,8 @@ package
org.apache.shardingsphere.readwritesplitting.metadata.converter;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
-
-import java.util.Optional;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
+import
org.apache.shardingsphere.infra.metadata.converter.RuleItemNodeConverter;
+import
org.apache.shardingsphere.infra.metadata.converter.RuleRootNodeConverter;
/**
* Readwrite-splitting node converter.
@@ -30,119 +28,36 @@ import java.util.regex.Pattern;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class ReadwriteSplittingNodeConverter {
- private static final String ROOT_NODE = "readwrite_splitting";
-
- private static final String DATA_SOURCES_NODE = "data_sources";
-
- private static final String LOAD_BALANCER_NODE = "load_balancers";
-
- private static final String RULES_NODE_PREFIX =
"/([\\w\\-]+)/([\\w\\-]+)/rules/";
-
- private static final String RULE_NAME_PATTERN = "/([\\w\\-]+)?";
-
- private static final String RULE_ACTIVE_VERSION =
"/([\\w\\-]+)/active_version$";
-
- /**
- * Get group name path.
- *
- * @param groupName group name
- * @return group name path
- */
- public static String getGroupNamePath(final String groupName) {
- return String.join("/", DATA_SOURCES_NODE, groupName);
- }
-
- /**
- * Get load balancer name.
- *
- * @param loadBalancerName load balancer name
- * @return load balancer path
- */
- public static String getLoadBalancerPath(final String loadBalancerName) {
- return String.join("/", LOAD_BALANCER_NODE, loadBalancerName);
- }
-
- /**
- * Is readwrite-splitting path.
- *
- * @param rulePath rule path
- * @return true or false
- */
- public static boolean isReadwriteSplittingPath(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE +
"/.*", Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find();
- }
+ private static final RuleRootNodeConverter ROOT_NODE_CONVERTER = new
RuleRootNodeConverter("readwrite_splitting");
- /**
- * Is readwrite-splitting data sources path.
- *
- * @param rulePath rule path
- * @return true or false
- */
- public static boolean isDataSourcePath(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ DATA_SOURCES_NODE + "/.*", Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find();
- }
+ private static final RuleItemNodeConverter DATA_SOURCE_NODE_CONVERTER =
new RuleItemNodeConverter(ROOT_NODE_CONVERTER, "data_sources");
- /**
- * Is readwrite-splitting load balancer path.
- *
- * @param rulePath rule path
- * @return true or false
- */
- public static boolean isLoadBalancerPath(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ LOAD_BALANCER_NODE + "/.*", Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find();
- }
-
- /**
- * Get group name.
- *
- * @param rulePath rule path
- * @return group name
- */
- public static Optional<String> getGroupName(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ DATA_SOURCES_NODE + RULE_NAME_PATTERN, Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
- }
+ private static final RuleItemNodeConverter LOAD_BALANCER_NODE_CONVERTER =
new RuleItemNodeConverter(ROOT_NODE_CONVERTER, "load_balancers");
/**
- * Get load balancer name.
+ * Get rule root node converter.
*
- * @param rulePath rule path
- * @return load balancer name
+ * @return rule root node converter
*/
- public static Optional<String> getLoadBalancerName(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ LOAD_BALANCER_NODE + RULE_NAME_PATTERN, Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
+ public static RuleRootNodeConverter getRuleRootNodeConverter() {
+ return ROOT_NODE_CONVERTER;
}
/**
- * Get group name by active version path.
+ * Get data source node converter.
*
- * @param activeVersionPath active version path
- * @return group name
+ * @return data source node converter
*/
- public static Optional<String> getGroupNameByActiveVersionPath(final
String activeVersionPath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ DATA_SOURCES_NODE + RULE_ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(activeVersionPath);
- return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
+ public static RuleItemNodeConverter getDataSourceNodeConvertor() {
+ return DATA_SOURCE_NODE_CONVERTER;
}
/**
- * Get load balancer name by active version path.
+ * Get load balancer node converter.
*
- * @param activeVersionPath active version path
- * @return load balancer name
+ * @return load balancer node converter
*/
- public static Optional<String>
getLoadBalancerNameByActiveVersionPath(final String activeVersionPath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ LOAD_BALANCER_NODE + RULE_ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(activeVersionPath);
- return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
+ public static RuleItemNodeConverter getLoadBalancerNodeConverter() {
+ return LOAD_BALANCER_NODE_CONVERTER;
}
}
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 063d6d4f4b3..f9fcb1d3bdd 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
@@ -49,10 +49,11 @@ public final class
NewYamlReadwriteSplittingRuleConfigurationSwapper implements
public Collection<YamlDataNode> swapToDataNodes(final
ReadwriteSplittingRuleConfiguration data) {
Collection<YamlDataNode> result = new LinkedHashSet<>();
for (Map.Entry<String, AlgorithmConfiguration> entry :
data.getLoadBalancers().entrySet()) {
- result.add(new
YamlDataNode(ReadwriteSplittingNodeConverter.getLoadBalancerPath(entry.getKey()),
YamlEngine.marshal(algorithmSwapper.swapToYamlConfiguration(entry.getValue()))));
+ result.add(new YamlDataNode(
+
ReadwriteSplittingNodeConverter.getLoadBalancerNodeConverter().getNamePath(entry.getKey()),
YamlEngine.marshal(algorithmSwapper.swapToYamlConfiguration(entry.getValue()))));
}
for (ReadwriteSplittingDataSourceRuleConfiguration each :
data.getDataSources()) {
- result.add(new
YamlDataNode(ReadwriteSplittingNodeConverter.getGroupNamePath(each.getName()),
YamlEngine.marshal(swapToYamlConfiguration(each))));
+ result.add(new
YamlDataNode(ReadwriteSplittingNodeConverter.getDataSourceNodeConvertor().getNamePath(each.getName()),
YamlEngine.marshal(swapToYamlConfiguration(each))));
}
return result;
}
@@ -71,13 +72,12 @@ public final class
NewYamlReadwriteSplittingRuleConfigurationSwapper implements
Collection<ReadwriteSplittingDataSourceRuleConfiguration> dataSources
= new LinkedList<>();
Map<String, AlgorithmConfiguration> loadBalancerMap = new
LinkedHashMap<>();
for (YamlDataNode each : dataNodes) {
- if
(ReadwriteSplittingNodeConverter.isDataSourcePath(each.getKey())) {
- ReadwriteSplittingNodeConverter.getGroupName(each.getKey())
+ if
(ReadwriteSplittingNodeConverter.getDataSourceNodeConvertor().isPath(each.getKey()))
{
+
ReadwriteSplittingNodeConverter.getDataSourceNodeConvertor().getName(each.getKey())
.ifPresent(groupName ->
dataSources.add(swapDataSource(groupName, YamlEngine.unmarshal(each.getValue(),
YamlReadwriteSplittingDataSourceRuleConfiguration.class))));
- } else if
(ReadwriteSplittingNodeConverter.isLoadBalancerPath(each.getKey())) {
-
ReadwriteSplittingNodeConverter.getLoadBalancerName(each.getKey())
- .ifPresent(
- loadBalancerName ->
loadBalancerMap.put(loadBalancerName,
algorithmSwapper.swapToObject(YamlEngine.unmarshal(each.getValue(),
YamlAlgorithmConfiguration.class))));
+ } else if
(ReadwriteSplittingNodeConverter.getLoadBalancerNodeConverter().isPath(each.getKey()))
{
+
ReadwriteSplittingNodeConverter.getLoadBalancerNodeConverter().getName(each.getKey())
+ .ifPresent(loadBalancerName ->
loadBalancerMap.put(loadBalancerName,
algorithmSwapper.swapToObject(YamlEngine.unmarshal(each.getValue(),
YamlAlgorithmConfiguration.class))));
}
}
return new ReadwriteSplittingRuleConfiguration(dataSources,
loadBalancerMap);
diff --git
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/metadata/converter/ReadwriteSplittingNodeConverterTest.java
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/metadata/converter/ReadwriteSplittingNodeConverterTest.java
deleted file mode 100644
index 053921ab964..00000000000
---
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/metadata/converter/ReadwriteSplittingNodeConverterTest.java
+++ /dev/null
@@ -1,78 +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.readwritesplitting.metadata.converter;
-
-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 ReadwriteSplittingNodeConverterTest {
-
- @Test
- void assertGetGroupNamePath() {
-
assertThat(ReadwriteSplittingNodeConverter.getGroupNamePath("group_0"),
is("data_sources/group_0"));
- }
-
- @Test
- void assertGetLoadBalancerPath() {
-
assertThat(ReadwriteSplittingNodeConverter.getLoadBalancerPath("random"),
is("load_balancers/random"));
- }
-
- @Test
- void assertCheckIsTargetRuleByRulePath() {
-
assertTrue(ReadwriteSplittingNodeConverter.isReadwriteSplittingPath("/metadata/foo_db/rules/readwrite_splitting/data_sources/group_0"));
-
assertFalse(ReadwriteSplittingNodeConverter.isReadwriteSplittingPath("/metadata/foo_db/rules/foo/data_sources/group_0"));
-
assertTrue(ReadwriteSplittingNodeConverter.isDataSourcePath("/metadata/foo_db/rules/readwrite_splitting/data_sources/group_0"));
-
assertFalse(ReadwriteSplittingNodeConverter.isDataSourcePath("/metadata/foo_db/rules/readwrite_splitting/load_balancers/random"));
-
assertTrue(ReadwriteSplittingNodeConverter.isLoadBalancerPath("/metadata/foo_db/rules/readwrite_splitting/load_balancers/random"));
-
assertFalse(ReadwriteSplittingNodeConverter.isLoadBalancerPath("/metadata/foo_db/rules/readwrite_splitting/data_sources/group_0"));
- }
-
- @Test
- void assertGetGroupNameByActiveVersionPath() {
- Optional<String> actual =
ReadwriteSplittingNodeConverter.getGroupNameByActiveVersionPath("/metadata/foo_db/rules/readwrite_splitting/data_sources/group_0/active_version");
- assertTrue(actual.isPresent());
- assertThat(actual.get(), is("group_0"));
- }
-
- @Test
- void assertGetGroupName() {
- Optional<String> actual =
ReadwriteSplittingNodeConverter.getGroupName("/metadata/foo_db/rules/readwrite_splitting/data_sources/group_0/versions/0");
- assertTrue(actual.isPresent());
- assertThat(actual.get(), is("group_0"));
- }
-
- @Test
- void assertGetLoadBalancerNameByActiveVersionPath() {
- Optional<String> actual =
ReadwriteSplittingNodeConverter.getLoadBalancerNameByActiveVersionPath("/metadata/foo_db/rules/readwrite_splitting/load_balancers/random/active_version");
- assertTrue(actual.isPresent());
- assertThat(actual.get(), is("random"));
- }
-
- @Test
- void assertGetLoadBalancerName() {
- Optional<String> actual =
ReadwriteSplittingNodeConverter.getLoadBalancerName("/metadata/foo_db/rules/readwrite_splitting/load_balancers/random/versions/1");
- assertTrue(actual.isPresent());
- assertThat(actual.get(), is("random"));
- }
-}
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 c243be18c75..a8b20cfe88d 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
@@ -41,18 +41,18 @@ public final class ShadowRuleConfigurationEventBuilder
implements RuleConfigurat
@Override
public Optional<GovernanceEvent> build(final String databaseName, final
DataChangedEvent event) {
- if (!ShadowNodeConverter.isShadowPath(event.getKey()) ||
Strings.isNullOrEmpty(event.getValue())) {
+ if
(!ShadowNodeConverter.getRuleRootNodeConverter().isRulePath(event.getKey()) ||
Strings.isNullOrEmpty(event.getValue())) {
return Optional.empty();
}
- Optional<String> dataSourceName =
ShadowNodeConverter.getDataSourceNameByActiveVersionPath(event.getKey());
+ Optional<String> dataSourceName =
ShadowNodeConverter.getDataSourceNodeConvertor().getNameByActiveVersionPath(event.getKey());
if (dataSourceName.isPresent() &&
!Strings.isNullOrEmpty(event.getValue())) {
return createShadowConfigEvent(databaseName, dataSourceName.get(),
event);
}
- Optional<String> tableName =
ShadowNodeConverter.getTableNameByActiveVersionPath(event.getKey());
+ Optional<String> tableName =
ShadowNodeConverter.getTableNodeConverter().getNameByActiveVersionPath(event.getKey());
if (tableName.isPresent() && !Strings.isNullOrEmpty(event.getValue()))
{
return createShadowTableConfigEvent(databaseName, tableName.get(),
event);
}
- Optional<String> algorithmName =
ShadowNodeConverter.getAlgorithmNameByActiveVersionPath(event.getKey());
+ Optional<String> algorithmName =
ShadowNodeConverter.getAlgorithmNodeConverter().getNameByActiveVersionPath(event.getKey());
if (algorithmName.isPresent() &&
!Strings.isNullOrEmpty(event.getValue())) {
return createShadowAlgorithmEvent(databaseName,
algorithmName.get(), event);
}
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 7391e65160d..b62d7b20f7d 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,8 +19,9 @@ package org.apache.shardingsphere.shadow.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 java.util.Optional;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -30,107 +31,59 @@ import java.util.regex.Pattern;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class ShadowNodeConverter {
- private static final String ROOT_NODE = "shadow";
-
- private static final String DATA_SOURCES_NODE = "data_sources";
-
- private static final String TABLES_NODE = "tables";
-
- private static final String ALGORITHMS_NODE = "algorithms";
-
private static final String DEFAULT_ALGORITHM_NAME =
"default_algorithm_name";
- private static final String RULES_NODE_PREFIX =
"/([\\w\\-]+)/([\\w\\-]+)/rules/";
+ private static final RuleRootNodeConverter ROOT_NODE_CONVERTER = new
RuleRootNodeConverter("shadow");
- private static final String RULE_NAME_PATTERN = "/([\\w\\-]+)?";
+ private static final RuleItemNodeConverter DATA_SOURCE_NODE_CONVERTER =
new RuleItemNodeConverter(ROOT_NODE_CONVERTER, "data_sources");
- private static final String RULE_ACTIVE_VERSION =
"/([\\w\\-]+)/active_version$";
+ private static final RuleItemNodeConverter TABLE_NODE_CONVERTER = new
RuleItemNodeConverter(ROOT_NODE_CONVERTER, "tables");
- /**
- * Get data source path.
- *
- * @param dataSourceName data source name
- * @return data source path
- */
- public static String getDataSourcePath(final String dataSourceName) {
- return String.join("/", DATA_SOURCES_NODE, dataSourceName);
- }
+ private static final RuleItemNodeConverter ALGORITHM_NODE_CONVERTER = new
RuleItemNodeConverter(ROOT_NODE_CONVERTER, "algorithms");
/**
- * Get table name path.
+ * Get rule root node converter.
*
- * @param tableName table name
- * @return table name path
+ * @return rule root node converter
*/
- public static String getTableNamePath(final String tableName) {
- return String.join("/", TABLES_NODE, tableName);
+ public static RuleRootNodeConverter getRuleRootNodeConverter() {
+ return ROOT_NODE_CONVERTER;
}
/**
- * Get shadow algorithm path.
+ * Get data source node converter.
*
- * @param shadowAlgorithmName shadow algorithm name
- * @return shadow algorithm path
+ * @return data source node converter
*/
- public static String getShadowAlgorithmPath(final String
shadowAlgorithmName) {
- return String.join("/", ALGORITHMS_NODE, shadowAlgorithmName);
+ public static RuleItemNodeConverter getDataSourceNodeConvertor() {
+ return DATA_SOURCE_NODE_CONVERTER;
}
/**
- * Get default shadow algorithm path.
+ * Get table node converter.
*
- * @return default shadow algorithm path
+ * @return table node converter
*/
- public static String getDefaultShadowAlgorithmPath() {
- return String.join("/", DEFAULT_ALGORITHM_NAME);
+ public static RuleItemNodeConverter getTableNodeConverter() {
+ return TABLE_NODE_CONVERTER;
}
/**
- * Is shadow path.
+ * Get algorithm node converter.
*
- * @param rulePath rule path
- * @return true or false
+ * @return algorithm node converter
*/
- public static boolean isShadowPath(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE +
"/.*", Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find();
+ public static RuleItemNodeConverter getAlgorithmNodeConverter() {
+ return ALGORITHM_NODE_CONVERTER;
}
/**
- * Is shadow data sources path.
- *
- * @param rulePath rule path
- * @return true or false
- */
- public static boolean isDataSourcePath(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ DATA_SOURCES_NODE + "/.*", Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find();
- }
-
- /**
- * Is shadow table path.
- *
- * @param rulePath rule path
- * @return true or false
- */
- public static boolean isTablePath(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ TABLES_NODE + "/.*", Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find();
- }
-
- /**
- * Is shadow algorithm path.
+ * Get default shadow algorithm path.
*
- * @param rulePath rule path
- * @return true or false
+ * @return default shadow algorithm path
*/
- public static boolean isAlgorithmPath(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ ALGORITHMS_NODE + "/.*", Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find();
+ public static String getDefaultShadowAlgorithmPath() {
+ return String.join("/", DEFAULT_ALGORITHM_NAME);
}
/**
@@ -140,80 +93,8 @@ public final class ShadowNodeConverter {
* @return true or false
*/
public static boolean isDefaultAlgorithmNamePath(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ DEFAULT_ALGORITHM_NAME + "$", Pattern.CASE_INSENSITIVE);
+ Pattern pattern =
Pattern.compile(ROOT_NODE_CONVERTER.getRuleNodePrefix() + "/" +
DEFAULT_ALGORITHM_NAME + "$", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(rulePath);
return matcher.find();
}
-
- /**
- * Get data source name.
- *
- * @param rulePath rule path
- * @return data source name
- */
- public static Optional<String> getDataSourceName(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ DATA_SOURCES_NODE + RULE_NAME_PATTERN, Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
- }
-
- /**
- * Get table name.
- *
- * @param rulePath rule path
- * @return table name
- */
- public static Optional<String> getTableName(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ TABLES_NODE + RULE_NAME_PATTERN, Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
- }
-
- /**
- * Get algorithm name.
- *
- * @param rulePath rule path
- * @return algorithm name
- */
- public static Optional<String> getAlgorithmName(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ ALGORITHMS_NODE + RULE_NAME_PATTERN, Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
- }
-
- /**
- * Get data source name by active version path.
- *
- * @param activeVersionPath rule path
- * @return data source name
- */
- public static Optional<String> getDataSourceNameByActiveVersionPath(final
String activeVersionPath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ DATA_SOURCES_NODE + RULE_ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(activeVersionPath);
- return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
- }
-
- /**
- * Get table name by active version path.
- *
- * @param activeVersionPath rule path
- * @return table name
- */
- public static Optional<String> getTableNameByActiveVersionPath(final
String activeVersionPath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ TABLES_NODE + RULE_ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(activeVersionPath);
- return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
- }
-
- /**
- * Get algorithm name by active version path.
- *
- * @param activeVersionPath rule path
- * @return algorithm name
- */
- public static Optional<String> getAlgorithmNameByActiveVersionPath(final
String activeVersionPath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ ALGORITHMS_NODE + RULE_ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(activeVersionPath);
- return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
- }
}
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 1bfff333c66..d9a37509ee2 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.getShadowAlgorithmPath(entry.getKey()),
YamlEngine.marshal(algorithmSwapper.swapToYamlConfiguration(entry.getValue()))));
+ result.add(new
YamlDataNode(ShadowNodeConverter.getAlgorithmNodeConverter().getNamePath(entry.getKey()),
YamlEngine.marshal(algorithmSwapper.swapToYamlConfiguration(entry.getValue()))));
}
if (!Strings.isNullOrEmpty(data.getDefaultShadowAlgorithmName())) {
result.add(new
YamlDataNode(ShadowNodeConverter.getDefaultShadowAlgorithmPath(),
data.getDefaultShadowAlgorithmName()));
}
for (ShadowDataSourceConfiguration each : data.getDataSources()) {
- result.add(new
YamlDataNode(ShadowNodeConverter.getDataSourcePath(each.getName()),
YamlEngine.marshal(swapToDataSourceYamlConfiguration(each))));
+ result.add(new
YamlDataNode(ShadowNodeConverter.getDataSourceNodeConvertor().getNamePath(each.getName()),
YamlEngine.marshal(swapToDataSourceYamlConfiguration(each))));
}
for (Entry<String, ShadowTableConfiguration> entry :
data.getTables().entrySet()) {
- result.add(new
YamlDataNode(ShadowNodeConverter.getTableNamePath(entry.getKey()),
YamlEngine.marshal(tableSwapper.swapToYamlConfiguration(entry.getValue()))));
+ result.add(new
YamlDataNode(ShadowNodeConverter.getTableNodeConverter().getNamePath(entry.getKey()),
YamlEngine.marshal(tableSwapper.swapToYamlConfiguration(entry.getValue()))));
}
return result;
}
@@ -76,14 +76,14 @@ public final class NewYamlShadowRuleConfigurationSwapper
implements NewYamlRuleC
public ShadowRuleConfiguration swapToObject(final Collection<YamlDataNode>
dataNodes) {
ShadowRuleConfiguration result = new ShadowRuleConfiguration();
for (YamlDataNode each : dataNodes) {
- if (ShadowNodeConverter.isDataSourcePath(each.getKey())) {
- ShadowNodeConverter.getDataSourceName(each.getKey())
+ if
(ShadowNodeConverter.getDataSourceNodeConvertor().isPath(each.getKey())) {
+
ShadowNodeConverter.getDataSourceNodeConvertor().getName(each.getKey())
.ifPresent(dataSourceName ->
result.getDataSources().add(swapDataSource(dataSourceName,
YamlEngine.unmarshal(each.getValue(),
YamlShadowDataSourceConfiguration.class))));
- } else if (ShadowNodeConverter.isTablePath(each.getKey())) {
- ShadowNodeConverter.getTableName(each.getKey())
+ } else if
(ShadowNodeConverter.getTableNodeConverter().isPath(each.getKey())) {
+
ShadowNodeConverter.getTableNodeConverter().getName(each.getKey())
.ifPresent(tableName ->
result.getTables().put(tableName,
tableSwapper.swapToObject(YamlEngine.unmarshal(each.getValue(),
YamlShadowTableConfiguration.class))));
- } else if (ShadowNodeConverter.isAlgorithmPath(each.getKey())) {
- ShadowNodeConverter.getAlgorithmName(each.getKey())
+ } else if
(ShadowNodeConverter.getAlgorithmNodeConverter().isPath(each.getKey())) {
+
ShadowNodeConverter.getAlgorithmNodeConverter().getName(each.getKey())
.ifPresent(algorithmName ->
result.getShadowAlgorithms().put(algorithmName,
algorithmSwapper.swapToObject(YamlEngine.unmarshal(each.getValue(),
YamlAlgorithmConfiguration.class))));
} else if
(ShadowNodeConverter.isDefaultAlgorithmNamePath(each.getKey())) {
diff --git
a/features/shadow/core/src/test/java/org/apache/shardingsphere/shadow/metadata/converter/ShadowNodeConverterTest.java
b/features/shadow/core/src/test/java/org/apache/shardingsphere/shadow/metadata/converter/ShadowNodeConverterTest.java
deleted file mode 100644
index db02a031518..00000000000
---
a/features/shadow/core/src/test/java/org/apache/shardingsphere/shadow/metadata/converter/ShadowNodeConverterTest.java
+++ /dev/null
@@ -1,106 +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.shadow.metadata.converter;
-
-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 ShadowNodeConverterTest {
-
- @Test
- void assertGetDataSourcePath() {
- assertThat(ShadowNodeConverter.getDataSourcePath("foo_db"),
is("data_sources/foo_db"));
- }
-
- @Test
- void assertGetTableNamePath() {
- assertThat(ShadowNodeConverter.getTableNamePath("foo_table"),
is("tables/foo_table"));
- }
-
- @Test
- void assertGetAlgorithmPath() {
- assertThat(ShadowNodeConverter.getShadowAlgorithmPath("SQL_HINT"),
is("algorithms/SQL_HINT"));
- }
-
- @Test
- void assertGetDefaultShadowAlgorithmPath() {
- assertThat(ShadowNodeConverter.getDefaultShadowAlgorithmPath(),
is("default_algorithm_name"));
- }
-
- @Test
- void assertCheckIsTargetRuleByRulePath() {
-
assertTrue(ShadowNodeConverter.isShadowPath("/metadata/foo_db/rules/shadow/tables/foo_table"));
-
assertFalse(ShadowNodeConverter.isShadowPath("/metadata/foo_db/rules/foo/tables/foo_table"));
-
assertTrue(ShadowNodeConverter.isDataSourcePath("/metadata/foo_db/rules/shadow/data_sources/ds_shadow"));
-
assertFalse(ShadowNodeConverter.isDataSourcePath("/metadata/foo_db/rules/shadow/tables/foo_table"));
-
assertTrue(ShadowNodeConverter.isTablePath("/metadata/foo_db/rules/shadow/tables/foo_table"));
-
assertFalse(ShadowNodeConverter.isTablePath("/metadata/foo_db/rules/shadow/algorithms/MD5"));
-
assertTrue(ShadowNodeConverter.isAlgorithmPath("/metadata/foo_db/rules/shadow/algorithms/MD5"));
-
assertFalse(ShadowNodeConverter.isAlgorithmPath("/metadata/foo_db/rules/shadow/tables/foo_table"));
-
assertTrue(ShadowNodeConverter.isDefaultAlgorithmNamePath("/metadata/foo_db/rules/shadow/default_algorithm_name"));
-
assertFalse(ShadowNodeConverter.isDefaultAlgorithmNamePath("/metadata/foo_db/rules/shadow/default_algorithm_name/s"));
- }
-
- @Test
- void assertGetDataSourceNameByRulePath() {
- Optional<String> actual =
ShadowNodeConverter.getDataSourceName("/metadata/foo_db/rules/shadow/data_sources/foo_db");
- assertTrue(actual.isPresent());
- assertThat(actual.get(), is("foo_db"));
- }
-
- @Test
- void assertGetTableNameByRulePath() {
- Optional<String> actual =
ShadowNodeConverter.getTableName("/metadata/foo_db/rules/shadow/tables/foo_table");
- assertTrue(actual.isPresent());
- assertThat(actual.get(), is("foo_table"));
- }
-
- @Test
- void assertGetAlgorithmNameByRulePath() {
- Optional<String> actual =
ShadowNodeConverter.getAlgorithmName("/metadata/foo_db/rules/shadow/algorithms/SQL_HINT");
- assertTrue(actual.isPresent());
- assertThat(actual.get(), is("SQL_HINT"));
- }
-
- @Test
- void assertGetDataSourceVersion() {
- Optional<String> actual =
ShadowNodeConverter.getDataSourceNameByActiveVersionPath("/metadata/foo_db/rules/shadow/data_sources/shadow_database/active_version");
- assertTrue(actual.isPresent());
- assertThat(actual.get(), is("shadow_database"));
- }
-
- @Test
- void assertGetTableVersion() {
- Optional<String> actual =
ShadowNodeConverter.getTableNameByActiveVersionPath("/metadata/foo_db/rules/shadow/tables/shadow_table/active_version");
- assertTrue(actual.isPresent());
- assertThat(actual.get(), is("shadow_table"));
- }
-
- @Test
- void assertGetAlgorithmVersion() {
- Optional<String> actual =
ShadowNodeConverter.getAlgorithmNameByActiveVersionPath("/metadata/foo_db/rules/shadow/algorithms/user_id_insert_match_algorithm/active_version");
- assertTrue(actual.isPresent());
- assertThat(actual.get(), is("user_id_insert_match_algorithm"));
- }
-}
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 a9c7444bf35..9a66aa4d8aa 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,18 +63,18 @@ public final class ShardingRuleConfigurationEventBuilder
implements RuleConfigur
@Override
public Optional<GovernanceEvent> build(final String databaseName, final
DataChangedEvent event) {
- if (!ShardingNodeConverter.isShardingPath(event.getKey()) ||
Strings.isNullOrEmpty(event.getValue())) {
+ if
(!ShardingNodeConverter.getRuleRootNodeConverter().isRulePath(event.getKey())
|| Strings.isNullOrEmpty(event.getValue())) {
return Optional.empty();
}
- Optional<String> tableName =
ShardingNodeConverter.getTableNameByActiveVersionPath(event.getKey());
+ Optional<String> tableName =
ShardingNodeConverter.getTableNodeConverter().getNameByActiveVersionPath(event.getKey());
if (tableName.isPresent() && !Strings.isNullOrEmpty(event.getValue()))
{
return createShardingTableConfigEvent(databaseName,
tableName.get(), event);
}
- Optional<String> autoTableName =
ShardingNodeConverter.getAutoTableNameByActiveVersionPath(event.getKey());
+ Optional<String> autoTableName =
ShardingNodeConverter.getAutoTableNodeConverter().getNameByActiveVersionPath(event.getKey());
if (autoTableName.isPresent() &&
!Strings.isNullOrEmpty(event.getValue())) {
return createShardingAutoTableConfigEvent(databaseName,
autoTableName.get(), event);
}
- Optional<String> bindingTableName =
ShardingNodeConverter.getBindingTableNameByActiveVersionPath(event.getKey());
+ Optional<String> bindingTableName =
ShardingNodeConverter.getBindingTableNodeConverter().getNameByActiveVersionPath(event.getKey());
if (bindingTableName.isPresent() &&
!Strings.isNullOrEmpty(event.getValue())) {
return createShardingTableReferenceConfigEvent(databaseName,
bindingTableName.get(), event);
}
@@ -93,15 +93,15 @@ public final class ShardingRuleConfigurationEventBuilder
implements RuleConfigur
if
(ShardingNodeConverter.isDefaultShardingColumnWithActiveVersionPath(event.getKey())
&& !Strings.isNullOrEmpty(event.getValue())) {
return createDefaultShardingColumnEvent(databaseName, event);
}
- Optional<String> algorithmName =
ShardingNodeConverter.getShardingAlgorithmNameByActiveVersionPath(event.getKey());
+ Optional<String> algorithmName =
ShardingNodeConverter.getShardingCacheNodeConverter().getNameByActiveVersionPath(event.getKey());
if (algorithmName.isPresent() &&
!Strings.isNullOrEmpty(event.getValue())) {
return createShardingAlgorithmEvent(databaseName,
algorithmName.get(), event);
}
- Optional<String> keyGeneratorName =
ShardingNodeConverter.getKeyGeneratorNameByActiveVersionPath(event.getKey());
+ Optional<String> keyGeneratorName =
ShardingNodeConverter.getKeyGeneratorNodeConverter().getNameByActiveVersionPath(event.getKey());
if (keyGeneratorName.isPresent() &&
!Strings.isNullOrEmpty(event.getValue())) {
return createKeyGeneratorEvent(databaseName,
keyGeneratorName.get(), event);
}
- Optional<String> auditorName =
ShardingNodeConverter.getAuditorNameByActiveVersionPath(event.getKey());
+ Optional<String> auditorName =
ShardingNodeConverter.getAuditorNodeConverter().getNameByActiveVersionPath(event.getKey());
if (auditorName.isPresent() &&
!Strings.isNullOrEmpty(event.getValue())) {
return createAuditorEvent(databaseName, auditorName.get(), event);
}
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 afa704f1ebe..54230e2ec0a 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,8 +19,9 @@ package org.apache.shardingsphere.sharding.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 java.util.Optional;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -30,14 +31,6 @@ import java.util.regex.Pattern;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class ShardingNodeConverter {
- private static final String ROOT_NODE = "sharding";
-
- private static final String TABLES_NODE = "tables";
-
- private static final String AUTO_TABLES_NODE = "auto_tables";
-
- private static final String BINDING_TABLES_NODE = "binding_tables";
-
private static final String DEFAULT_STRATEGIES_NODE = "default_strategies";
private static final String DEFAULT_DATABASE_STRATEGY_NODE =
"default_database_strategy";
@@ -50,182 +43,150 @@ public final class ShardingNodeConverter {
private static final String DEFAULT_SHARDING_COLUMN_NODE =
"default_sharding_column";
- private static final String SHARDING_ALGORITHMS_NODE = "algorithms";
+ private static final String SHARDING_CACHE_NODE = "sharding_cache";
- private static final String KEY_GENERATORS_NODE = "key_generators";
+ private static final String ACTIVE_VERSION = "/active_version$";
- private static final String AUDITORS_NODE = "auditors";
+ private static final RuleRootNodeConverter ROOT_NODE_CONVERTER = new
RuleRootNodeConverter("sharding");
- private static final String SHARDING_CACHE_NODE = "sharding_cache";
+ private static final RuleItemNodeConverter TABLE_NODE_CONVERTER = new
RuleItemNodeConverter(ROOT_NODE_CONVERTER, "tables");
- private static final String RULES_NODE_PREFIX =
"/([\\w\\-]+)/([\\w\\-]+)/rules/";
+ private static final RuleItemNodeConverter AUTO_TABLE_NODE_CONVERTER = new
RuleItemNodeConverter(ROOT_NODE_CONVERTER, "auto_tables");
- private static final String RULE_NAME_PATTERN = "/([\\w\\-]+)?";
+ private static final RuleItemNodeConverter BINDING_TABLE_NODE_CONVERTER =
new RuleItemNodeConverter(ROOT_NODE_CONVERTER, "binding_tables");
- private static final String RULE_ACTIVE_VERSION =
"/([\\w\\-]+)?/active_version$";
+ private static final RuleItemNodeConverter ALGORITHM_NODE_CONVERTER = new
RuleItemNodeConverter(ROOT_NODE_CONVERTER, "algorithms");
- private static final String ACTIVE_VERSION = "/active_version$";
+ private static final RuleItemNodeConverter KEY_GENERATOR_NODE_CONVERTER =
new RuleItemNodeConverter(ROOT_NODE_CONVERTER, "key_generators");
- /**
- * Get table name path.
- *
- * @param tableName table name
- * @return table name path
- */
- public static String getTableNamePath(final String tableName) {
- return String.join("/", TABLES_NODE, tableName);
- }
+ private static final RuleItemNodeConverter AUDITOR_NODE_CONVERTER = new
RuleItemNodeConverter(ROOT_NODE_CONVERTER, "auditors");
- /**
- * Get auto table name path.
- *
- * @param tableName table name
- * @return auto table name path
- */
- public static String getAutoTableNamePath(final String tableName) {
- return String.join("/", AUTO_TABLES_NODE, tableName);
- }
+ private static final RuleItemNodeConverter SHARDING_CACHE_NODE_CONVERTER =
new RuleItemNodeConverter(ROOT_NODE_CONVERTER, "sharding_cache");
/**
- * Get binding table name path.
+ * Get rule root node converter.
*
- * @param tableName table name
- * @return binding table name path
+ * @return rule root node converter
*/
- public static String getBindingTableNamePath(final String tableName) {
- return String.join("/", BINDING_TABLES_NODE, tableName);
+ public static RuleRootNodeConverter getRuleRootNodeConverter() {
+ return ROOT_NODE_CONVERTER;
}
/**
- * Get default database strategy path.
+ * Get table node converter.
*
- * @return default database strategy path
+ * @return table node converter
*/
- public static String getDefaultDatabaseStrategyPath() {
- return String.join("/", DEFAULT_STRATEGIES_NODE,
DEFAULT_DATABASE_STRATEGY_NODE);
+ public static RuleItemNodeConverter getTableNodeConverter() {
+ return TABLE_NODE_CONVERTER;
}
/**
- * Get default table strategy path.
+ * Get auto table node converter.
*
- * @return default table strategy path
+ * @return auto table node converter
*/
- public static String getDefaultTableStrategyPath() {
- return String.join("/", DEFAULT_STRATEGIES_NODE,
DEFAULT_TABLE_STRATEGY_NODE);
+ public static RuleItemNodeConverter getAutoTableNodeConverter() {
+ return AUTO_TABLE_NODE_CONVERTER;
}
/**
- * Get default key generate strategy path.
+ * Get binding table node converter.
*
- * @return default key generate path
+ * @return binding table node converter
*/
- public static String getDefaultKeyGenerateStrategyPath() {
- return String.join("/", DEFAULT_STRATEGIES_NODE,
DEFAULT_KEY_GENERATE_STRATEGY_NODE);
+ public static RuleItemNodeConverter getBindingTableNodeConverter() {
+ return BINDING_TABLE_NODE_CONVERTER;
}
/**
- * Get default audit strategy path.
+ * Get algorithm node converter.
*
- * @return default audit strategy path
+ * @return algorithm node converter
*/
- public static String getDefaultAuditStrategyPath() {
- return String.join("/", DEFAULT_STRATEGIES_NODE,
DEFAULT_AUDIT_STRATEGY_NODE);
+ public static RuleItemNodeConverter getAlgorithmNodeConverter() {
+ return ALGORITHM_NODE_CONVERTER;
}
/**
- * Get default sharding column path.
+ * Get key generator node converter.
*
- * @return default sharding column path
+ * @return key generator node converter
*/
- public static String getDefaultShardingColumnPath() {
- return String.join("/", DEFAULT_STRATEGIES_NODE,
DEFAULT_SHARDING_COLUMN_NODE);
+ public static RuleItemNodeConverter getKeyGeneratorNodeConverter() {
+ return KEY_GENERATOR_NODE_CONVERTER;
}
/**
- * Get sharding algorithm path.
+ * Get auditor node converter.
*
- * @param shardingAlgorithmName sharding algorithm name
- * @return sharding algorithm path
+ * @return auditor node converter
*/
- public static String getShardingAlgorithmPath(final String
shardingAlgorithmName) {
- return String.join("/", SHARDING_ALGORITHMS_NODE,
shardingAlgorithmName);
+ public static RuleItemNodeConverter getAuditorNodeConverter() {
+ return AUDITOR_NODE_CONVERTER;
}
/**
- * Get key generator path.
+ * Get sharding cache node converter.
*
- * @param keyGeneratorName key generator name
- * @return key generator path
+ * @return sharding cache node converter
*/
- public static String getKeyGeneratorPath(final String keyGeneratorName) {
- return String.join("/", KEY_GENERATORS_NODE, keyGeneratorName);
+ public static RuleItemNodeConverter getShardingCacheNodeConverter() {
+ return SHARDING_CACHE_NODE_CONVERTER;
}
/**
- * Get auditor path.
+ * Get default database strategy path.
*
- * @param auditorName auditor name
- * @return auditor path
+ * @return default database strategy path
*/
- public static String getAuditorPath(final String auditorName) {
- return String.join("/", AUDITORS_NODE, auditorName);
+ public static String getDefaultDatabaseStrategyPath() {
+ return String.join("/", DEFAULT_STRATEGIES_NODE,
DEFAULT_DATABASE_STRATEGY_NODE);
}
/**
- * Get sharding cache path.
+ * Get default table strategy path.
*
- * @return sharding cache path
+ * @return default table strategy path
*/
- public static String getShardingCachePath() {
- return String.join("/", SHARDING_CACHE_NODE);
+ public static String getDefaultTableStrategyPath() {
+ return String.join("/", DEFAULT_STRATEGIES_NODE,
DEFAULT_TABLE_STRATEGY_NODE);
}
/**
- * Is sharding path.
+ * Get default key generate strategy path.
*
- * @param rulePath rule path
- * @return true or false
+ * @return default key generate path
*/
- public static boolean isShardingPath(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE +
"/.*", Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find();
+ public static String getDefaultKeyGenerateStrategyPath() {
+ return String.join("/", DEFAULT_STRATEGIES_NODE,
DEFAULT_KEY_GENERATE_STRATEGY_NODE);
}
/**
- * Is sharding table path.
+ * Get default audit strategy path.
*
- * @param rulePath rule path
- * @return true or false
+ * @return default audit strategy path
*/
- public static boolean isTablePath(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ TABLES_NODE + "/.*", Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find();
+ public static String getDefaultAuditStrategyPath() {
+ return String.join("/", DEFAULT_STRATEGIES_NODE,
DEFAULT_AUDIT_STRATEGY_NODE);
}
/**
- * Is sharding auto table path.
+ * Get default sharding column path.
*
- * @param rulePath rule path
- * @return true or false
+ * @return default sharding column path
*/
- public static boolean isAutoTablePath(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ AUTO_TABLES_NODE + "/.*", Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find();
+ public static String getDefaultShardingColumnPath() {
+ return String.join("/", DEFAULT_STRATEGIES_NODE,
DEFAULT_SHARDING_COLUMN_NODE);
}
/**
- * Is binding table path.
+ * Get sharding cache path.
*
- * @param rulePath rule path
- * @return true or false
+ * @return sharding cache path
*/
- public static boolean isBindingTablePath(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ BINDING_TABLES_NODE + "/.*", Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find();
+ public static String getShardingCachePath() {
+ return String.join("/", SHARDING_CACHE_NODE);
}
/**
@@ -235,7 +196,7 @@ public final class ShardingNodeConverter {
* @return true or false
*/
public static boolean isDefaultDatabaseStrategyPath(final String rulePath)
{
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ DEFAULT_STRATEGIES_NODE + "/" + DEFAULT_DATABASE_STRATEGY_NODE + "$",
Pattern.CASE_INSENSITIVE);
+ Pattern pattern =
Pattern.compile(ROOT_NODE_CONVERTER.getRuleNodePrefix() + "/" +
DEFAULT_STRATEGIES_NODE + "/" + DEFAULT_DATABASE_STRATEGY_NODE + "$",
Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(rulePath);
return matcher.find();
}
@@ -247,7 +208,7 @@ public final class ShardingNodeConverter {
* @return true or false
*/
public static boolean isDefaultTableStrategyPath(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ DEFAULT_STRATEGIES_NODE + "/" + DEFAULT_TABLE_STRATEGY_NODE + "$",
Pattern.CASE_INSENSITIVE);
+ Pattern pattern =
Pattern.compile(ROOT_NODE_CONVERTER.getRuleNodePrefix() + "/" +
DEFAULT_STRATEGIES_NODE + "/" + DEFAULT_TABLE_STRATEGY_NODE + "$",
Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(rulePath);
return matcher.find();
}
@@ -259,7 +220,7 @@ public final class ShardingNodeConverter {
* @return true or false
*/
public static boolean isDefaultKeyGenerateStrategyPath(final String
rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ DEFAULT_STRATEGIES_NODE + "/" + DEFAULT_KEY_GENERATE_STRATEGY_NODE + "$",
Pattern.CASE_INSENSITIVE);
+ Pattern pattern =
Pattern.compile(ROOT_NODE_CONVERTER.getRuleNodePrefix() + "/" +
DEFAULT_STRATEGIES_NODE + "/" + DEFAULT_KEY_GENERATE_STRATEGY_NODE + "$",
Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(rulePath);
return matcher.find();
}
@@ -271,7 +232,7 @@ public final class ShardingNodeConverter {
* @return true or false
*/
public static boolean isDefaultAuditStrategyPath(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ DEFAULT_STRATEGIES_NODE + "/" + DEFAULT_AUDIT_STRATEGY_NODE + "$",
Pattern.CASE_INSENSITIVE);
+ Pattern pattern =
Pattern.compile(ROOT_NODE_CONVERTER.getRuleNodePrefix() + "/" +
DEFAULT_STRATEGIES_NODE + "/" + DEFAULT_AUDIT_STRATEGY_NODE + "$",
Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(rulePath);
return matcher.find();
}
@@ -283,43 +244,7 @@ public final class ShardingNodeConverter {
* @return true or false
*/
public static boolean isDefaultShardingColumnPath(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ DEFAULT_STRATEGIES_NODE + "/" + DEFAULT_SHARDING_COLUMN_NODE + "$",
Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find();
- }
-
- /**
- * Is sharding algorithm path.
- *
- * @param rulePath rule path
- * @return true or false
- */
- public static boolean isShardingAlgorithmPath(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ SHARDING_ALGORITHMS_NODE + "/.*", Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find();
- }
-
- /**
- * Is key generator path.
- *
- * @param rulePath rule path
- * @return true or false
- */
- public static boolean isKeyGeneratorPath(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ KEY_GENERATORS_NODE + "/.*", Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find();
- }
-
- /**
- * Is sharding auditor path.
- *
- * @param rulePath rule path
- * @return true or false
- */
- public static boolean isAuditorPath(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ AUDITORS_NODE + "/.*", Pattern.CASE_INSENSITIVE);
+ Pattern pattern =
Pattern.compile(ROOT_NODE_CONVERTER.getRuleNodePrefix() + "/" +
DEFAULT_STRATEGIES_NODE + "/" + DEFAULT_SHARDING_COLUMN_NODE + "$",
Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(rulePath);
return matcher.find();
}
@@ -331,119 +256,11 @@ public final class ShardingNodeConverter {
* @return true or false
*/
public static boolean isShardingCachePath(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ SHARDING_CACHE_NODE + "$", Pattern.CASE_INSENSITIVE);
+ Pattern pattern =
Pattern.compile(ROOT_NODE_CONVERTER.getRuleNodePrefix() + "/" +
SHARDING_CACHE_NODE + "$", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(rulePath);
return matcher.find();
}
- /**
- * Get sharding table name.
- *
- * @param rulePath rule path
- * @return sharding table name
- */
- public static Optional<String> getTableName(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ TABLES_NODE + RULE_NAME_PATTERN, Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
- }
-
- /**
- * Get auto table name.
- *
- * @param rulePath rule path
- * @return auto table name
- */
- public static Optional<String> getAutoTableName(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ AUTO_TABLES_NODE + RULE_NAME_PATTERN, Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
- }
-
- /**
- * Get binding table name.
- *
- * @param rulePath rule path
- * @return binding table name
- */
- public static Optional<String> getBindingTableName(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ BINDING_TABLES_NODE + RULE_NAME_PATTERN, Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
- }
-
- /**
- * Get sharding algorithm name.
- *
- * @param rulePath rule path
- * @return sharding algorithm name
- */
- public static Optional<String> getShardingAlgorithmName(final String
rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ SHARDING_ALGORITHMS_NODE + RULE_NAME_PATTERN, Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
- }
-
- /**
- * Get key generator name.
- *
- * @param rulePath rule path
- * @return key generator name
- */
- public static Optional<String> getKeyGeneratorName(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ KEY_GENERATORS_NODE + RULE_NAME_PATTERN, Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
- }
-
- /**
- * Get auditor name.
- *
- * @param rulePath rule path
- * @return auditor name
- */
- public static Optional<String> getAuditorName(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ AUDITORS_NODE + RULE_NAME_PATTERN, Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
- }
-
- /**
- * Get table name by active version path.
- *
- * @param activeVersionPath active version path
- * @return table name
- */
- public static Optional<String> getTableNameByActiveVersionPath(final
String activeVersionPath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ TABLES_NODE + RULE_ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(activeVersionPath);
- return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
- }
-
- /**
- * Get auto table name by active version path.
- *
- * @param activeVersionPath active version path
- * @return auto table name
- */
- public static Optional<String> getAutoTableNameByActiveVersionPath(final
String activeVersionPath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ AUTO_TABLES_NODE + RULE_ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(activeVersionPath);
- return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
- }
-
- /**
- * Get binding table name by active version path.
- *
- * @param activeVersionPath active version path
- * @return binding table name
- */
- public static Optional<String>
getBindingTableNameByActiveVersionPath(final String activeVersionPath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ BINDING_TABLES_NODE + RULE_ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(activeVersionPath);
- return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
- }
-
/**
* Is sharding algorithm with active version path.
*
@@ -451,7 +268,7 @@ public final class ShardingNodeConverter {
* @return true or false
*/
public static boolean isDefaultDatabaseStrategyWithActiveVersionPath(final
String activeVersionPath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ DEFAULT_STRATEGIES_NODE + "/" + DEFAULT_DATABASE_STRATEGY_NODE +
ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
+ Pattern pattern =
Pattern.compile(ROOT_NODE_CONVERTER.getRuleNodePrefix() + "/" +
DEFAULT_STRATEGIES_NODE + "/" + DEFAULT_DATABASE_STRATEGY_NODE +
ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(activeVersionPath);
return matcher.find();
}
@@ -463,7 +280,7 @@ public final class ShardingNodeConverter {
* @return true or false
*/
public static boolean isDefaultTableStrategyWithActiveVersionPath(final
String activeVersionPath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ DEFAULT_STRATEGIES_NODE + "/" + DEFAULT_TABLE_STRATEGY_NODE + ACTIVE_VERSION,
Pattern.CASE_INSENSITIVE);
+ Pattern pattern =
Pattern.compile(ROOT_NODE_CONVERTER.getRuleNodePrefix() + "/" +
DEFAULT_STRATEGIES_NODE + "/" + DEFAULT_TABLE_STRATEGY_NODE + ACTIVE_VERSION,
Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(activeVersionPath);
return matcher.find();
}
@@ -475,7 +292,8 @@ public final class ShardingNodeConverter {
* @return true or false
*/
public static boolean
isDefaultKeyGenerateStrategyWithActiveVersionPath(final String
activeVersionPath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ DEFAULT_STRATEGIES_NODE + "/" + DEFAULT_KEY_GENERATE_STRATEGY_NODE +
ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
+ Pattern pattern = Pattern.compile(
+ ROOT_NODE_CONVERTER.getRuleNodePrefix() + "/" +
DEFAULT_STRATEGIES_NODE + "/" + DEFAULT_KEY_GENERATE_STRATEGY_NODE +
ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(activeVersionPath);
return matcher.find();
}
@@ -487,7 +305,7 @@ public final class ShardingNodeConverter {
* @return true or false
*/
public static boolean isDefaultAuditStrategyWithActiveVersionPath(final
String activeVersionPath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ DEFAULT_STRATEGIES_NODE + "/" + DEFAULT_AUDIT_STRATEGY_NODE + ACTIVE_VERSION,
Pattern.CASE_INSENSITIVE);
+ Pattern pattern =
Pattern.compile(ROOT_NODE_CONVERTER.getRuleNodePrefix() + "/" +
DEFAULT_STRATEGIES_NODE + "/" + DEFAULT_AUDIT_STRATEGY_NODE + ACTIVE_VERSION,
Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(activeVersionPath);
return matcher.find();
}
@@ -499,47 +317,11 @@ public final class ShardingNodeConverter {
* @return true or false
*/
public static boolean isDefaultShardingColumnWithActiveVersionPath(final
String activeVersionPath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ DEFAULT_STRATEGIES_NODE + "/" + DEFAULT_SHARDING_COLUMN_NODE +
ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
+ Pattern pattern =
Pattern.compile(ROOT_NODE_CONVERTER.getRuleNodePrefix() + "/" +
DEFAULT_STRATEGIES_NODE + "/" + DEFAULT_SHARDING_COLUMN_NODE + ACTIVE_VERSION,
Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(activeVersionPath);
return matcher.find();
}
- /**
- * Get sharding algorithm name by active version path.
- *
- * @param activeVersionPath active version path
- * @return sharding algorithm name
- */
- public static Optional<String>
getShardingAlgorithmNameByActiveVersionPath(final String activeVersionPath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ SHARDING_ALGORITHMS_NODE + RULE_ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(activeVersionPath);
- return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
- }
-
- /**
- * Get key generator name by active version path.
- *
- * @param activeVersionPath active version path
- * @return key generator name
- */
- public static Optional<String>
getKeyGeneratorNameByActiveVersionPath(final String activeVersionPath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ KEY_GENERATORS_NODE + RULE_ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(activeVersionPath);
- return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
- }
-
- /**
- * Get auditor name by active version path.
- *
- * @param activeVersionPath active version path
- * @return auditor name
- */
- public static Optional<String> getAuditorNameByActiveVersionPath(final
String activeVersionPath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ AUDITORS_NODE + RULE_ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(activeVersionPath);
- return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
- }
-
/**
* Is sharding cache with active version path.
*
@@ -547,7 +329,7 @@ public final class ShardingNodeConverter {
* @return true or false
*/
public static boolean isShardingCacheWithActiveVersionPath(final String
activeVersionPath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/"
+ SHARDING_CACHE_NODE + ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
+ Pattern pattern =
Pattern.compile(ROOT_NODE_CONVERTER.getRuleNodePrefix() + "/" +
SHARDING_CACHE_NODE + ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(activeVersionPath);
return matcher.find();
}
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 25bb36672c5..96158416a5c 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
@@ -84,13 +84,14 @@ 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.getShardingAlgorithmPath(each.getKey()),
YamlEngine.marshal(algorithmSwapper.swapToYamlConfiguration(each.getValue()))));
+ result.add(new
YamlDataNode(ShardingNodeConverter.getAlgorithmNodeConverter().getNamePath(each.getKey()),
YamlEngine.marshal(algorithmSwapper.swapToYamlConfiguration(each.getValue()))));
}
for (Entry<String, AlgorithmConfiguration> each :
data.getKeyGenerators().entrySet()) {
- result.add(new
YamlDataNode(ShardingNodeConverter.getKeyGeneratorPath(each.getKey()),
YamlEngine.marshal(algorithmSwapper.swapToYamlConfiguration(each.getValue()))));
+ result.add(new YamlDataNode(
+
ShardingNodeConverter.getKeyGeneratorNodeConverter().getNamePath(each.getKey()),
YamlEngine.marshal(algorithmSwapper.swapToYamlConfiguration(each.getValue()))));
}
for (Entry<String, AlgorithmConfiguration> each :
data.getAuditors().entrySet()) {
- result.add(new
YamlDataNode(ShardingNodeConverter.getAuditorPath(each.getKey()),
YamlEngine.marshal(algorithmSwapper.swapToYamlConfiguration(each.getValue()))));
+ result.add(new
YamlDataNode(ShardingNodeConverter.getAuditorNodeConverter().getNamePath(each.getKey()),
YamlEngine.marshal(algorithmSwapper.swapToYamlConfiguration(each.getValue()))));
}
}
@@ -115,13 +116,14 @@ public final class
NewYamlShardingRuleConfigurationSwapper implements NewYamlRul
private void swapTableRules(final ShardingRuleConfiguration data, final
Collection<YamlDataNode> result) {
for (ShardingTableRuleConfiguration each : data.getTables()) {
- result.add(new
YamlDataNode(ShardingNodeConverter.getTableNamePath(each.getLogicTable()),
YamlEngine.marshal(tableSwapper.swapToYamlConfiguration(each))));
+ result.add(new
YamlDataNode(ShardingNodeConverter.getTableNodeConverter().getNamePath(each.getLogicTable()),
YamlEngine.marshal(tableSwapper.swapToYamlConfiguration(each))));
}
for (ShardingAutoTableRuleConfiguration each : data.getAutoTables()) {
- result.add(new
YamlDataNode(ShardingNodeConverter.getAutoTableNamePath(each.getLogicTable()),
YamlEngine.marshal(autoTableYamlSwapper.swapToYamlConfiguration(each))));
+ result.add(new
YamlDataNode(ShardingNodeConverter.getAutoTableNodeConverter().getNamePath(each.getLogicTable()),
YamlEngine.marshal(autoTableYamlSwapper.swapToYamlConfiguration(each))));
}
for (ShardingTableReferenceRuleConfiguration each :
data.getBindingTableGroups()) {
- result.add(new
YamlDataNode(ShardingNodeConverter.getBindingTableNamePath(each.getName()),
YamlShardingTableReferenceRuleConfigurationConverter.convertToYamlString(each)));
+ result.add(new YamlDataNode(
+
ShardingNodeConverter.getBindingTableNodeConverter().getNamePath(each.getName()),
YamlShardingTableReferenceRuleConfigurationConverter.convertToYamlString(each)));
}
}
@@ -129,14 +131,14 @@ public final class
NewYamlShardingRuleConfigurationSwapper implements NewYamlRul
public ShardingRuleConfiguration swapToObject(final
Collection<YamlDataNode> dataNodes) {
ShardingRuleConfiguration result = new ShardingRuleConfiguration();
for (YamlDataNode each : dataNodes) {
- if (ShardingNodeConverter.isTablePath(each.getKey())) {
- ShardingNodeConverter.getTableName(each.getKey())
+ if
(ShardingNodeConverter.getTableNodeConverter().isPath(each.getKey())) {
+
ShardingNodeConverter.getTableNodeConverter().getName(each.getKey())
.ifPresent(tableName ->
result.getTables().add(tableSwapper.swapToObject(YamlEngine.unmarshal(each.getValue(),
YamlTableRuleConfiguration.class))));
- } else if (ShardingNodeConverter.isAutoTablePath(each.getKey())) {
- ShardingNodeConverter.getAutoTableName(each.getKey())
+ } else if
(ShardingNodeConverter.getAutoTableNodeConverter().isPath(each.getKey())) {
+
ShardingNodeConverter.getAutoTableNodeConverter().getName(each.getKey())
.ifPresent(autoTableName ->
result.getAutoTables().add(autoTableYamlSwapper.swapToObject(YamlEngine.unmarshal(each.getValue(),
YamlShardingAutoTableRuleConfiguration.class))));
- } else if
(ShardingNodeConverter.isBindingTablePath(each.getKey())) {
- ShardingNodeConverter.getBindingTableName(each.getKey())
+ } else if
(ShardingNodeConverter.getBindingTableNodeConverter().isPath(each.getKey())) {
+
ShardingNodeConverter.getBindingTableNodeConverter().getName(each.getKey())
.ifPresent(bindingTableName ->
result.getBindingTableGroups().add(YamlShardingTableReferenceRuleConfigurationConverter.convertToObject(each.getValue())));
} else if
(ShardingNodeConverter.isDefaultDatabaseStrategyPath(each.getKey())) {
result.setDefaultDatabaseShardingStrategy(shardingStrategySwapper.swapToObject(YamlEngine.unmarshal(each.getValue(),
YamlShardingStrategyConfiguration.class)));
@@ -148,16 +150,16 @@ public final class
NewYamlShardingRuleConfigurationSwapper implements NewYamlRul
result.setDefaultAuditStrategy(auditStrategySwapper.swapToObject(YamlEngine.unmarshal(each.getValue(),
YamlShardingAuditStrategyConfiguration.class)));
} else if
(ShardingNodeConverter.isDefaultShardingColumnPath(each.getKey())) {
result.setDefaultShardingColumn(each.getValue());
- } else if
(ShardingNodeConverter.isShardingAlgorithmPath(each.getKey())) {
- ShardingNodeConverter.getShardingAlgorithmName(each.getKey())
+ } else if
(ShardingNodeConverter.getAlgorithmNodeConverter().isPath(each.getKey())) {
+
ShardingNodeConverter.getAlgorithmNodeConverter().getName(each.getKey())
.ifPresent(algorithmName ->
result.getShardingAlgorithms().put(algorithmName,
algorithmSwapper.swapToObject(YamlEngine.unmarshal(each.getValue(),
YamlAlgorithmConfiguration.class))));
- } else if
(ShardingNodeConverter.isKeyGeneratorPath(each.getKey())) {
- ShardingNodeConverter.getKeyGeneratorName(each.getKey())
+ } else if
(ShardingNodeConverter.getKeyGeneratorNodeConverter().isPath(each.getKey())) {
+
ShardingNodeConverter.getKeyGeneratorNodeConverter().getName(each.getKey())
.ifPresent(keyGeneratorName ->
result.getKeyGenerators().put(keyGeneratorName,
algorithmSwapper.swapToObject(YamlEngine.unmarshal(each.getValue(),
YamlAlgorithmConfiguration.class))));
- } else if (ShardingNodeConverter.isAuditorPath(each.getKey())) {
- ShardingNodeConverter.getAuditorName(each.getKey())
+ } else if
(ShardingNodeConverter.getAuditorNodeConverter().isPath(each.getKey())) {
+
ShardingNodeConverter.getAuditorNodeConverter().getName(each.getKey())
.ifPresent(auditorName ->
result.getAuditors().put(auditorName,
algorithmSwapper.swapToObject(YamlEngine.unmarshal(each.getValue(),
YamlAlgorithmConfiguration.class))));
} else if
(ShardingNodeConverter.isShardingCachePath(each.getKey())) {
result.setShardingCache(shardingCacheYamlSwapper.swapToObject(YamlEngine.unmarshal(each.getValue(),
YamlShardingCacheConfiguration.class)));
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/converter/ShardingNodeConverterTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/converter/ShardingNodeConverterTest.java
deleted file mode 100644
index b51a32e650e..00000000000
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/converter/ShardingNodeConverterTest.java
+++ /dev/null
@@ -1,234 +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.sharding.metadata.converter;
-
-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 ShardingNodeConverterTest {
-
- @Test
- void assertGetTableNamePath() {
- assertThat(ShardingNodeConverter.getTableNamePath("foo_table"),
is("tables/foo_table"));
- }
-
- @Test
- void assertGetAutoTableNamePath() {
-
assertThat(ShardingNodeConverter.getAutoTableNamePath("foo_auto_table"),
is("auto_tables/foo_auto_table"));
- }
-
- @Test
- void assertGetBindingTableNamePath() {
-
assertThat(ShardingNodeConverter.getBindingTableNamePath("foo_binding_table"),
is("binding_tables/foo_binding_table"));
- }
-
- @Test
- void assertGetDefaultDatabaseStrategyPath() {
- assertThat(ShardingNodeConverter.getDefaultDatabaseStrategyPath(),
is("default_strategies/default_database_strategy"));
- }
-
- @Test
- void assertGetDefaultTableStrategyPath() {
- assertThat(ShardingNodeConverter.getDefaultTableStrategyPath(),
is("default_strategies/default_table_strategy"));
- }
-
- @Test
- void assertGetDefaultKeyGenerateStrategyPath() {
- assertThat(ShardingNodeConverter.getDefaultKeyGenerateStrategyPath(),
is("default_strategies/default_key_generate_strategy"));
- }
-
- @Test
- void assertGetDefaultAuditStrategyPath() {
- assertThat(ShardingNodeConverter.getDefaultAuditStrategyPath(),
is("default_strategies/default_audit_strategy"));
- }
-
- @Test
- void assertGetDefaultShardingColumnPath() {
- assertThat(ShardingNodeConverter.getDefaultShardingColumnPath(),
is("default_strategies/default_sharding_column"));
- }
-
- @Test
- void assertGetShardingAlgorithmPath() {
- assertThat(ShardingNodeConverter.getShardingAlgorithmPath("MOD"),
is("algorithms/MOD"));
- }
-
- @Test
- void assertGetKeyGeneratorPath() {
- assertThat(ShardingNodeConverter.getKeyGeneratorPath("DEFAULT"),
is("key_generators/DEFAULT"));
- }
-
- @Test
- void assertGetAuditorPath() {
-
assertThat(ShardingNodeConverter.getAuditorPath("DML_SHARDING_CONDITIONS"),
is("auditors/DML_SHARDING_CONDITIONS"));
- }
-
- @Test
- void assertGetShardingCachePath() {
- assertThat(ShardingNodeConverter.getShardingCachePath(),
is("sharding_cache"));
- }
-
- @Test
- void assertCheckIsTargetRuleByRulePath() {
-
assertTrue(ShardingNodeConverter.isShardingPath("/metadata/foo_db/rules/sharding/tables/foo_table"));
-
assertFalse(ShardingNodeConverter.isShardingPath("/metadata/foo_db/rules/foo/tables/foo_table"));
-
assertTrue(ShardingNodeConverter.isTablePath("/metadata/foo_db/rules/sharding/tables/foo_table"));
-
assertFalse(ShardingNodeConverter.isTablePath("/metadata/foo_db/rules/sharding/algorithms/MD5"));
-
assertTrue(ShardingNodeConverter.isAutoTablePath("/metadata/foo_db/rules/sharding/auto_tables/foo_table"));
-
assertFalse(ShardingNodeConverter.isAutoTablePath("/metadata/foo_db/rules/sharding/algorithms/MD5"));
-
assertTrue(ShardingNodeConverter.isBindingTablePath("/metadata/foo_db/rules/sharding/binding_tables/foo_table"));
-
assertFalse(ShardingNodeConverter.isBindingTablePath("/metadata/foo_db/rules/sharding/algorithms/MD5"));
-
assertTrue(ShardingNodeConverter.isDefaultDatabaseStrategyPath("/metadata/foo_db/rules/sharding/default_strategies/default_database_strategy"));
-
assertFalse(ShardingNodeConverter.isDefaultDatabaseStrategyPath("/metadata/foo_db/rules/sharding/default_strategies/default_database_strategy/foo"));
-
assertTrue(ShardingNodeConverter.isDefaultTableStrategyPath("/metadata/foo_db/rules/sharding/default_strategies/default_table_strategy"));
-
assertFalse(ShardingNodeConverter.isDefaultTableStrategyPath("/metadata/foo_db/rules/sharding/default_strategies/default_table_strategy/foo"));
-
assertTrue(ShardingNodeConverter.isDefaultKeyGenerateStrategyPath("/metadata/foo_db/rules/sharding/default_strategies/default_key_generate_strategy"));
-
assertFalse(ShardingNodeConverter.isDefaultKeyGenerateStrategyPath("/metadata/foo_db/rules/sharding/default_strategies/default_key_generate_strategy/foo"));
-
assertTrue(ShardingNodeConverter.isDefaultAuditStrategyPath("/metadata/foo_db/rules/sharding/default_strategies/default_audit_strategy"));
-
assertFalse(ShardingNodeConverter.isDefaultAuditStrategyPath("/metadata/foo_db/rules/sharding/default_strategies/default_audit_strategy/foo"));
-
assertTrue(ShardingNodeConverter.isDefaultShardingColumnPath("/metadata/foo_db/rules/sharding/default_strategies/default_sharding_column"));
-
assertFalse(ShardingNodeConverter.isDefaultShardingColumnPath("/metadata/foo_db/rules/sharding/default_strategies/default_sharding_column/foo"));
-
assertTrue(ShardingNodeConverter.isShardingAlgorithmPath("/metadata/foo_db/rules/sharding/algorithms/foo_table"));
-
assertFalse(ShardingNodeConverter.isShardingAlgorithmPath("/metadata/foo_db/rules/sharding/key_generators/foo"));
-
assertTrue(ShardingNodeConverter.isKeyGeneratorPath("/metadata/foo_db/rules/sharding/key_generators/foo"));
-
assertFalse(ShardingNodeConverter.isKeyGeneratorPath("/metadata/foo_db/rules/sharding/algorithms/MD5"));
-
assertTrue(ShardingNodeConverter.isAuditorPath("/metadata/foo_db/rules/sharding/auditors/foo"));
-
assertFalse(ShardingNodeConverter.isAuditorPath("/metadata/foo_db/rules/sharding/algorithms/MD5"));
-
assertTrue(ShardingNodeConverter.isShardingCachePath("/metadata/foo_db/rules/sharding/sharding_cache"));
-
assertFalse(ShardingNodeConverter.isShardingCachePath("/metadata/foo_db/rules/sharding/sharding_cache/foo"));
- }
-
- @Test
- void assertGetTableNameByRulePath() {
- Optional<String> actual =
ShardingNodeConverter.getTableName("/metadata/foo_db/rules/sharding/tables/foo_table");
- assertTrue(actual.isPresent());
- assertThat(actual.get(), is("foo_table"));
- }
-
- @Test
- void assertGetAutoTableNameByRulePath() {
- Optional<String> actual =
ShardingNodeConverter.getAutoTableName("/metadata/foo_db/rules/sharding/auto_tables/foo_table");
- assertTrue(actual.isPresent());
- assertThat(actual.get(), is("foo_table"));
- }
-
- @Test
- void assertGetBindingTableNameByRulePath() {
- Optional<String> actual =
ShardingNodeConverter.getBindingTableName("/metadata/foo_db/rules/sharding/binding_tables/foo_table");
- assertTrue(actual.isPresent());
- assertThat(actual.get(), is("foo_table"));
- }
-
- @Test
- void assertGetAlgorithmNameByRulePath() {
- Optional<String> actual =
ShardingNodeConverter.getShardingAlgorithmName("/metadata/foo_db/rules/sharding/algorithms/foo");
- assertTrue(actual.isPresent());
- assertThat(actual.get(), is("foo"));
- }
-
- @Test
- void assertGetKeyGeneratorNameByRulePath() {
- Optional<String> actual =
ShardingNodeConverter.getKeyGeneratorName("/metadata/foo_db/rules/sharding/key_generators/foo");
- assertTrue(actual.isPresent());
- assertThat(actual.get(), is("foo"));
- }
-
- @Test
- void assertGetAuditorNameByRulePath() {
- Optional<String> actual =
ShardingNodeConverter.getAuditorName("/metadata/foo_db/rules/sharding/auditors/foo");
- assertTrue(actual.isPresent());
- assertThat(actual.get(), is("foo"));
- }
-
- @Test
- void assertGetTableNameByActiveVersionPath() {
- Optional<String> actual =
ShardingNodeConverter.getTableNameByActiveVersionPath("/metadata/foo_db/rules/sharding/tables/foo_table/active_version");
- assertTrue(actual.isPresent());
- assertThat(actual.get(), is("foo_table"));
- }
-
- @Test
- void assertGetAutoTableNameByActiveVersionPath() {
- Optional<String> actual =
ShardingNodeConverter.getAutoTableNameByActiveVersionPath("/metadata/foo_db/rules/sharding/auto_tables/foo_table/active_version");
- assertTrue(actual.isPresent());
- assertThat(actual.get(), is("foo_table"));
- }
-
- @Test
- void assertGetBindingTableNameByActiveVersionPath() {
- Optional<String> actual =
ShardingNodeConverter.getBindingTableNameByActiveVersionPath("/metadata/foo_db/rules/sharding/binding_tables/c018fb3cd8e530dd/active_version");
- assertTrue(actual.isPresent());
- assertThat(actual.get(), is("c018fb3cd8e530dd"));
- }
-
- @Test
- void assertIsDefaultDatabaseStrategyByActiveVersionPath() {
-
assertTrue(ShardingNodeConverter.isDefaultDatabaseStrategyWithActiveVersionPath("/metadata/foo_db/rules/sharding/default_strategies/default_database_strategy/active_version"));
- }
-
- @Test
- void assertIsDefaultTableStrategyByActiveVersionPath() {
-
assertTrue(ShardingNodeConverter.isDefaultTableStrategyWithActiveVersionPath("/metadata/foo_db/rules/sharding/default_strategies/default_table_strategy/active_version"));
- }
-
- @Test
- void assertIsDefaultKeyGenerateStrategyByActiveVersionPath() {
-
assertTrue(ShardingNodeConverter.isDefaultKeyGenerateStrategyWithActiveVersionPath("/metadata/foo_db/rules/sharding/default_strategies/default_key_generate_strategy/active_version"));
- }
-
- @Test
- void assertIsDefaultAuditStrategyByActiveVersionPath() {
-
assertTrue(ShardingNodeConverter.isDefaultAuditStrategyWithActiveVersionPath("/metadata/foo_db/rules/sharding/default_strategies/default_audit_strategy/active_version"));
- }
-
- @Test
- void assertIsDefaultShardingColumnByActiveVersionPath() {
-
assertTrue(ShardingNodeConverter.isDefaultShardingColumnWithActiveVersionPath("/metadata/foo_db/rules/sharding/default_strategies/default_sharding_column/active_version"));
- }
-
- @Test
- void assertGetShardingAlgorithmByActiveVersionPath() {
- Optional<String> actual =
ShardingNodeConverter.getShardingAlgorithmNameByActiveVersionPath("/metadata/foo_db/rules/sharding/algorithms/foo_table_algorithm/active_version");
- assertTrue(actual.isPresent());
- assertThat(actual.get(), is("foo_table_algorithm"));
- }
-
- @Test
- void assertGetKeyGeneratorByActiveVersionPath() {
- Optional<String> actual =
ShardingNodeConverter.getKeyGeneratorNameByActiveVersionPath("/metadata/foo_db/rules/sharding/key_generators/foo_table_key_generator/active_version");
- assertTrue(actual.isPresent());
- assertThat(actual.get(), is("foo_table_key_generator"));
- }
-
- @Test
- void assertGetAuditorByActiveVersionPath() {
- Optional<String> actual =
ShardingNodeConverter.getAuditorNameByActiveVersionPath("/metadata/foo_db/rules/sharding/auditors/foo_table_auditor/active_version");
- assertTrue(actual.isPresent());
- assertThat(actual.get(), is("foo_table_auditor"));
- }
-
- @Test
- void assertGetShardingCacheByActiveVersionPath() {
-
assertTrue(ShardingNodeConverter.isShardingCacheWithActiveVersionPath("/metadata/foo_db/rules/sharding/sharding_cache/active_version"));
- }
-}