This is an automated email from the ASF dual-hosted git repository.
zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 1425b0a0f20 Refactor DatabaseRuleMetaDataNode (#34276)
1425b0a0f20 is described below
commit 1425b0a0f205e7bc23b7c58b2dd31c515304068c
Author: Liang Zhang <[email protected]>
AuthorDate: Wed Jan 8 01:48:50 2025 +0800
Refactor DatabaseRuleMetaDataNode (#34276)
* Refactor DatabaseRuleMetaDataNode
* Refactor DatabaseRuleMetaDataNode
---
.../node/metadata/DatabaseRuleMetaDataNode.java | 110 ---------------------
.../metadata/DatabaseRuleMetaDataNodePath.java | 106 ++++++++++++++++++++
.../database/DatabaseRulePersistService.java | 18 ++--
.../metadata/DatabaseRuleMetaDataNodePathTest.java | 55 +++++++++++
.../metadata/DatabaseRuleMetaDataNodeTest.java | 45 ---------
5 files changed, 170 insertions(+), 164 deletions(-)
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DatabaseRuleMetaDataNode.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DatabaseRuleMetaDataNode.java
deleted file mode 100644
index 87912a04965..00000000000
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DatabaseRuleMetaDataNode.java
+++ /dev/null
@@ -1,110 +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.metadata.persist.node.metadata;
-
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-
-/**
- * Database rule meta data node.
- */
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class DatabaseRuleMetaDataNode {
-
- private static final String ROOT_NODE = "metadata";
-
- private static final String RULE_NODE = "rules";
-
- private static final String ACTIVE_VERSION = "active_version";
-
- private static final String VERSIONS = "versions";
-
- /**
- * Get database rule active version node.
- *
- * @param databaseName database name
- * @param ruleName rule name
- * @param key key
- * @return database rule active version node
- */
- public static String getDatabaseRuleActiveVersionNode(final String
databaseName, final String ruleName, final String key) {
- return String.join("/", getDatabaseRuleNode(databaseName, ruleName),
key, ACTIVE_VERSION);
- }
-
- /**
- * Get database rule versions node.
- *
- * @param databaseName database name
- * @param ruleName rule name
- * @param key key
- * @return database rule versions node
- */
- public static String getDatabaseRuleVersionsNode(final String
databaseName, final String ruleName, final String key) {
- return String.join("/", getDatabaseRuleNode(databaseName, ruleName),
key, VERSIONS);
- }
-
- /**
- * Get database rule version node.
- *
- * @param databaseName database name
- * @param ruleName rule name
- * @param key key
- * @param version version
- * @return database rule next version
- */
- public static String getDatabaseRuleVersionNode(final String databaseName,
final String ruleName, final String key, final String version) {
- return String.join("/", getDatabaseRuleNode(databaseName, ruleName),
key, VERSIONS, version);
- }
-
- /**
- * Get database rule node.
- *
- * @param databaseName database name
- * @param ruleName rule name
- * @param key key
- * @return database rule node without version
- */
- public static String getDatabaseRuleNode(final String databaseName, final
String ruleName, final String key) {
- return String.join("/", getDatabaseRuleNode(databaseName, ruleName),
key);
- }
-
- /**
- * Get database rule root node.
- *
- * @param databaseName database name
- * @param ruleName rule name
- * @return database rule root node
- */
- public static String getDatabaseRuleNode(final String databaseName, final
String ruleName) {
- return String.join("/", getRulesNode(databaseName), ruleName);
- }
-
- /**
- * Get database rules node.
- *
- * @param databaseName database name
- * @return database rules node
- */
- public static String getRulesNode(final String databaseName) {
- return String.join("/", getMetaDataNode(), databaseName, RULE_NODE);
- }
-
- private static String getMetaDataNode() {
- return String.join("/", "", ROOT_NODE);
- }
-}
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DatabaseRuleMetaDataNodePath.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DatabaseRuleMetaDataNodePath.java
new file mode 100644
index 00000000000..1daa0ea87d1
--- /dev/null
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DatabaseRuleMetaDataNodePath.java
@@ -0,0 +1,106 @@
+/*
+ * 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.metadata.persist.node.metadata;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+
+/**
+ * Database rule meta data node path.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class DatabaseRuleMetaDataNodePath {
+
+ private static final String ROOT_NODE = "/metadata";
+
+ private static final String RULE_NODE = "rules";
+
+ private static final String VERSIONS_NODE = "versions";
+
+ private static final String ACTIVE_VERSION_NODE = "active_version";
+
+ /**
+ * Get database root path.
+ *
+ * @param databaseName database name
+ * @return database root path
+ */
+ public static String getRootPath(final String databaseName) {
+ return String.join("/", ROOT_NODE, databaseName, RULE_NODE);
+ }
+
+ /**
+ * Get database rule path.
+ *
+ * @param databaseName database name
+ * @param ruleTypeName rule type name
+ * @return database rule path
+ */
+ public static String getRulePath(final String databaseName, final String
ruleTypeName) {
+ return String.join("/", getRootPath(databaseName), ruleTypeName);
+ }
+
+ /**
+ * Get database rule path.
+ *
+ * @param databaseName database name
+ * @param ruleTypeName rule type name
+ * @param key key
+ * @return database rule path without version
+ */
+ public static String getRulePath(final String databaseName, final String
ruleTypeName, final String key) {
+ return String.join("/", getRulePath(databaseName, ruleTypeName), key);
+ }
+
+ /**
+ * Get database rule versions path.
+ *
+ * @param databaseName database name
+ * @param ruleTypeName rule type name
+ * @param key key
+ * @return database rule versions path
+ */
+ public static String getVersionsPath(final String databaseName, final
String ruleTypeName, final String key) {
+ return String.join("/", getRulePath(databaseName, ruleTypeName, key),
VERSIONS_NODE);
+ }
+
+ /**
+ * Get database rule version path.
+ *
+ * @param databaseName database name
+ * @param ruleTypeName rule type name
+ * @param key key
+ * @param version version
+ * @return database rule next version
+ */
+ public static String getVersionPath(final String databaseName, final
String ruleTypeName, final String key, final String version) {
+ return String.join("/", getVersionsPath(databaseName, ruleTypeName,
key), version);
+ }
+
+ /**
+ * Get database rule active version path.
+ *
+ * @param databaseName database name
+ * @param ruleTypeName rule type name
+ * @param key key
+ * @return database rule active version path
+ */
+ public static String getActiveVersionPath(final String databaseName, final
String ruleTypeName, final String key) {
+ return String.join("/", getRulePath(databaseName, ruleTypeName, key),
ACTIVE_VERSION_NODE);
+ }
+}
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DatabaseRulePersistService.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DatabaseRulePersistService.java
index 11ab3859480..464ad354eda 100644
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DatabaseRulePersistService.java
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DatabaseRulePersistService.java
@@ -22,7 +22,7 @@ import
org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
import
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
import
org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlRuleConfigurationSwapperEngine;
-import
org.apache.shardingsphere.metadata.persist.node.metadata.DatabaseRuleMetaDataNode;
+import
org.apache.shardingsphere.metadata.persist.node.metadata.DatabaseRuleMetaDataNodePath;
import
org.apache.shardingsphere.metadata.persist.service.config.RepositoryTuplePersistService;
import
org.apache.shardingsphere.metadata.persist.service.version.MetaDataVersionPersistService;
import org.apache.shardingsphere.mode.spi.PersistRepository;
@@ -60,7 +60,7 @@ public final class DatabaseRulePersistService {
* @return configurations
*/
public Collection<RuleConfiguration> load(final String databaseName) {
- return new
RepositoryTupleSwapperEngine().swapToRuleConfigurations(repositoryTuplePersistService.load(DatabaseRuleMetaDataNode.getRulesNode(databaseName)));
+ return new
RepositoryTupleSwapperEngine().swapToRuleConfigurations(repositoryTuplePersistService.load(DatabaseRuleMetaDataNodePath.getRootPath(databaseName)));
}
/**
@@ -85,19 +85,19 @@ public final class DatabaseRulePersistService {
private Collection<MetaDataVersion> persistDataNodes(final String
databaseName, final String ruleName, final Collection<RepositoryTuple>
repositoryTuples) {
Collection<MetaDataVersion> result = new LinkedList<>();
for (RepositoryTuple each : repositoryTuples) {
- List<String> versions =
metaDataVersionPersistService.getVersions(DatabaseRuleMetaDataNode.getDatabaseRuleVersionsNode(databaseName,
ruleName, each.getKey()));
+ List<String> versions =
metaDataVersionPersistService.getVersions(DatabaseRuleMetaDataNodePath.getVersionsPath(databaseName,
ruleName, each.getKey()));
String nextVersion = versions.isEmpty() ?
MetaDataVersion.DEFAULT_VERSION :
String.valueOf(Integer.parseInt(versions.get(0)) + 1);
-
repository.persist(DatabaseRuleMetaDataNode.getDatabaseRuleVersionNode(databaseName,
ruleName, each.getKey(), nextVersion), each.getValue());
+
repository.persist(DatabaseRuleMetaDataNodePath.getVersionPath(databaseName,
ruleName, each.getKey(), nextVersion), each.getValue());
if (Strings.isNullOrEmpty(getActiveVersion(databaseName, ruleName,
each.getKey()))) {
-
repository.persist(DatabaseRuleMetaDataNode.getDatabaseRuleActiveVersionNode(databaseName,
ruleName, each.getKey()), MetaDataVersion.DEFAULT_VERSION);
+
repository.persist(DatabaseRuleMetaDataNodePath.getActiveVersionPath(databaseName,
ruleName, each.getKey()), MetaDataVersion.DEFAULT_VERSION);
}
- result.add(new
MetaDataVersion(DatabaseRuleMetaDataNode.getDatabaseRuleNode(databaseName,
ruleName, each.getKey()), getActiveVersion(databaseName, ruleName,
each.getKey()), nextVersion));
+ result.add(new
MetaDataVersion(DatabaseRuleMetaDataNodePath.getRulePath(databaseName,
ruleName, each.getKey()), getActiveVersion(databaseName, ruleName,
each.getKey()), nextVersion));
}
return result;
}
private String getActiveVersion(final String databaseName, final String
ruleName, final String key) {
- return
repository.query(DatabaseRuleMetaDataNode.getDatabaseRuleActiveVersionNode(databaseName,
ruleName, key));
+ return
repository.query(DatabaseRuleMetaDataNodePath.getActiveVersionPath(databaseName,
ruleName, key));
}
/**
@@ -107,7 +107,7 @@ public final class DatabaseRulePersistService {
* @param ruleTypeName rule type name
*/
public void delete(final String databaseName, final String ruleTypeName) {
-
repository.delete(DatabaseRuleMetaDataNode.getDatabaseRuleNode(databaseName,
ruleTypeName));
+
repository.delete(DatabaseRuleMetaDataNodePath.getRulePath(databaseName,
ruleTypeName));
}
/**
@@ -135,7 +135,7 @@ public final class DatabaseRulePersistService {
private Collection<MetaDataVersion> delete(final String databaseName,
final String ruleName, final Collection<RepositoryTuple> repositoryTuples) {
Collection<MetaDataVersion> result = new LinkedList<>();
for (RepositoryTuple each : repositoryTuples) {
- String toBeDeletedKey =
DatabaseRuleMetaDataNode.getDatabaseRuleNode(databaseName, ruleName,
each.getKey());
+ String toBeDeletedKey =
DatabaseRuleMetaDataNodePath.getRulePath(databaseName, ruleName, each.getKey());
repository.delete(toBeDeletedKey);
result.add(new MetaDataVersion(toBeDeletedKey));
}
diff --git
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/DatabaseRuleMetaDataNodePathTest.java
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/DatabaseRuleMetaDataNodePathTest.java
new file mode 100644
index 00000000000..8afb5d95e8f
--- /dev/null
+++
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/DatabaseRuleMetaDataNodePathTest.java
@@ -0,0 +1,55 @@
+/*
+ * 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.metadata.persist.node.metadata;
+
+import org.junit.jupiter.api.Test;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+class DatabaseRuleMetaDataNodePathTest {
+
+ @Test
+ void assertGetRootPath() {
+ assertThat(DatabaseRuleMetaDataNodePath.getRootPath("foo_db"),
is("/metadata/foo_db/rules"));
+ }
+
+ @Test
+ void assertGetRulePath() {
+ assertThat(DatabaseRuleMetaDataNodePath.getRulePath("foo_db",
"foo_rule"), is("/metadata/foo_db/rules/foo_rule"));
+ }
+
+ @Test
+ void assertGetRulePathWithKey() {
+ assertThat(DatabaseRuleMetaDataNodePath.getRulePath("foo_db",
"foo_rule", "sharding"), is("/metadata/foo_db/rules/foo_rule/sharding"));
+ }
+
+ @Test
+ void assertGetVersionsPath() {
+ assertThat(DatabaseRuleMetaDataNodePath.getVersionsPath("foo_db",
"sharding", "foo_key"), is("/metadata/foo_db/rules/sharding/foo_key/versions"));
+ }
+
+ @Test
+ void assertGetVersionPath() {
+ assertThat(DatabaseRuleMetaDataNodePath.getVersionPath("foo_db",
"foo_rule", "foo_tbl", "1"),
is("/metadata/foo_db/rules/foo_rule/foo_tbl/versions/1"));
+ }
+
+ @Test
+ void assertGetActiveVersionPath() {
+ assertThat(DatabaseRuleMetaDataNodePath.getActiveVersionPath("foo_db",
"foo_rule", "foo_tbl"),
is("/metadata/foo_db/rules/foo_rule/foo_tbl/active_version"));
+ }
+}
diff --git
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/DatabaseRuleMetaDataNodeTest.java
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/DatabaseRuleMetaDataNodeTest.java
deleted file mode 100644
index 0b1dd0f4017..00000000000
---
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/DatabaseRuleMetaDataNodeTest.java
+++ /dev/null
@@ -1,45 +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.metadata.persist.node.metadata;
-
-import org.junit.jupiter.api.Test;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-class DatabaseRuleMetaDataNodeTest {
-
- @Test
- void assertGetDatabaseRuleActiveVersionNode() {
-
assertThat(DatabaseRuleMetaDataNode.getDatabaseRuleActiveVersionNode("foo_db",
"foo_rule", "foo_tbl"),
is("/metadata/foo_db/rules/foo_rule/foo_tbl/active_version"));
- }
-
- @Test
- void assertGetDatabaseRuleVersionsNode() {
-
assertThat(DatabaseRuleMetaDataNode.getDatabaseRuleVersionsNode("foo_db",
"sharding", "foo_key"), is("/metadata/foo_db/rules/sharding/foo_key/versions"));
- }
-
- @Test
- void assertGetDatabaseRuleVersionNode() {
-
assertThat(DatabaseRuleMetaDataNode.getDatabaseRuleVersionNode("foo_db",
"foo_rule", "foo_tbl", "1"),
is("/metadata/foo_db/rules/foo_rule/foo_tbl/versions/1"));
- }
-
- @Test
- void assertGetDatabaseRuleNode() {
- assertThat(DatabaseRuleMetaDataNode.getDatabaseRuleNode("foo_db",
"foo_rule", "sharding"), is("/metadata/foo_db/rules/foo_rule/sharding"));
- }
-}