This is an automated email from the ASF dual-hosted git repository.
tuichenchuxin 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 886fbde99ae Split DatabaseMetaDataNode to segment metadata data key
node (#30635)
886fbde99ae is described below
commit 886fbde99aec2764c763ac329de1e14782d1adb2
Author: zhaojinchao <[email protected]>
AuthorDate: Mon Mar 25 16:47:36 2024 +0800
Split DatabaseMetaDataNode to segment metadata data key node (#30635)
* Split DatabaseMetaDataNode to segment metadata data key node
* Fix ci
---
.../persist/node/DatabaseMetaDataNode.java | 409 +--------------------
.../node/metadata/DataSourceMetaDataNode.java | 216 +++++++++++
.../node/metadata/DatabaseRuleMetaDataNode.java | 106 ++++++
.../persist/node/metadata/TableMetaDataNode.java | 144 ++++++++
.../persist/node/metadata/ViewMetaDataNode.java | 144 ++++++++
.../datasource/DataSourceNodePersistService.java | 28 +-
.../datasource/DataSourceUnitPersistService.java | 28 +-
.../database/rule/DatabaseRulePersistService.java | 18 +-
.../schema/TableMetaDataPersistService.java | 28 +-
.../service/schema/ViewMetaDataPersistService.java | 28 +-
.../persist/node/DatabaseMetaDataNodeTest.java | 137 -------
.../node/metadata/DataSourceMetaDataNodeTest.java | 81 ++++
.../metadata/DatabaseRuleMetaDataNodeTest.java | 45 +++
.../node/metadata/TableMetaDataNodeTest.java | 61 +++
.../node/metadata/ViewMetaDataNodeTest.java | 75 ++++
.../metadata/watcher/MetaDataChangedWatcher.java | 21 +-
16 files changed, 952 insertions(+), 617 deletions(-)
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNode.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNode.java
index 1b5cd7f7c88..c35a9ef2aa4 100644
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNode.java
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNode.java
@@ -32,30 +32,14 @@ public final class DatabaseMetaDataNode {
private static final String ROOT_NODE = "metadata";
- private static final String DATA_SOURCES_NODE = "data_sources";
-
- private static final String DATA_SOURCE_NODES_NODE = "nodes";
-
- private static final String DATA_SOURCE_UNITS_NODE = "units";
-
- private static final String RULE_NODE = "rules";
-
private static final String SCHEMAS_NODE = "schemas";
private static final String TABLES_NODE = "tables";
- private static final String VIEWS_NODE = "views";
-
private static final String ACTIVE_VERSION = "active_version";
private static final String VERSIONS = "versions";
- private static final String TABLES_PATTERN =
"/([\\w\\-]+)/schemas/([\\w\\-]+)/tables";
-
- private static final String VIEWS_PATTERN =
"/([\\w\\-]+)/schemas/([\\w\\-]+)/views";
-
- private static final String ACTIVE_VERSION_SUFFIX =
"/([\\w\\-]+)/active_version";
-
/**
* Get database name path.
*
@@ -66,28 +50,6 @@ public final class DatabaseMetaDataNode {
return String.join("/", getMetaDataNode(), databaseName);
}
- /**
- * Get meta data tables path.
- *
- * @param databaseName database name
- * @param schemaName schema name
- * @return tables path
- */
- public static String getMetaDataTablesPath(final String databaseName,
final String schemaName) {
- return String.join("/", getMetaDataSchemaPath(databaseName,
schemaName), TABLES_NODE);
- }
-
- /**
- * Get meta data views path.
- *
- * @param databaseName database name
- * @param schemaName schema name
- * @return views path
- */
- public static String getMetaDataViewsPath(final String databaseName, final
String schemaName) {
- return String.join("/", getMetaDataSchemaPath(databaseName,
schemaName), VIEWS_NODE);
- }
-
/**
* Get schema path.
*
@@ -110,335 +72,14 @@ public final class DatabaseMetaDataNode {
}
/**
- * Get data source units node.
- *
- * @param databaseName database name
- * @return data sources node
- */
- public static String getDataSourceUnitsNode(final String databaseName) {
- return String.join("/", getMetaDataNode(), databaseName,
DATA_SOURCES_NODE, DATA_SOURCE_UNITS_NODE);
- }
-
- /**
- * Get data source nodes node.
- *
- * @param databaseName database name
- * @return data sources node
- */
- public static String getDataSourceNodesNode(final String databaseName) {
- return String.join("/", getMetaDataNode(), databaseName,
DATA_SOURCES_NODE, DATA_SOURCE_NODES_NODE);
- }
-
- /**
- * Get data source unit node.
- *
- * @param databaseName database name
- * @param dataSourceName data source name
- * @return data source node
- */
- public static String getDataSourceUnitNode(final String databaseName,
final String dataSourceName) {
- return String.join("/", getDataSourceUnitsNode(databaseName),
dataSourceName);
- }
-
- /**
- * Get data source unit node.
- *
- * @param databaseName database name
- * @param dataSourceName data source name
- * @return data source node
- */
- public static String getDataSourceNode(final String databaseName, final
String dataSourceName) {
- return String.join("/", getDataSourceUnitsNode(databaseName),
dataSourceName);
- }
-
- /**
- * Get data source unit node with version.
- *
- * @param databaseName database name
- * @param dataSourceName data source name
- * @param version version
- * @return data source node with version
- */
- public static String getDataSourceUnitNodeWithVersion(final String
databaseName, final String dataSourceName, final String version) {
- return String.join("/", getDataSourceUnitVersionsNode(databaseName,
dataSourceName), version);
- }
-
- /**
- * Get data source node with version.
- *
- * @param databaseName database name
- * @param dataSourceName data source name
- * @param version version
- * @return data source node with version
- */
- public static String getDataSourceNodeWithVersion(final String
databaseName, final String dataSourceName, final String version) {
- return String.join("/", getDataSourceNodeVersionsNode(databaseName,
dataSourceName), version);
- }
-
- /**
- * Get data source unit active version node.
- *
- * @param databaseName database name
- * @param dataSourceName data source name
- * @return data source active version node
- */
- public static String getDataSourceUnitActiveVersionNode(final String
databaseName, final String dataSourceName) {
- return String.join("/", getDataSourceUnitsNode(databaseName),
dataSourceName, ACTIVE_VERSION);
- }
-
- /**
- * Get data source node active version node.
- *
- * @param databaseName database name
- * @param dataSourceName data source name
- * @return data source active version node
- */
- public static String getDataSourceNodeActiveVersionNode(final String
databaseName, final String dataSourceName) {
- return String.join("/", getDataSourceNodesNode(databaseName),
dataSourceName, ACTIVE_VERSION);
- }
-
- /**
- * Get data source unit versions node.
- *
- * @param databaseName database name
- * @param dataSourceName data source name
- * @return data source versions node
- */
- public static String getDataSourceUnitVersionsNode(final String
databaseName, final String dataSourceName) {
- return String.join("/", getDataSourceUnitsNode(databaseName),
dataSourceName, VERSIONS);
- }
-
- /**
- * Get data source node versions node.
- *
- * @param databaseName database name
- * @param dataSourceName data source name
- * @return data source versions node
- */
- public static String getDataSourceNodeVersionsNode(final String
databaseName, final String dataSourceName) {
- return String.join("/", getDataSourceNodesNode(databaseName),
dataSourceName, 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);
- }
-
- /**
- * Get table active version node.
- *
- * @param databaseName database name
- * @param schemaName schema name
- * @param tableName table name
- * @return tables active version node
- */
- public static String getTableActiveVersionNode(final String databaseName,
final String schemaName, final String tableName) {
- return String.join("/", getTableNode(databaseName, schemaName,
tableName), ACTIVE_VERSION);
- }
-
- /**
- * Get table versions node.
- *
- * @param databaseName database name
- * @param schemaName schema name
- * @param tableName table name
- * @return tables versions node
- */
- public static String getTableVersionsNode(final String databaseName, final
String schemaName, final String tableName) {
- return String.join("/", getTableNode(databaseName, schemaName,
tableName), VERSIONS);
- }
-
- /**
- * Get table version node.
- *
- * @param databaseName database name
- * @param schemaName schema name
- * @param tableName table name
- * @param version version
- * @return table version node
- */
- public static String getTableVersionNode(final String databaseName, final
String schemaName, final String tableName, final String version) {
- return String.join("/", getTableVersionsNode(databaseName, schemaName,
tableName), version);
- }
-
- /**
- * Get table node.
- *
- * @param databaseName database name
- * @param schemaName schema name
- * @param tableName table name
- * @return table node
- */
- public static String getTableNode(final String databaseName, final String
schemaName, final String tableName) {
- return String.join("/", getMetaDataNode(), databaseName, SCHEMAS_NODE,
schemaName, TABLES_NODE, tableName);
- }
-
- /**
- * Get view name active version node.
- *
- * @param databaseName database name
- * @param schemaName schema name
- * @param viewName view name
- * @return view active version node
- */
- public static String getViewActiveVersionNode(final String databaseName,
final String schemaName, final String viewName) {
- return String.join("/", getViewNode(databaseName, schemaName,
viewName), ACTIVE_VERSION);
- }
-
- /**
- * Get view versions node.
- *
- * @param databaseName database name
- * @param schemaName schema name
- * @param viewName view name
- * @return view versions node
- */
- public static String getViewVersionsNode(final String databaseName, final
String schemaName, final String viewName) {
- return String.join("/", getViewNode(databaseName, schemaName,
viewName), VERSIONS);
- }
-
- /**
- * Get view version node.
- *
- * @param databaseName database name
- * @param schemaName schema name
- * @param viewName view name
- * @param version version
- * @return view version node
- */
- public static String getViewVersionNode(final String databaseName, final
String schemaName, final String viewName, final String version) {
- return String.join("/", getViewVersionsNode(databaseName, schemaName,
viewName), version);
- }
-
- /**
- * Get view node.
+ * Get meta data tables path.
*
* @param databaseName database name
* @param schemaName schema name
- * @param viewName view name
* @return tables path
*/
- public static String getViewNode(final String databaseName, final String
schemaName, final String viewName) {
- return String.join("/", getMetaDataNode(), databaseName, SCHEMAS_NODE,
schemaName, VIEWS_NODE, viewName);
- }
-
- /**
- * Is data sources node.
- *
- * @param path path
- * @return true or false
- */
- public static boolean isDataSourcesNode(final String path) {
- return Pattern.compile(getMetaDataNode() + "/([\\w\\-]+)/" +
DATA_SOURCES_NODE + "/?", Pattern.CASE_INSENSITIVE).matcher(path).find();
- }
-
- /**
- * Get data source name by data source unit node.
- *
- * @param path path
- * @return data source name
- */
- public static Optional<String> getDataSourceNameByDataSourceUnitNode(final
String path) {
- Pattern pattern = Pattern.compile(getMetaDataNode() + "/([\\w\\-]+)/"
+ DATA_SOURCES_NODE + "/" + DATA_SOURCE_UNITS_NODE + "/([\\w\\-]+)?",
Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(path);
- return matcher.find() ? Optional.of(matcher.group(2)) :
Optional.empty();
- }
-
- /**
- * Get data source name by data source nodes node.
- *
- * @param path path
- * @return data source name
- */
- public static Optional<String> getDataSourceNameByDataSourceNode(final
String path) {
- Pattern pattern = Pattern.compile(getMetaDataNode() + "/([\\w\\-]+)/"
+ DATA_SOURCES_NODE + "/" + DATA_SOURCE_NODES_NODE + "/([\\w\\-]+)?",
Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(path);
- return matcher.find() ? Optional.of(matcher.group(2)) :
Optional.empty();
- }
-
- /**
- * Is data source unit active version node.
- *
- * @param path path
- * @return true or false
- */
- public static boolean isDataSourceUnitActiveVersionNode(final String path)
{
- return Pattern.compile(getMetaDataNode() + "/([\\w\\-]+)/" +
DATA_SOURCES_NODE + "/" + DATA_SOURCE_UNITS_NODE + ACTIVE_VERSION_SUFFIX,
Pattern.CASE_INSENSITIVE).matcher(path).find();
- }
-
- /**
- * Is data source unit active version node.
- *
- * @param path path
- * @return true or false
- */
- public static boolean isDataSourceNodeActiveVersionNode(final String path)
{
- return Pattern.compile(getMetaDataNode() + "/([\\w\\-]+)/" +
DATA_SOURCES_NODE + "/" + DATA_SOURCE_NODES_NODE + ACTIVE_VERSION_SUFFIX,
Pattern.CASE_INSENSITIVE).matcher(path).find();
+ public static String getMetaDataTablesPath(final String databaseName,
final String schemaName) {
+ return String.join("/", getMetaDataSchemaPath(databaseName,
schemaName), TABLES_NODE);
}
/**
@@ -489,50 +130,6 @@ public final class DatabaseMetaDataNode {
return matcher.find() ? Optional.of(matcher.group(2)) :
Optional.empty();
}
- /**
- * Get table name.
- *
- * @param path path
- * @return table name
- */
- public static Optional<String> getTableName(final String path) {
- Pattern pattern = Pattern.compile(getMetaDataNode() + TABLES_PATTERN +
"/([\\w\\-]+)/([\\w\\-]+)$", Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(path);
- return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
- }
-
- /**
- * Is table active version node.
- *
- * @param path path
- * @return true or false
- */
- public static boolean isTableActiveVersionNode(final String path) {
- return Pattern.compile(getMetaDataNode() + TABLES_PATTERN +
ACTIVE_VERSION_SUFFIX, Pattern.CASE_INSENSITIVE).matcher(path).find();
- }
-
- /**
- * Get view name.
- *
- * @param path path
- * @return view name
- */
- public static Optional<String> getViewName(final String path) {
- Pattern pattern = Pattern.compile(getMetaDataNode() + VIEWS_PATTERN +
"/([\\w\\-]+)?", Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(path);
- return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
- }
-
- /**
- * Is view active version node.
- *
- * @param path path
- * @return true or false
- */
- public static boolean isViewActiveVersionNode(final String path) {
- return Pattern.compile(getMetaDataNode() + VIEWS_PATTERN +
ACTIVE_VERSION_SUFFIX, Pattern.CASE_INSENSITIVE).matcher(path).find();
- }
-
/**
* Get version node by active version path.
*
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNode.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNode.java
new file mode 100644
index 00000000000..706c83f1d8c
--- /dev/null
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNode.java
@@ -0,0 +1,216 @@
+/*
+ * 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;
+
+import java.util.Optional;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Data source meta data node.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class DataSourceMetaDataNode {
+
+ private static final String ROOT_NODE = "metadata";
+
+ private static final String DATA_SOURCES_NODE = "data_sources";
+
+ private static final String DATA_SOURCE_NODES_NODE = "nodes";
+
+ private static final String DATA_SOURCE_UNITS_NODE = "units";
+
+ private static final String ACTIVE_VERSION = "active_version";
+
+ private static final String VERSIONS = "versions";
+
+ private static final String DATABASE_DATA_SOURCES_NODE =
"/([\\w\\-]+)/data_sources/";
+
+ private static final String ACTIVE_VERSION_SUFFIX =
"/([\\w\\-]+)/active_version";
+
+ /**
+ * Get data source units node.
+ *
+ * @param databaseName database name
+ * @return data sources node
+ */
+ public static String getDataSourceUnitsNode(final String databaseName) {
+ return String.join("/", getMetaDataNode(), databaseName,
DATA_SOURCES_NODE, DATA_SOURCE_UNITS_NODE);
+ }
+
+ /**
+ * Get data source nodes node.
+ *
+ * @param databaseName database name
+ * @return data sources node
+ */
+ public static String getDataSourceNodesNode(final String databaseName) {
+ return String.join("/", getMetaDataNode(), databaseName,
DATA_SOURCES_NODE, DATA_SOURCE_NODES_NODE);
+ }
+
+ /**
+ * Get data source unit node.
+ *
+ * @param databaseName database name
+ * @param dataSourceName data source name
+ * @return data source node
+ */
+ public static String getDataSourceUnitNode(final String databaseName,
final String dataSourceName) {
+ return String.join("/", getDataSourceUnitsNode(databaseName),
dataSourceName);
+ }
+
+ /**
+ * Get data source node node.
+ *
+ * @param databaseName database name
+ * @param dataSourceName data source name
+ * @return data source node
+ */
+ public static String getDataSourceNodeNode(final String databaseName,
final String dataSourceName) {
+ return String.join("/", getDataSourceNodesNode(databaseName),
dataSourceName);
+ }
+
+ /**
+ * Get data source unit version node.
+ *
+ * @param databaseName database name
+ * @param dataSourceName data source name
+ * @param version version
+ * @return data source unit version node
+ */
+ public static String getDataSourceUnitVersionNode(final String
databaseName, final String dataSourceName, final String version) {
+ return String.join("/", getDataSourceUnitVersionsNode(databaseName,
dataSourceName), version);
+ }
+
+ /**
+ * Get data source unit versions node.
+ *
+ * @param databaseName database name
+ * @param dataSourceName data source name
+ * @return data source versions node
+ */
+ public static String getDataSourceUnitVersionsNode(final String
databaseName, final String dataSourceName) {
+ return String.join("/", getDataSourceUnitsNode(databaseName),
dataSourceName, VERSIONS);
+ }
+
+ /**
+ * Get data source unit active version node.
+ *
+ * @param databaseName database name
+ * @param dataSourceName data source name
+ * @return data source active version node
+ */
+ public static String getDataSourceUnitActiveVersionNode(final String
databaseName, final String dataSourceName) {
+ return String.join("/", getDataSourceUnitsNode(databaseName),
dataSourceName, ACTIVE_VERSION);
+ }
+
+ /**
+ * Get data source node versions node.
+ *
+ * @param databaseName database name
+ * @param dataSourceName data source name
+ * @return data source versions node
+ */
+ public static String getDataSourceNodeVersionsNode(final String
databaseName, final String dataSourceName) {
+ return String.join("/", getDataSourceNodesNode(databaseName),
dataSourceName, VERSIONS);
+ }
+
+ /**
+ * Get data source node version node.
+ *
+ * @param databaseName database name
+ * @param dataSourceName data source name
+ * @param version version
+ * @return data source node version node
+ */
+ public static String getDataSourceNodeVersionNode(final String
databaseName, final String dataSourceName, final String version) {
+ return String.join("/", getDataSourceNodeVersionsNode(databaseName,
dataSourceName), version);
+ }
+
+ /**
+ * Get data source node active version node.
+ *
+ * @param databaseName database name
+ * @param dataSourceName data source name
+ * @return data source active version node
+ */
+ public static String getDataSourceNodeActiveVersionNode(final String
databaseName, final String dataSourceName) {
+ return String.join("/", getDataSourceNodesNode(databaseName),
dataSourceName, ACTIVE_VERSION);
+ }
+
+ /**
+ * Is data sources node.
+ *
+ * @param path path
+ * @return true or false
+ */
+ public static boolean isDataSourcesNode(final String path) {
+ return Pattern.compile(getMetaDataNode() + DATABASE_DATA_SOURCES_NODE
+ "?", Pattern.CASE_INSENSITIVE).matcher(path).find();
+ }
+
+ /**
+ * Get data source name by data source unit node.
+ *
+ * @param path path
+ * @return data source name
+ */
+ public static Optional<String> getDataSourceNameByDataSourceUnitNode(final
String path) {
+ Pattern pattern = Pattern.compile(getMetaDataNode() +
DATABASE_DATA_SOURCES_NODE + DATA_SOURCE_UNITS_NODE + "/([\\w\\-]+)?",
Pattern.CASE_INSENSITIVE);
+ Matcher matcher = pattern.matcher(path);
+ return matcher.find() ? Optional.of(matcher.group(2)) :
Optional.empty();
+ }
+
+ /**
+ * Get data source name by data source nodes node.
+ *
+ * @param path path
+ * @return data source name
+ */
+ public static Optional<String> getDataSourceNameByDataSourceNode(final
String path) {
+ Pattern pattern = Pattern.compile(getMetaDataNode() +
DATABASE_DATA_SOURCES_NODE + DATA_SOURCE_NODES_NODE + "/([\\w\\-]+)?",
Pattern.CASE_INSENSITIVE);
+ Matcher matcher = pattern.matcher(path);
+ return matcher.find() ? Optional.of(matcher.group(2)) :
Optional.empty();
+ }
+
+ /**
+ * Is data source unit active version node.
+ *
+ * @param path path
+ * @return true or false
+ */
+ public static boolean isDataSourceUnitActiveVersionNode(final String path)
{
+ return Pattern.compile(getMetaDataNode() + DATABASE_DATA_SOURCES_NODE
+ DATA_SOURCE_UNITS_NODE + ACTIVE_VERSION_SUFFIX,
Pattern.CASE_INSENSITIVE).matcher(path).find();
+ }
+
+ /**
+ * Is data source node active version node.
+ *
+ * @param path path
+ * @return true or false
+ */
+ public static boolean isDataSourceNodeActiveVersionNode(final String path)
{
+ return Pattern.compile(getMetaDataNode() + DATABASE_DATA_SOURCES_NODE
+ DATA_SOURCE_NODES_NODE + ACTIVE_VERSION_SUFFIX,
Pattern.CASE_INSENSITIVE).matcher(path).find();
+ }
+
+ 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/DatabaseRuleMetaDataNode.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DatabaseRuleMetaDataNode.java
new file mode 100644
index 00000000000..2d6f273ba3f
--- /dev/null
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DatabaseRuleMetaDataNode.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;
+
+/**
+ * Database rule meta data node.
+ */
+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/TableMetaDataNode.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/TableMetaDataNode.java
new file mode 100644
index 00000000000..7c05f6032aa
--- /dev/null
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/TableMetaDataNode.java
@@ -0,0 +1,144 @@
+/*
+ * 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;
+
+import java.util.Optional;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Table meta data node.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class TableMetaDataNode {
+
+ private static final String ROOT_NODE = "metadata";
+
+ private static final String SCHEMAS_NODE = "schemas";
+
+ private static final String TABLES_NODE = "tables";
+
+ private static final String ACTIVE_VERSION = "active_version";
+
+ private static final String VERSIONS = "versions";
+
+ private static final String TABLES_PATTERN =
"/([\\w\\-]+)/schemas/([\\w\\-]+)/tables";
+
+ private static final String ACTIVE_VERSION_SUFFIX =
"/([\\w\\-]+)/active_version";
+
+ /**
+ * Get meta data tables node.
+ *
+ * @param databaseName database name
+ * @param schemaName schema name
+ * @return tables path
+ */
+ public static String getMetaDataTablesNode(final String databaseName,
final String schemaName) {
+ return String.join("/", getMetaDataNode(), databaseName, SCHEMAS_NODE,
schemaName, TABLES_NODE);
+ }
+
+ /**
+ * Get table active version node.
+ *
+ * @param databaseName database name
+ * @param schemaName schema name
+ * @param tableName table name
+ * @return tables active version node
+ */
+ public static String getTableActiveVersionNode(final String databaseName,
final String schemaName, final String tableName) {
+ return String.join("/", getMetaDataNode(), databaseName, SCHEMAS_NODE,
schemaName, TABLES_NODE, tableName, ACTIVE_VERSION);
+ }
+
+ /**
+ * Get table versions node.
+ *
+ * @param databaseName database name
+ * @param schemaName schema name
+ * @param tableName table name
+ * @return tables versions node
+ */
+ public static String getTableVersionsNode(final String databaseName, final
String schemaName, final String tableName) {
+ return String.join("/", getMetaDataNode(), databaseName, SCHEMAS_NODE,
schemaName, TABLES_NODE, tableName, VERSIONS);
+ }
+
+ /**
+ * Get table version node.
+ *
+ * @param databaseName database name
+ * @param schemaName schema name
+ * @param tableName table name
+ * @param version version
+ * @return table version node
+ */
+ public static String getTableVersionNode(final String databaseName, final
String schemaName, final String tableName, final String version) {
+ return String.join("/", getTableVersionsNode(databaseName, schemaName,
tableName), version);
+ }
+
+ /**
+ * Get table node.
+ *
+ * @param databaseName database name
+ * @param schemaName schema name
+ * @param tableName table name
+ * @return table node
+ */
+ public static String getTableNode(final String databaseName, final String
schemaName, final String tableName) {
+ return String.join("/", getMetaDataNode(), databaseName, SCHEMAS_NODE,
schemaName, TABLES_NODE, tableName);
+ }
+
+ /**
+ * Get table name by active version node.
+ *
+ * @param path path
+ * @return table name
+ */
+ public static Optional<String> getTableNameByActiveVersionNode(final
String path) {
+ Pattern pattern = Pattern.compile(getMetaDataNode() + TABLES_PATTERN +
ACTIVE_VERSION_SUFFIX, Pattern.CASE_INSENSITIVE);
+ Matcher matcher = pattern.matcher(path);
+ return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
+ }
+
+ /**
+ * Get table name.
+ *
+ * @param path path
+ * @return table name
+ */
+ public static Optional<String> getTableName(final String path) {
+ Pattern pattern = Pattern.compile(getMetaDataNode() + TABLES_PATTERN +
"/([\\w\\-]+)$", Pattern.CASE_INSENSITIVE);
+ Matcher matcher = pattern.matcher(path);
+ return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
+ }
+
+ /**
+ * Is table active version node.
+ *
+ * @param path path
+ * @return true or false
+ */
+ public static boolean isTableActiveVersionNode(final String path) {
+ return Pattern.compile(getMetaDataNode() + TABLES_PATTERN +
ACTIVE_VERSION_SUFFIX, Pattern.CASE_INSENSITIVE).matcher(path).find();
+ }
+
+ 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/ViewMetaDataNode.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/ViewMetaDataNode.java
new file mode 100644
index 00000000000..34c2f92bd35
--- /dev/null
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/ViewMetaDataNode.java
@@ -0,0 +1,144 @@
+/*
+ * 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;
+
+import java.util.Optional;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * View meta data node.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class ViewMetaDataNode {
+
+ private static final String ROOT_NODE = "metadata";
+
+ private static final String SCHEMAS_NODE = "schemas";
+
+ private static final String VIEWS_NODE = "views";
+
+ private static final String ACTIVE_VERSION = "active_version";
+
+ private static final String VERSIONS = "versions";
+
+ private static final String VIEWS_PATTERN =
"/([\\w\\-]+)/schemas/([\\w\\-]+)/views";
+
+ private static final String ACTIVE_VERSION_SUFFIX =
"/([\\w\\-]+)/active_version";
+
+ /**
+ * Get meta data views node.
+ *
+ * @param databaseName database name
+ * @param schemaName schema name
+ * @return views path
+ */
+ public static String getMetaDataViewsNode(final String databaseName, final
String schemaName) {
+ return String.join("/", getMetaDataNode(), databaseName, SCHEMAS_NODE,
schemaName, VIEWS_NODE);
+ }
+
+ /**
+ * Get view active version node.
+ *
+ * @param databaseName database name
+ * @param schemaName schema name
+ * @param viewName view name
+ * @return view active version node
+ */
+ public static String getViewActiveVersionNode(final String databaseName,
final String schemaName, final String viewName) {
+ return String.join("/", getMetaDataNode(), databaseName, SCHEMAS_NODE,
schemaName, VIEWS_NODE, viewName, ACTIVE_VERSION);
+ }
+
+ /**
+ * Get view versions node.
+ *
+ * @param databaseName database name
+ * @param schemaName schema name
+ * @param viewName view name
+ * @return view versions node
+ */
+ public static String getViewVersionsNode(final String databaseName, final
String schemaName, final String viewName) {
+ return String.join("/", getMetaDataNode(), databaseName, SCHEMAS_NODE,
schemaName, VIEWS_NODE, viewName, VERSIONS);
+ }
+
+ /**
+ * Get view version node.
+ *
+ * @param databaseName database name
+ * @param schemaName schema name
+ * @param viewName view name
+ * @param version version
+ * @return view version node
+ */
+ public static String getViewVersionNode(final String databaseName, final
String schemaName, final String viewName, final String version) {
+ return String.join("/", getViewVersionsNode(databaseName, schemaName,
viewName), version);
+ }
+
+ /**
+ * Get view node.
+ *
+ * @param databaseName database name
+ * @param schemaName schema name
+ * @param viewName view name
+ * @return view node
+ */
+ public static String getViewNode(final String databaseName, final String
schemaName, final String viewName) {
+ return String.join("/", "", ROOT_NODE, databaseName, SCHEMAS_NODE,
schemaName, VIEWS_NODE, viewName);
+ }
+
+ /**
+ * Get view name by active version node.
+ *
+ * @param path path
+ * @return view name
+ */
+ public static Optional<String> getViewNameByActiveVersionNode(final String
path) {
+ Pattern pattern = Pattern.compile(getMetaDataNode() + VIEWS_PATTERN +
ACTIVE_VERSION_SUFFIX, Pattern.CASE_INSENSITIVE);
+ Matcher matcher = pattern.matcher(path);
+ return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
+ }
+
+ /**
+ * Get view name.
+ *
+ * @param path path
+ * @return view name
+ */
+ public static Optional<String> getViewName(final String path) {
+ Pattern pattern = Pattern.compile(getMetaDataNode() + VIEWS_PATTERN +
"/([\\w\\-]+)$", Pattern.CASE_INSENSITIVE);
+ Matcher matcher = pattern.matcher(path);
+ return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
+ }
+
+ /**
+ * Is view active version node.
+ *
+ * @param path path
+ * @return true or false
+ */
+ public static boolean isViewActiveVersionNode(final String path) {
+ return Pattern.compile(getMetaDataNode() + VIEWS_PATTERN +
ACTIVE_VERSION_SUFFIX, Pattern.CASE_INSENSITIVE).matcher(path).find();
+ }
+
+ private static String getMetaDataNode() {
+ return String.join("/", "", ROOT_NODE);
+ }
+}
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/datasource/DataSourceNodePersistService.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/datasource/DataSourceNodePersistService.java
index 335fc04f1ac..62502f8bfca 100644
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/datasource/DataSourceNodePersistService.java
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/datasource/DataSourceNodePersistService.java
@@ -23,7 +23,7 @@ import
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePo
import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import
org.apache.shardingsphere.infra.yaml.config.swapper.resource.YamlDataSourceConfigurationSwapper;
-import org.apache.shardingsphere.metadata.persist.node.DatabaseMetaDataNode;
+import
org.apache.shardingsphere.metadata.persist.node.metadata.DataSourceMetaDataNode;
import
org.apache.shardingsphere.metadata.persist.service.config.database.DatabaseBasedPersistService;
import org.apache.shardingsphere.mode.spi.PersistRepository;
@@ -48,12 +48,12 @@ public final class DataSourceNodePersistService implements
DatabaseBasedPersistS
public void persist(final String databaseName, final Map<String,
DataSourcePoolProperties> dataSourceConfigs) {
for (Entry<String, DataSourcePoolProperties> entry :
dataSourceConfigs.entrySet()) {
String activeVersion = getDataSourceActiveVersion(databaseName,
entry.getKey());
- List<String> versions =
repository.getChildrenKeys(DatabaseMetaDataNode.getDataSourceNodeVersionsNode(databaseName,
entry.getKey()));
-
repository.persist(DatabaseMetaDataNode.getDataSourceNodeWithVersion(databaseName,
entry.getKey(), versions.isEmpty()
+ List<String> versions =
repository.getChildrenKeys(DataSourceMetaDataNode.getDataSourceNodeVersionsNode(databaseName,
entry.getKey()));
+
repository.persist(DataSourceMetaDataNode.getDataSourceNodeVersionNode(databaseName,
entry.getKey(), versions.isEmpty()
? DEFAULT_VERSION
: String.valueOf(Integer.parseInt(versions.get(0)) + 1)),
YamlEngine.marshal(new
YamlDataSourceConfigurationSwapper().swapToMap(entry.getValue())));
if (Strings.isNullOrEmpty(activeVersion)) {
-
repository.persist(DatabaseMetaDataNode.getDataSourceNodeActiveVersionNode(databaseName,
entry.getKey()), DEFAULT_VERSION);
+
repository.persist(DataSourceMetaDataNode.getDataSourceNodeActiveVersionNode(databaseName,
entry.getKey()), DEFAULT_VERSION);
}
}
}
@@ -62,8 +62,8 @@ public final class DataSourceNodePersistService implements
DatabaseBasedPersistS
@Override
public Map<String, DataSourcePoolProperties> load(final String
databaseName) {
Map<String, DataSourcePoolProperties> result = new LinkedHashMap<>();
- for (String each :
repository.getChildrenKeys(DatabaseMetaDataNode.getDataSourceNodesNode(databaseName)))
{
- String dataSourceValue =
repository.getDirectly(DatabaseMetaDataNode.getDataSourceNodeWithVersion(databaseName,
each, getDataSourceActiveVersion(databaseName, each)));
+ for (String each :
repository.getChildrenKeys(DataSourceMetaDataNode.getDataSourceNodesNode(databaseName)))
{
+ String dataSourceValue =
repository.getDirectly(DataSourceMetaDataNode.getDataSourceNodeVersionNode(databaseName,
each, getDataSourceActiveVersion(databaseName, each)));
if (!Strings.isNullOrEmpty(dataSourceValue)) {
result.put(each, new
YamlDataSourceConfigurationSwapper().swapToDataSourcePoolProperties(YamlEngine.unmarshal(dataSourceValue,
Map.class)));
}
@@ -75,7 +75,7 @@ public final class DataSourceNodePersistService implements
DatabaseBasedPersistS
@Override
public Map<String, DataSourcePoolProperties> load(final String
databaseName, final String name) {
Map<String, DataSourcePoolProperties> result = new LinkedHashMap<>();
- String dataSourceValue =
repository.getDirectly(DatabaseMetaDataNode.getDataSourceNodeWithVersion(databaseName,
name, getDataSourceActiveVersion(databaseName, name)));
+ String dataSourceValue =
repository.getDirectly(DataSourceMetaDataNode.getDataSourceNodeVersionNode(databaseName,
name, getDataSourceActiveVersion(databaseName, name)));
if (!Strings.isNullOrEmpty(dataSourceValue)) {
result.put(name, new
YamlDataSourceConfigurationSwapper().swapToDataSourcePoolProperties(YamlEngine.unmarshal(dataSourceValue,
Map.class)));
}
@@ -84,14 +84,14 @@ public final class DataSourceNodePersistService implements
DatabaseBasedPersistS
@Override
public void delete(final String databaseName, final String name) {
- repository.delete(DatabaseMetaDataNode.getDataSourceNode(databaseName,
name));
+
repository.delete(DataSourceMetaDataNode.getDataSourceNodeNode(databaseName,
name));
}
@Override
public Collection<MetaDataVersion> deleteConfig(final String databaseName,
final Map<String, DataSourcePoolProperties> dataSourceConfigs) {
Collection<MetaDataVersion> result = new LinkedList<>();
for (Entry<String, DataSourcePoolProperties> entry :
dataSourceConfigs.entrySet()) {
- String delKey =
DatabaseMetaDataNode.getDataSourceNode(databaseName, entry.getKey());
+ String delKey =
DataSourceMetaDataNode.getDataSourceNodeNode(databaseName, entry.getKey());
repository.delete(delKey);
result.add(new MetaDataVersion(delKey));
}
@@ -102,19 +102,19 @@ public final class DataSourceNodePersistService
implements DatabaseBasedPersistS
public Collection<MetaDataVersion> persistConfig(final String
databaseName, final Map<String, DataSourcePoolProperties> dataSourceConfigs) {
Collection<MetaDataVersion> result = new LinkedList<>();
for (Entry<String, DataSourcePoolProperties> entry :
dataSourceConfigs.entrySet()) {
- List<String> versions =
repository.getChildrenKeys(DatabaseMetaDataNode.getDataSourceNodeVersionsNode(databaseName,
entry.getKey()));
+ List<String> versions =
repository.getChildrenKeys(DataSourceMetaDataNode.getDataSourceNodeVersionsNode(databaseName,
entry.getKey()));
String nextActiveVersion = versions.isEmpty() ? DEFAULT_VERSION :
String.valueOf(Integer.parseInt(versions.get(0)) + 1);
-
repository.persist(DatabaseMetaDataNode.getDataSourceNodeWithVersion(databaseName,
entry.getKey(), nextActiveVersion),
+
repository.persist(DataSourceMetaDataNode.getDataSourceNodeVersionNode(databaseName,
entry.getKey(), nextActiveVersion),
YamlEngine.marshal(new
YamlDataSourceConfigurationSwapper().swapToMap(entry.getValue())));
if (Strings.isNullOrEmpty(getDataSourceActiveVersion(databaseName,
entry.getKey()))) {
-
repository.persist(DatabaseMetaDataNode.getDataSourceNodeActiveVersionNode(databaseName,
entry.getKey()), DEFAULT_VERSION);
+
repository.persist(DataSourceMetaDataNode.getDataSourceNodeActiveVersionNode(databaseName,
entry.getKey()), DEFAULT_VERSION);
}
- result.add(new
MetaDataVersion(DatabaseMetaDataNode.getDataSourceNode(databaseName,
entry.getKey()), getDataSourceActiveVersion(databaseName, entry.getKey()),
nextActiveVersion));
+ result.add(new
MetaDataVersion(DataSourceMetaDataNode.getDataSourceNodeNode(databaseName,
entry.getKey()), getDataSourceActiveVersion(databaseName, entry.getKey()),
nextActiveVersion));
}
return result;
}
private String getDataSourceActiveVersion(final String databaseName, final
String dataSourceName) {
- return
repository.getDirectly(DatabaseMetaDataNode.getDataSourceNodeActiveVersionNode(databaseName,
dataSourceName));
+ return
repository.getDirectly(DataSourceMetaDataNode.getDataSourceNodeActiveVersionNode(databaseName,
dataSourceName));
}
}
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/datasource/DataSourceUnitPersistService.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/datasource/DataSourceUnitPersistService.java
index d3729c2c5d8..26dcd9879f4 100644
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/datasource/DataSourceUnitPersistService.java
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/datasource/DataSourceUnitPersistService.java
@@ -23,7 +23,7 @@ import
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePo
import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import
org.apache.shardingsphere.infra.yaml.config.swapper.resource.YamlDataSourceConfigurationSwapper;
-import org.apache.shardingsphere.metadata.persist.node.DatabaseMetaDataNode;
+import
org.apache.shardingsphere.metadata.persist.node.metadata.DataSourceMetaDataNode;
import
org.apache.shardingsphere.metadata.persist.service.config.database.DatabaseBasedPersistService;
import org.apache.shardingsphere.mode.spi.PersistRepository;
@@ -48,12 +48,12 @@ public final class DataSourceUnitPersistService implements
DatabaseBasedPersistS
public void persist(final String databaseName, final Map<String,
DataSourcePoolProperties> dataSourceConfigs) {
for (Entry<String, DataSourcePoolProperties> entry :
dataSourceConfigs.entrySet()) {
String activeVersion = getDataSourceActiveVersion(databaseName,
entry.getKey());
- List<String> versions =
repository.getChildrenKeys(DatabaseMetaDataNode.getDataSourceUnitVersionsNode(databaseName,
entry.getKey()));
-
repository.persist(DatabaseMetaDataNode.getDataSourceUnitNodeWithVersion(databaseName,
entry.getKey(), versions.isEmpty()
+ List<String> versions =
repository.getChildrenKeys(DataSourceMetaDataNode.getDataSourceUnitVersionsNode(databaseName,
entry.getKey()));
+
repository.persist(DataSourceMetaDataNode.getDataSourceUnitVersionNode(databaseName,
entry.getKey(), versions.isEmpty()
? DEFAULT_VERSION
: String.valueOf(Integer.parseInt(versions.get(0)) + 1)),
YamlEngine.marshal(new
YamlDataSourceConfigurationSwapper().swapToMap(entry.getValue())));
if (Strings.isNullOrEmpty(activeVersion)) {
-
repository.persist(DatabaseMetaDataNode.getDataSourceUnitActiveVersionNode(databaseName,
entry.getKey()), DEFAULT_VERSION);
+
repository.persist(DataSourceMetaDataNode.getDataSourceUnitActiveVersionNode(databaseName,
entry.getKey()), DEFAULT_VERSION);
}
}
}
@@ -62,8 +62,8 @@ public final class DataSourceUnitPersistService implements
DatabaseBasedPersistS
@Override
public Map<String, DataSourcePoolProperties> load(final String
databaseName) {
Map<String, DataSourcePoolProperties> result = new LinkedHashMap<>();
- for (String each :
repository.getChildrenKeys(DatabaseMetaDataNode.getDataSourceUnitsNode(databaseName)))
{
- String dataSourceValue =
repository.getDirectly(DatabaseMetaDataNode.getDataSourceUnitNodeWithVersion(databaseName,
each, getDataSourceActiveVersion(databaseName, each)));
+ for (String each :
repository.getChildrenKeys(DataSourceMetaDataNode.getDataSourceUnitsNode(databaseName)))
{
+ String dataSourceValue =
repository.getDirectly(DataSourceMetaDataNode.getDataSourceUnitVersionNode(databaseName,
each, getDataSourceActiveVersion(databaseName, each)));
if (!Strings.isNullOrEmpty(dataSourceValue)) {
result.put(each, new
YamlDataSourceConfigurationSwapper().swapToDataSourcePoolProperties(YamlEngine.unmarshal(dataSourceValue,
Map.class)));
}
@@ -75,7 +75,7 @@ public final class DataSourceUnitPersistService implements
DatabaseBasedPersistS
@Override
public Map<String, DataSourcePoolProperties> load(final String
databaseName, final String name) {
Map<String, DataSourcePoolProperties> result = new LinkedHashMap<>();
- String dataSourceValue =
repository.getDirectly(DatabaseMetaDataNode.getDataSourceUnitNodeWithVersion(databaseName,
name, getDataSourceActiveVersion(databaseName, name)));
+ String dataSourceValue =
repository.getDirectly(DataSourceMetaDataNode.getDataSourceUnitVersionNode(databaseName,
name, getDataSourceActiveVersion(databaseName, name)));
if (!Strings.isNullOrEmpty(dataSourceValue)) {
result.put(name, new
YamlDataSourceConfigurationSwapper().swapToDataSourcePoolProperties(YamlEngine.unmarshal(dataSourceValue,
Map.class)));
}
@@ -84,14 +84,14 @@ public final class DataSourceUnitPersistService implements
DatabaseBasedPersistS
@Override
public void delete(final String databaseName, final String name) {
-
repository.delete(DatabaseMetaDataNode.getDataSourceUnitNode(databaseName,
name));
+
repository.delete(DataSourceMetaDataNode.getDataSourceUnitNode(databaseName,
name));
}
@Override
public Collection<MetaDataVersion> deleteConfig(final String databaseName,
final Map<String, DataSourcePoolProperties> dataSourceConfigs) {
Collection<MetaDataVersion> result = new LinkedList<>();
for (Entry<String, DataSourcePoolProperties> entry :
dataSourceConfigs.entrySet()) {
- String delKey =
DatabaseMetaDataNode.getDataSourceUnitNode(databaseName, entry.getKey());
+ String delKey =
DataSourceMetaDataNode.getDataSourceUnitNode(databaseName, entry.getKey());
repository.delete(delKey);
result.add(new MetaDataVersion(delKey));
}
@@ -102,19 +102,19 @@ public final class DataSourceUnitPersistService
implements DatabaseBasedPersistS
public Collection<MetaDataVersion> persistConfig(final String
databaseName, final Map<String, DataSourcePoolProperties> dataSourceConfigs) {
Collection<MetaDataVersion> result = new LinkedList<>();
for (Entry<String, DataSourcePoolProperties> entry :
dataSourceConfigs.entrySet()) {
- List<String> versions =
repository.getChildrenKeys(DatabaseMetaDataNode.getDataSourceUnitVersionsNode(databaseName,
entry.getKey()));
+ List<String> versions =
repository.getChildrenKeys(DataSourceMetaDataNode.getDataSourceUnitVersionsNode(databaseName,
entry.getKey()));
String nextActiveVersion = versions.isEmpty() ? DEFAULT_VERSION :
String.valueOf(Integer.parseInt(versions.get(0)) + 1);
-
repository.persist(DatabaseMetaDataNode.getDataSourceUnitNodeWithVersion(databaseName,
entry.getKey(), nextActiveVersion),
+
repository.persist(DataSourceMetaDataNode.getDataSourceUnitVersionNode(databaseName,
entry.getKey(), nextActiveVersion),
YamlEngine.marshal(new
YamlDataSourceConfigurationSwapper().swapToMap(entry.getValue())));
if (Strings.isNullOrEmpty(getDataSourceActiveVersion(databaseName,
entry.getKey()))) {
-
repository.persist(DatabaseMetaDataNode.getDataSourceUnitActiveVersionNode(databaseName,
entry.getKey()), DEFAULT_VERSION);
+
repository.persist(DataSourceMetaDataNode.getDataSourceUnitActiveVersionNode(databaseName,
entry.getKey()), DEFAULT_VERSION);
}
- result.add(new
MetaDataVersion(DatabaseMetaDataNode.getDataSourceUnitNode(databaseName,
entry.getKey()), getDataSourceActiveVersion(databaseName, entry.getKey()),
nextActiveVersion));
+ result.add(new
MetaDataVersion(DataSourceMetaDataNode.getDataSourceUnitNode(databaseName,
entry.getKey()), getDataSourceActiveVersion(databaseName, entry.getKey()),
nextActiveVersion));
}
return result;
}
private String getDataSourceActiveVersion(final String databaseName, final
String dataSourceName) {
- return
repository.getDirectly(DatabaseMetaDataNode.getDataSourceUnitActiveVersionNode(databaseName,
dataSourceName));
+ return
repository.getDirectly(DataSourceMetaDataNode.getDataSourceUnitActiveVersionNode(databaseName,
dataSourceName));
}
}
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/rule/DatabaseRulePersistService.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/rule/DatabaseRulePersistService.java
index 66ce8e195e4..93c9a298160 100644
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/rule/DatabaseRulePersistService.java
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/rule/DatabaseRulePersistService.java
@@ -23,7 +23,7 @@ import
org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
import org.apache.shardingsphere.infra.util.yaml.datanode.YamlDataNode;
import
org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlDataNodeRuleConfigurationSwapper;
import
org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlDataNodeRuleConfigurationSwapperEngine;
-import org.apache.shardingsphere.metadata.persist.node.DatabaseMetaDataNode;
+import
org.apache.shardingsphere.metadata.persist.node.metadata.DatabaseRuleMetaDataNode;
import
org.apache.shardingsphere.metadata.persist.service.config.AbstractPersistService;
import
org.apache.shardingsphere.metadata.persist.service.config.database.DatabaseBasedPersistService;
import org.apache.shardingsphere.mode.spi.PersistRepository;
@@ -64,13 +64,13 @@ public final class DatabaseRulePersistService extends
AbstractPersistService imp
@Override
public Collection<RuleConfiguration> load(final String databaseName) {
- Collection<YamlDataNode> dataNodes =
getDataNodes(DatabaseMetaDataNode.getRulesNode(databaseName));
+ Collection<YamlDataNode> dataNodes =
getDataNodes(DatabaseRuleMetaDataNode.getRulesNode(databaseName));
return dataNodes.isEmpty() ? Collections.emptyList() : new
YamlDataNodeRuleConfigurationSwapperEngine().swapToRuleConfigurations(dataNodes);
}
@Override
public void delete(final String databaseName, final String name) {
-
repository.delete(DatabaseMetaDataNode.getDatabaseRuleNode(databaseName, name));
+
repository.delete(DatabaseRuleMetaDataNode.getDatabaseRuleNode(databaseName,
name));
}
@SuppressWarnings({"unchecked", "rawtypes"})
@@ -91,13 +91,13 @@ public final class DatabaseRulePersistService extends
AbstractPersistService imp
private Collection<MetaDataVersion> persistDataNodes(final String
databaseName, final String ruleName, final Collection<YamlDataNode> dataNodes) {
Collection<MetaDataVersion> result = new LinkedList<>();
for (YamlDataNode each : dataNodes) {
- List<String> versions =
repository.getChildrenKeys(DatabaseMetaDataNode.getDatabaseRuleVersionsNode(databaseName,
ruleName, each.getKey()));
+ List<String> versions =
repository.getChildrenKeys(DatabaseRuleMetaDataNode.getDatabaseRuleVersionsNode(databaseName,
ruleName, each.getKey()));
String nextVersion = versions.isEmpty() ? DEFAULT_VERSION :
String.valueOf(Integer.parseInt(versions.get(0)) + 1);
-
repository.persist(DatabaseMetaDataNode.getDatabaseRuleVersionNode(databaseName,
ruleName, each.getKey(), nextVersion), each.getValue());
+
repository.persist(DatabaseRuleMetaDataNode.getDatabaseRuleVersionNode(databaseName,
ruleName, each.getKey(), nextVersion), each.getValue());
if (Strings.isNullOrEmpty(getActiveVersion(databaseName, ruleName,
each.getKey()))) {
-
repository.persist(DatabaseMetaDataNode.getDatabaseRuleActiveVersionNode(databaseName,
ruleName, each.getKey()), DEFAULT_VERSION);
+
repository.persist(DatabaseRuleMetaDataNode.getDatabaseRuleActiveVersionNode(databaseName,
ruleName, each.getKey()), DEFAULT_VERSION);
}
- result.add(new
MetaDataVersion(DatabaseMetaDataNode.getDatabaseRuleNode(databaseName,
ruleName, each.getKey()), getActiveVersion(databaseName, ruleName,
each.getKey()), nextVersion));
+ result.add(new
MetaDataVersion(DatabaseRuleMetaDataNode.getDatabaseRuleNode(databaseName,
ruleName, each.getKey()), getActiveVersion(databaseName, ruleName,
each.getKey()), nextVersion));
}
return result;
}
@@ -122,7 +122,7 @@ public final class DatabaseRulePersistService extends
AbstractPersistService imp
private Collection<MetaDataVersion> deleteDataNodes(final String
databaseName, final String ruleName, final Collection<YamlDataNode> dataNodes) {
Collection<MetaDataVersion> result = new LinkedList<>();
for (YamlDataNode each : dataNodes) {
- String delKey =
DatabaseMetaDataNode.getDatabaseRuleNode(databaseName, ruleName, each.getKey());
+ String delKey =
DatabaseRuleMetaDataNode.getDatabaseRuleNode(databaseName, ruleName,
each.getKey());
repository.delete(delKey);
result.add(new MetaDataVersion(delKey));
}
@@ -130,6 +130,6 @@ public final class DatabaseRulePersistService extends
AbstractPersistService imp
}
private String getActiveVersion(final String databaseName, final String
ruleName, final String key) {
- return
repository.getDirectly(DatabaseMetaDataNode.getDatabaseRuleActiveVersionNode(databaseName,
ruleName, key));
+ return
repository.getDirectly(DatabaseRuleMetaDataNode.getDatabaseRuleActiveVersionNode(databaseName,
ruleName, key));
}
}
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/schema/TableMetaDataPersistService.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/schema/TableMetaDataPersistService.java
index 0cac6e01166..caa12fd28a0 100644
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/schema/TableMetaDataPersistService.java
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/schema/TableMetaDataPersistService.java
@@ -24,7 +24,7 @@ import
org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import
org.apache.shardingsphere.infra.yaml.schema.pojo.YamlShardingSphereTable;
import org.apache.shardingsphere.infra.yaml.schema.swapper.YamlTableSwapper;
-import org.apache.shardingsphere.metadata.persist.node.DatabaseMetaDataNode;
+import
org.apache.shardingsphere.metadata.persist.node.metadata.TableMetaDataNode;
import org.apache.shardingsphere.mode.spi.PersistRepository;
import java.util.Collection;
@@ -49,12 +49,12 @@ public final class TableMetaDataPersistService implements
SchemaMetaDataPersistS
public void persist(final String databaseName, final String schemaName,
final Map<String, ShardingSphereTable> tables) {
for (Entry<String, ShardingSphereTable> entry : tables.entrySet()) {
String tableName = entry.getKey().toLowerCase();
- List<String> versions =
repository.getChildrenKeys(DatabaseMetaDataNode.getTableVersionsNode(databaseName,
schemaName, tableName));
-
repository.persist(DatabaseMetaDataNode.getTableVersionNode(databaseName,
schemaName, tableName, versions.isEmpty()
+ List<String> versions =
repository.getChildrenKeys(TableMetaDataNode.getTableVersionsNode(databaseName,
schemaName, tableName));
+
repository.persist(TableMetaDataNode.getTableVersionNode(databaseName,
schemaName, tableName, versions.isEmpty()
? DEFAULT_VERSION
: String.valueOf(Integer.parseInt(versions.get(0)) + 1)),
YamlEngine.marshal(new
YamlTableSwapper().swapToYamlConfiguration(entry.getValue())));
- if
(Strings.isNullOrEmpty(repository.getDirectly(DatabaseMetaDataNode.getTableActiveVersionNode(databaseName,
schemaName, tableName)))) {
-
repository.persist(DatabaseMetaDataNode.getTableActiveVersionNode(databaseName,
schemaName, tableName), DEFAULT_VERSION);
+ if
(Strings.isNullOrEmpty(repository.getDirectly(TableMetaDataNode.getTableActiveVersionNode(databaseName,
schemaName, tableName)))) {
+
repository.persist(TableMetaDataNode.getTableActiveVersionNode(databaseName,
schemaName, tableName), DEFAULT_VERSION);
}
}
}
@@ -64,25 +64,25 @@ public final class TableMetaDataPersistService implements
SchemaMetaDataPersistS
Collection<MetaDataVersion> result = new LinkedList<>();
for (Entry<String, ShardingSphereTable> entry : tables.entrySet()) {
String tableName = entry.getKey().toLowerCase();
- List<String> versions =
repository.getChildrenKeys(DatabaseMetaDataNode.getTableVersionsNode(databaseName,
schemaName, tableName));
+ List<String> versions =
repository.getChildrenKeys(TableMetaDataNode.getTableVersionsNode(databaseName,
schemaName, tableName));
String nextActiveVersion = versions.isEmpty() ? DEFAULT_VERSION :
String.valueOf(Integer.parseInt(versions.get(0)) + 1);
-
repository.persist(DatabaseMetaDataNode.getTableVersionNode(databaseName,
schemaName, tableName, nextActiveVersion),
+
repository.persist(TableMetaDataNode.getTableVersionNode(databaseName,
schemaName, tableName, nextActiveVersion),
YamlEngine.marshal(new
YamlTableSwapper().swapToYamlConfiguration(entry.getValue())));
if (Strings.isNullOrEmpty(getActiveVersion(databaseName,
schemaName, tableName))) {
-
repository.persist(DatabaseMetaDataNode.getTableActiveVersionNode(databaseName,
schemaName, tableName), DEFAULT_VERSION);
+
repository.persist(TableMetaDataNode.getTableActiveVersionNode(databaseName,
schemaName, tableName), DEFAULT_VERSION);
}
- result.add(new
MetaDataVersion(DatabaseMetaDataNode.getTableNode(databaseName, schemaName,
tableName), getActiveVersion(databaseName, schemaName, tableName),
nextActiveVersion));
+ result.add(new
MetaDataVersion(TableMetaDataNode.getTableNode(databaseName, schemaName,
tableName), getActiveVersion(databaseName, schemaName, tableName),
nextActiveVersion));
}
return result;
}
private String getActiveVersion(final String databaseName, final String
schemaName, final String tableName) {
- return
repository.getDirectly(DatabaseMetaDataNode.getTableActiveVersionNode(databaseName,
schemaName, tableName));
+ return
repository.getDirectly(TableMetaDataNode.getTableActiveVersionNode(databaseName,
schemaName, tableName));
}
@Override
public Map<String, ShardingSphereTable> load(final String databaseName,
final String schemaName) {
- Collection<String> tableNames =
repository.getChildrenKeys(DatabaseMetaDataNode.getMetaDataTablesPath(databaseName,
schemaName));
+ Collection<String> tableNames =
repository.getChildrenKeys(TableMetaDataNode.getMetaDataTablesNode(databaseName,
schemaName));
return tableNames.isEmpty() ? Collections.emptyMap() :
getTableMetaDataByTableNames(databaseName, schemaName, tableNames);
}
@@ -94,8 +94,8 @@ public final class TableMetaDataPersistService implements
SchemaMetaDataPersistS
private Map<String, ShardingSphereTable>
getTableMetaDataByTableNames(final String databaseName, final String
schemaName, final Collection<String> tableNames) {
Map<String, ShardingSphereTable> result = new
LinkedHashMap<>(tableNames.size(), 1F);
tableNames.forEach(each -> {
- String table =
repository.getDirectly(DatabaseMetaDataNode.getTableVersionNode(databaseName,
schemaName, each,
-
repository.getDirectly(DatabaseMetaDataNode.getTableActiveVersionNode(databaseName,
schemaName, each))));
+ String table =
repository.getDirectly(TableMetaDataNode.getTableVersionNode(databaseName,
schemaName, each,
+
repository.getDirectly(TableMetaDataNode.getTableActiveVersionNode(databaseName,
schemaName, each))));
if (!Strings.isNullOrEmpty(table)) {
result.put(each.toLowerCase(), new
YamlTableSwapper().swapToObject(YamlEngine.unmarshal(table,
YamlShardingSphereTable.class)));
}
@@ -105,6 +105,6 @@ public final class TableMetaDataPersistService implements
SchemaMetaDataPersistS
@Override
public void delete(final String databaseName, final String schemaName,
final String tableName) {
- repository.delete(DatabaseMetaDataNode.getTableNode(databaseName,
schemaName, tableName.toLowerCase()));
+ repository.delete(TableMetaDataNode.getTableNode(databaseName,
schemaName, tableName.toLowerCase()));
}
}
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/schema/ViewMetaDataPersistService.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/schema/ViewMetaDataPersistService.java
index 72b32bf273c..65eb5fb9717 100644
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/schema/ViewMetaDataPersistService.java
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/schema/ViewMetaDataPersistService.java
@@ -24,7 +24,7 @@ import
org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import org.apache.shardingsphere.infra.yaml.schema.pojo.YamlShardingSphereView;
import org.apache.shardingsphere.infra.yaml.schema.swapper.YamlViewSwapper;
-import org.apache.shardingsphere.metadata.persist.node.DatabaseMetaDataNode;
+import
org.apache.shardingsphere.metadata.persist.node.metadata.ViewMetaDataNode;
import org.apache.shardingsphere.mode.spi.PersistRepository;
import java.util.Collection;
@@ -49,12 +49,12 @@ public final class ViewMetaDataPersistService implements
SchemaMetaDataPersistSe
public void persist(final String databaseName, final String schemaName,
final Map<String, ShardingSphereView> views) {
for (Entry<String, ShardingSphereView> entry : views.entrySet()) {
String viewName = entry.getKey().toLowerCase();
- List<String> versions =
repository.getChildrenKeys(DatabaseMetaDataNode.getViewVersionsNode(databaseName,
schemaName, viewName));
-
repository.persist(DatabaseMetaDataNode.getViewVersionNode(databaseName,
schemaName, viewName, versions.isEmpty()
+ List<String> versions =
repository.getChildrenKeys(ViewMetaDataNode.getViewVersionsNode(databaseName,
schemaName, viewName));
+
repository.persist(ViewMetaDataNode.getViewVersionNode(databaseName,
schemaName, viewName, versions.isEmpty()
? DEFAULT_VERSION
: String.valueOf(Integer.parseInt(versions.get(0)) + 1)),
YamlEngine.marshal(new
YamlViewSwapper().swapToYamlConfiguration(entry.getValue())));
- if
(Strings.isNullOrEmpty(repository.getDirectly(DatabaseMetaDataNode.getViewActiveVersionNode(databaseName,
schemaName, viewName)))) {
-
repository.persist(DatabaseMetaDataNode.getViewActiveVersionNode(databaseName,
schemaName, viewName), DEFAULT_VERSION);
+ if
(Strings.isNullOrEmpty(repository.getDirectly(ViewMetaDataNode.getViewActiveVersionNode(databaseName,
schemaName, viewName)))) {
+
repository.persist(ViewMetaDataNode.getViewActiveVersionNode(databaseName,
schemaName, viewName), DEFAULT_VERSION);
}
}
}
@@ -64,25 +64,25 @@ public final class ViewMetaDataPersistService implements
SchemaMetaDataPersistSe
Collection<MetaDataVersion> result = new LinkedList<>();
for (Entry<String, ShardingSphereView> entry : views.entrySet()) {
String viewName = entry.getKey().toLowerCase();
- List<String> versions =
repository.getChildrenKeys(DatabaseMetaDataNode.getViewVersionsNode(databaseName,
schemaName, viewName));
+ List<String> versions =
repository.getChildrenKeys(ViewMetaDataNode.getViewVersionsNode(databaseName,
schemaName, viewName));
String nextActiveVersion = versions.isEmpty() ? DEFAULT_VERSION :
String.valueOf(Integer.parseInt(versions.get(0)) + 1);
-
repository.persist(DatabaseMetaDataNode.getViewVersionNode(databaseName,
schemaName, viewName, nextActiveVersion),
+
repository.persist(ViewMetaDataNode.getViewVersionNode(databaseName,
schemaName, viewName, nextActiveVersion),
YamlEngine.marshal(new
YamlViewSwapper().swapToYamlConfiguration(entry.getValue())));
if (Strings.isNullOrEmpty(getActiveVersion(databaseName,
schemaName, viewName))) {
-
repository.persist(DatabaseMetaDataNode.getViewActiveVersionNode(databaseName,
schemaName, viewName), DEFAULT_VERSION);
+
repository.persist(ViewMetaDataNode.getViewActiveVersionNode(databaseName,
schemaName, viewName), DEFAULT_VERSION);
}
- result.add(new
MetaDataVersion(DatabaseMetaDataNode.getViewNode(databaseName, schemaName,
viewName), getActiveVersion(databaseName, schemaName, viewName),
nextActiveVersion));
+ result.add(new
MetaDataVersion(ViewMetaDataNode.getViewNode(databaseName, schemaName,
viewName), getActiveVersion(databaseName, schemaName, viewName),
nextActiveVersion));
}
return result;
}
private String getActiveVersion(final String databaseName, final String
schemaName, final String viewName) {
- return
repository.getDirectly(DatabaseMetaDataNode.getViewActiveVersionNode(databaseName,
schemaName, viewName));
+ return
repository.getDirectly(ViewMetaDataNode.getViewActiveVersionNode(databaseName,
schemaName, viewName));
}
@Override
public Map<String, ShardingSphereView> load(final String databaseName,
final String schemaName) {
- Collection<String> viewNames =
repository.getChildrenKeys(DatabaseMetaDataNode.getMetaDataViewsPath(databaseName,
schemaName));
+ Collection<String> viewNames =
repository.getChildrenKeys(ViewMetaDataNode.getMetaDataViewsNode(databaseName,
schemaName));
return viewNames.isEmpty() ? Collections.emptyMap() :
getViewMetaDataByViewNames(databaseName, schemaName, viewNames);
}
@@ -94,8 +94,8 @@ public final class ViewMetaDataPersistService implements
SchemaMetaDataPersistSe
private Map<String, ShardingSphereView> getViewMetaDataByViewNames(final
String databaseName, final String schemaName, final Collection<String>
viewNames) {
Map<String, ShardingSphereView> result = new
LinkedHashMap<>(viewNames.size(), 1F);
viewNames.forEach(each -> {
- String view =
repository.getDirectly(DatabaseMetaDataNode.getViewVersionNode(databaseName,
schemaName, each,
-
repository.getDirectly(DatabaseMetaDataNode.getViewActiveVersionNode(databaseName,
schemaName, each))));
+ String view =
repository.getDirectly(ViewMetaDataNode.getViewVersionNode(databaseName,
schemaName, each,
+
repository.getDirectly(ViewMetaDataNode.getViewActiveVersionNode(databaseName,
schemaName, each))));
if (!Strings.isNullOrEmpty(view)) {
result.put(each.toLowerCase(), new
YamlViewSwapper().swapToObject(YamlEngine.unmarshal(view,
YamlShardingSphereView.class)));
}
@@ -105,6 +105,6 @@ public final class ViewMetaDataPersistService implements
SchemaMetaDataPersistSe
@Override
public void delete(final String databaseName, final String schemaName,
final String viewName) {
- repository.delete(DatabaseMetaDataNode.getViewNode(databaseName,
schemaName, viewName.toLowerCase()));
+ repository.delete(ViewMetaDataNode.getViewNode(databaseName,
schemaName, viewName.toLowerCase()));
}
}
diff --git
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodeTest.java
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodeTest.java
index 645e1cad74b..9d03e62b767 100644
---
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodeTest.java
+++
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodeTest.java
@@ -27,28 +27,6 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
class DatabaseMetaDataNodeTest {
- @Test
- void assertIsDataSourcesNode() {
-
assertTrue(DatabaseMetaDataNode.isDataSourcesNode("/metadata/logic_db/data_sources/foo_ds"));
- }
-
- @Test
- void assertGetDataSourceNameByDataSourceUnitNode() {
- Optional<String> actual =
DatabaseMetaDataNode.getDataSourceNameByDataSourceUnitNode("/metadata/logic_db/data_sources/units/foo_ds/versions/0");
- assertTrue(actual.isPresent());
- assertThat(actual.get(), is("foo_ds"));
- }
-
- @Test
- void assertIsDataSourceUnitActiveVersionNode() {
-
assertTrue(DatabaseMetaDataNode.isDataSourceUnitActiveVersionNode("/metadata/logic_db/data_sources/units/foo_ds/active_version"));
- }
-
- @Test
- void assertIsDataSourceNodeActiveVersionNode() {
-
assertTrue(DatabaseMetaDataNode.isDataSourceNodeActiveVersionNode("/metadata/logic_db/data_sources/nodes/foo_ds/active_version"));
- }
-
@Test
void assertGetDatabaseName() {
Optional<String> actual =
DatabaseMetaDataNode.getDatabaseName("/metadata/foo_db");
@@ -76,119 +54,4 @@ class DatabaseMetaDataNodeTest {
assertTrue(actual.isPresent());
assertThat(actual.get(), is("foo_schema"));
}
-
- @Test
- void assertGetTableName() {
- Optional<String> actual =
DatabaseMetaDataNode.getTableName("/metadata/foo_db/schemas/foo_schema/tables/foo_table/active_version");
- assertTrue(actual.isPresent());
- assertThat(actual.get(), is("foo_table"));
- }
-
- @Test
- void assertIsTableActiveVersionNode() {
-
assertTrue(DatabaseMetaDataNode.isTableActiveVersionNode("/metadata/foo_db/schemas/foo_schema/tables/foo_table/active_version"));
- }
-
- @Test
- void assertGetViewName() {
- Optional<String> actual =
DatabaseMetaDataNode.getViewName("/metadata/foo_db/schemas/foo_schema/views/foo_view");
- assertTrue(actual.isPresent());
- assertThat(actual.get(), is("foo_view"));
- }
-
- @Test
- void assertIsViewActiveVersionNode() {
-
assertTrue(DatabaseMetaDataNode.isViewActiveVersionNode("/metadata/foo_db/schemas/foo_schema/views/foo_view/active_version"));
- }
-
- @Test
- void assertGetVersionNodeByActiveVersionPath() {
-
assertThat(DatabaseMetaDataNode.getVersionNodeByActiveVersionPath("/metadata/foo_db/schemas/foo_schema/views/foo_view/active_version",
"0"),
-
is("/metadata/foo_db/schemas/foo_schema/views/foo_view/versions/0"));
- }
-
- @Test
- void assertGetMetaDataDataSourcesNode() {
- assertThat(DatabaseMetaDataNode.getDataSourceUnitsNode("foo_db"),
is("/metadata/foo_db/data_sources/units"));
- }
-
- @Test
- void assertGetMetaDataDataSourceNode() {
- assertThat(DatabaseMetaDataNode.getDataSourceUnitNode("foo_db",
"foo_ds"), is("/metadata/foo_db/data_sources/units/foo_ds"));
- }
-
- @Test
- void assertGetDataSourceUnitNodeWithVersion() {
-
assertThat(DatabaseMetaDataNode.getDataSourceUnitNodeWithVersion("foo_db",
"foo_ds", "0"), is("/metadata/foo_db/data_sources/units/foo_ds/versions/0"));
- }
-
- @Test
- void assertGetDataSourceUnitVersionsNode() {
-
assertThat(DatabaseMetaDataNode.getDataSourceUnitVersionsNode("foo_db",
"foo_ds"), is("/metadata/foo_db/data_sources/units/foo_ds/versions"));
- }
-
- @Test
- void assertGetDataSourceUnitActiveVersionNode() {
-
assertThat(DatabaseMetaDataNode.getDataSourceUnitActiveVersionNode("foo_db",
"foo_ds"), is("/metadata/foo_db/data_sources/units/foo_ds/active_version"));
- }
-
- @Test
- void assertGetDatabaseRuleActiveVersionNode() {
-
assertThat(DatabaseMetaDataNode.getDatabaseRuleActiveVersionNode("foo_db",
"foo_rule", "foo_tables"),
is("/metadata/foo_db/rules/foo_rule/foo_tables/active_version"));
- }
-
- @Test
- void assertGetDatabaseRuleVersionsNode() {
- assertThat(DatabaseMetaDataNode.getDatabaseRuleVersionsNode("foo_db",
"sharding", "foo_key"), is("/metadata/foo_db/rules/sharding/foo_key/versions"));
- }
-
- @Test
- void assertGetDatabaseRuleVersionNode() {
- assertThat(DatabaseMetaDataNode.getDatabaseRuleVersionNode("foo_db",
"foo_rule", "foo_tables", "1"),
is("/metadata/foo_db/rules/foo_rule/foo_tables/versions/1"));
- }
-
- @Test
- void assertGetTableActiveVersionNode() {
- assertThat(DatabaseMetaDataNode.getTableActiveVersionNode("foo_db",
"foo_schema", "foo_table"),
is("/metadata/foo_db/schemas/foo_schema/tables/foo_table/active_version"));
- }
-
- @Test
- void assertGetTableVersionsNode() {
- assertThat(DatabaseMetaDataNode.getTableVersionsNode("foo_db",
"foo_schema", "foo_table"),
is("/metadata/foo_db/schemas/foo_schema/tables/foo_table/versions"));
- }
-
- @Test
- void assertGetTableVersionNode() {
- assertThat(DatabaseMetaDataNode.getTableVersionNode("foo_db",
"foo_schema", "foo_table", "0"),
is("/metadata/foo_db/schemas/foo_schema/tables/foo_table/versions/0"));
- }
-
- @Test
- void assertGetTableNode() {
- assertThat(DatabaseMetaDataNode.getTableNode("foo_db", "foo_schema",
"foo_table"), is("/metadata/foo_db/schemas/foo_schema/tables/foo_table"));
- }
-
- @Test
- void assertGetViewActiveVersionNode() {
- assertThat(DatabaseMetaDataNode.getViewActiveVersionNode("foo_db",
"foo_schema", "foo_view"),
is("/metadata/foo_db/schemas/foo_schema/views/foo_view/active_version"));
- }
-
- @Test
- void assertGetViewVersionsNode() {
- assertThat(DatabaseMetaDataNode.getViewVersionsNode("foo_db",
"foo_schema", "foo_view"),
is("/metadata/foo_db/schemas/foo_schema/views/foo_view/versions"));
- }
-
- @Test
- void assertGetViewVersionNode() {
- assertThat(DatabaseMetaDataNode.getViewVersionNode("foo_db",
"foo_schema", "foo_view", "0"),
is("/metadata/foo_db/schemas/foo_schema/views/foo_view/versions/0"));
- }
-
- @Test
- void assertGetViewNode() {
- assertThat(DatabaseMetaDataNode.getViewNode("foo_db", "foo_schema",
"foo_view"), is("/metadata/foo_db/schemas/foo_schema/views/foo_view"));
- }
-
- @Test
- void assertGetDataSourceNodeVersionsNode() {
-
assertThat(DatabaseMetaDataNode.getDataSourceNodeVersionsNode("foo_db",
"foo_ds"), is("/metadata/foo_db/data_sources/nodes/foo_ds/versions"));
- }
}
diff --git
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNodeTest.java
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNodeTest.java
new file mode 100644
index 00000000000..4c9cbf38bfc
--- /dev/null
+++
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNodeTest.java
@@ -0,0 +1,81 @@
+/*
+ * 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 java.util.Optional;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+class DataSourceMetaDataNodeTest {
+
+ @Test
+ void assertIsDataSourcesNode() {
+
assertTrue(DataSourceMetaDataNode.isDataSourcesNode("/metadata/logic_db/data_sources/foo_ds"));
+ }
+
+ @Test
+ void assertGetDataSourceNameByDataSourceUnitNode() {
+ Optional<String> actual =
DataSourceMetaDataNode.getDataSourceNameByDataSourceUnitNode("/metadata/logic_db/data_sources/units/foo_ds/versions/0");
+ assertTrue(actual.isPresent());
+ assertThat(actual.get(), is("foo_ds"));
+ }
+
+ @Test
+ void assertIsDataSourceUnitActiveVersionNode() {
+
assertTrue(DataSourceMetaDataNode.isDataSourceUnitActiveVersionNode("/metadata/logic_db/data_sources/units/foo_ds/active_version"));
+ }
+
+ @Test
+ void assertIsDataSourceNodeActiveVersionNode() {
+
assertTrue(DataSourceMetaDataNode.isDataSourceNodeActiveVersionNode("/metadata/logic_db/data_sources/nodes/foo_ds/active_version"));
+ }
+
+ @Test
+ void assertGetMetaDataDataSourcesNode() {
+ assertThat(DataSourceMetaDataNode.getDataSourceUnitsNode("foo_db"),
is("/metadata/foo_db/data_sources/units"));
+ }
+
+ @Test
+ void assertGetMetaDataDataSourceNode() {
+ assertThat(DataSourceMetaDataNode.getDataSourceUnitNode("foo_db",
"foo_ds"), is("/metadata/foo_db/data_sources/units/foo_ds"));
+ }
+
+ @Test
+ void assertGetDataSourceUnitNodeWithVersion() {
+
assertThat(DataSourceMetaDataNode.getDataSourceUnitVersionNode("foo_db",
"foo_ds", "0"), is("/metadata/foo_db/data_sources/units/foo_ds/versions/0"));
+ }
+
+ @Test
+ void assertGetDataSourceUnitVersionsNode() {
+
assertThat(DataSourceMetaDataNode.getDataSourceUnitVersionsNode("foo_db",
"foo_ds"), is("/metadata/foo_db/data_sources/units/foo_ds/versions"));
+ }
+
+ @Test
+ void assertGetDataSourceUnitActiveVersionNode() {
+
assertThat(DataSourceMetaDataNode.getDataSourceUnitActiveVersionNode("foo_db",
"foo_ds"), is("/metadata/foo_db/data_sources/units/foo_ds/active_version"));
+ }
+
+ @Test
+ void assertGetDataSourceNodeVersionsNode() {
+
assertThat(DataSourceMetaDataNode.getDataSourceNodeVersionsNode("foo_db",
"foo_ds"), is("/metadata/foo_db/data_sources/nodes/foo_ds/versions"));
+ }
+}
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
new file mode 100644
index 00000000000..394e227f933
--- /dev/null
+++
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/DatabaseRuleMetaDataNodeTest.java
@@ -0,0 +1,45 @@
+/*
+ * 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 assertGetDatabaseRuleNode() {
+ assertThat(DatabaseRuleMetaDataNode.getDatabaseRuleNode("foo_db",
"foo_rule", "sharding"), is("/metadata/foo_db/rules/foo_rule/sharding"));
+ }
+
+ @Test
+ void assertGetDatabaseRuleActiveVersionNode() {
+
assertThat(DatabaseRuleMetaDataNode.getDatabaseRuleActiveVersionNode("foo_db",
"foo_rule", "foo_tables"),
is("/metadata/foo_db/rules/foo_rule/foo_tables/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_tables", "1"),
is("/metadata/foo_db/rules/foo_rule/foo_tables/versions/1"));
+ }
+}
diff --git
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/TableMetaDataNodeTest.java
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/TableMetaDataNodeTest.java
new file mode 100644
index 00000000000..8af0ac316d5
--- /dev/null
+++
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/TableMetaDataNodeTest.java
@@ -0,0 +1,61 @@
+/*
+ * 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 java.util.Optional;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+class TableMetaDataNodeTest {
+
+ @Test
+ void assertGetTableNameByActiveVersionNode() {
+ Optional<String> actual =
TableMetaDataNode.getTableNameByActiveVersionNode("/metadata/foo_db/schemas/foo_schema/tables/foo_table/active_version");
+ assertTrue(actual.isPresent());
+ assertThat(actual.get(), is("foo_table"));
+ }
+
+ @Test
+ void assertIsTableActiveVersionNode() {
+
assertTrue(TableMetaDataNode.isTableActiveVersionNode("/metadata/foo_db/schemas/foo_schema/tables/foo_table/active_version"));
+ }
+
+ @Test
+ void assertGetTableActiveVersionNode() {
+ assertThat(TableMetaDataNode.getTableActiveVersionNode("foo_db",
"foo_schema", "foo_table"),
is("/metadata/foo_db/schemas/foo_schema/tables/foo_table/active_version"));
+ }
+
+ @Test
+ void assertGetTableVersionsNode() {
+ assertThat(TableMetaDataNode.getTableVersionsNode("foo_db",
"foo_schema", "foo_table"),
is("/metadata/foo_db/schemas/foo_schema/tables/foo_table/versions"));
+ }
+
+ @Test
+ void assertGetTableVersionNode() {
+ assertThat(TableMetaDataNode.getTableVersionNode("foo_db",
"foo_schema", "foo_table", "0"),
is("/metadata/foo_db/schemas/foo_schema/tables/foo_table/versions/0"));
+ }
+
+ @Test
+ void assertGetTableNode() {
+ assertThat(TableMetaDataNode.getTableNode("foo_db", "foo_schema",
"foo_table"), is("/metadata/foo_db/schemas/foo_schema/tables/foo_table"));
+ }
+}
diff --git
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/ViewMetaDataNodeTest.java
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/ViewMetaDataNodeTest.java
new file mode 100644
index 00000000000..444efffc664
--- /dev/null
+++
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/ViewMetaDataNodeTest.java
@@ -0,0 +1,75 @@
+/*
+ * 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.apache.shardingsphere.metadata.persist.node.DatabaseMetaDataNode;
+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.assertTrue;
+
+class ViewMetaDataNodeTest {
+
+ @Test
+ void assertGetViewName() {
+ Optional<String> actual =
ViewMetaDataNode.getViewName("/metadata/foo_db/schemas/foo_schema/views/foo_view");
+ assertTrue(actual.isPresent());
+ assertThat(actual.get(), is("foo_view"));
+ }
+
+ @Test
+ void assertIsViewActiveVersionNode() {
+
assertTrue(ViewMetaDataNode.isViewActiveVersionNode("/metadata/foo_db/schemas/foo_schema/views/foo_view/active_version"));
+ }
+
+ @Test
+ void assertGetVersionNodeByActiveVersionPath() {
+
assertThat(DatabaseMetaDataNode.getVersionNodeByActiveVersionPath("/metadata/foo_db/schemas/foo_schema/views/foo_view/active_version",
"0"),
+
is("/metadata/foo_db/schemas/foo_schema/views/foo_view/versions/0"));
+ }
+
+ @Test
+ void assertGetViewActiveVersionNode() {
+ assertThat(ViewMetaDataNode.getViewActiveVersionNode("foo_db",
"foo_schema", "foo_view"),
is("/metadata/foo_db/schemas/foo_schema/views/foo_view/active_version"));
+ }
+
+ @Test
+ void assertGetViewVersionsNode() {
+ assertThat(ViewMetaDataNode.getViewVersionsNode("foo_db",
"foo_schema", "foo_view"),
is("/metadata/foo_db/schemas/foo_schema/views/foo_view/versions"));
+ }
+
+ @Test
+ void assertGetViewVersionNode() {
+ assertThat(ViewMetaDataNode.getViewVersionNode("foo_db", "foo_schema",
"foo_view", "0"),
is("/metadata/foo_db/schemas/foo_schema/views/foo_view/versions/0"));
+ }
+
+ @Test
+ void assertGetViewNode() {
+ assertThat(ViewMetaDataNode.getViewNode("foo_db", "foo_schema",
"foo_view"), is("/metadata/foo_db/schemas/foo_schema/views/foo_view"));
+ }
+
+ @Test
+ void assertGetTableNameByActiveVersionNode() {
+ Optional<String> actual =
ViewMetaDataNode.getViewNameByActiveVersionNode("/metadata/foo_db/schemas/foo_schema/views/foo_view/active_version");
+ assertTrue(actual.isPresent());
+ assertThat(actual.get(), is("foo_view"));
+ }
+}
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/watcher/MetaDataChangedWatcher.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/watcher/MetaDataChangedWatcher.java
index d95c1655948..c3d21be85ea 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/watcher/MetaDataChangedWatcher.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/watcher/MetaDataChangedWatcher.java
@@ -20,6 +20,9 @@ package
org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.meta
import com.google.common.base.Preconditions;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
import org.apache.shardingsphere.metadata.persist.node.DatabaseMetaDataNode;
+import
org.apache.shardingsphere.metadata.persist.node.metadata.DataSourceMetaDataNode;
+import
org.apache.shardingsphere.metadata.persist.node.metadata.TableMetaDataNode;
+import
org.apache.shardingsphere.metadata.persist.node.metadata.ViewMetaDataNode;
import org.apache.shardingsphere.mode.event.DataChangedEvent;
import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
import
org.apache.shardingsphere.mode.event.datasource.nodes.AlterStorageNodeEvent;
@@ -75,16 +78,16 @@ public final class MetaDataChangedWatcher implements
GovernanceWatcher<Governanc
return createSchemaChangedEvent(databaseName.get(),
schemaName.get(), event);
}
schemaName = DatabaseMetaDataNode.getSchemaNameByTableNode(key);
- if (databaseName.isPresent() && schemaName.isPresent() &&
DatabaseMetaDataNode.isTableActiveVersionNode(event.getKey())) {
+ if (databaseName.isPresent() && schemaName.isPresent() &&
TableMetaDataNode.isTableActiveVersionNode(event.getKey())) {
return createTableChangedEvent(databaseName.get(),
schemaName.get(), event);
}
- if (databaseName.isPresent() && schemaName.isPresent() &&
DatabaseMetaDataNode.isViewActiveVersionNode(event.getKey())) {
+ if (databaseName.isPresent() && schemaName.isPresent() &&
ViewMetaDataNode.isViewActiveVersionNode(event.getKey())) {
return createViewChangedEvent(databaseName.get(),
schemaName.get(), event);
}
if (!databaseName.isPresent()) {
return Optional.empty();
}
- if (DatabaseMetaDataNode.isDataSourcesNode(key)) {
+ if (DataSourceMetaDataNode.isDataSourcesNode(key)) {
return createDataSourceEvent(databaseName.get(), event);
}
return ruleConfigurationEventBuilder.build(databaseName.get(), event);
@@ -111,7 +114,7 @@ public final class MetaDataChangedWatcher implements
GovernanceWatcher<Governanc
}
private Optional<GovernanceEvent> createTableChangedEvent(final String
databaseName, final String schemaName, final DataChangedEvent event) {
- Optional<String> tableName =
DatabaseMetaDataNode.getTableName(event.getKey());
+ Optional<String> tableName =
TableMetaDataNode.getTableNameByActiveVersionNode(event.getKey());
Preconditions.checkState(tableName.isPresent(), "Not found table
name.");
if (Type.DELETED == event.getType()) {
return Optional.of(new DropTableEvent(databaseName, schemaName,
tableName.get()));
@@ -120,7 +123,7 @@ public final class MetaDataChangedWatcher implements
GovernanceWatcher<Governanc
}
private Optional<GovernanceEvent> createViewChangedEvent(final String
databaseName, final String schemaName, final DataChangedEvent event) {
- Optional<String> viewName =
DatabaseMetaDataNode.getViewName(event.getKey());
+ Optional<String> viewName =
ViewMetaDataNode.getViewNameByActiveVersionNode(event.getKey());
Preconditions.checkState(viewName.isPresent(), "Not found view name.");
if (Type.DELETED == event.getType()) {
return Optional.of(new DropViewEvent(databaseName, schemaName,
viewName.get(), event.getKey(), event.getValue()));
@@ -129,17 +132,17 @@ public final class MetaDataChangedWatcher implements
GovernanceWatcher<Governanc
}
private Optional<GovernanceEvent> createDataSourceEvent(final String
databaseName, final DataChangedEvent event) {
- if
(DatabaseMetaDataNode.isDataSourceUnitActiveVersionNode(event.getKey())) {
+ if
(DataSourceMetaDataNode.isDataSourceUnitActiveVersionNode(event.getKey())) {
return createStorageUnitChangedEvent(databaseName, event);
}
- if
(DatabaseMetaDataNode.isDataSourceNodeActiveVersionNode(event.getKey())) {
+ if
(DataSourceMetaDataNode.isDataSourceNodeActiveVersionNode(event.getKey())) {
return createStorageNodeChangedEvent(databaseName, event);
}
return Optional.empty();
}
private Optional<GovernanceEvent> createStorageUnitChangedEvent(final
String databaseName, final DataChangedEvent event) {
- Optional<String> dataSourceUnitName =
DatabaseMetaDataNode.getDataSourceNameByDataSourceUnitNode(event.getKey());
+ Optional<String> dataSourceUnitName =
DataSourceMetaDataNode.getDataSourceNameByDataSourceUnitNode(event.getKey());
if (!dataSourceUnitName.isPresent()) {
return Optional.empty();
}
@@ -153,7 +156,7 @@ public final class MetaDataChangedWatcher implements
GovernanceWatcher<Governanc
}
private Optional<GovernanceEvent> createStorageNodeChangedEvent(final
String databaseName, final DataChangedEvent event) {
- Optional<String> dataSourceNodeName =
DatabaseMetaDataNode.getDataSourceNameByDataSourceNode(event.getKey());
+ Optional<String> dataSourceNodeName =
DataSourceMetaDataNode.getDataSourceNameByDataSourceNode(event.getKey());
if (!dataSourceNodeName.isPresent()) {
return Optional.empty();
}