This is an automated email from the ASF dual-hosted git repository.
zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 3a412d529a2 Refactor NodePathGenerator (#34745)
3a412d529a2 is described below
commit 3a412d529a2929ecf89421887ad259fb82b121b8
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Feb 22 13:59:01 2025 +0800
Refactor NodePathGenerator (#34745)
* Refactor NodePathGenerator
* Refactor NodePathGenerator
* Refactor NodePathGenerator
* Refactor NodePathGenerator
* Refactor NodePathGenerator
* Refactor NodePathGenerator
* Refactor NodePathGenerator
* Refactor NodePathGenerator
* Refactor NodePathGenerator
---
...ittingQualifiedDataSourceChangedSubscriber.java | 2 +-
.../collect/StatisticsCollectJobWorker.java | 2 +-
.../database/DataSourceUnitPersistService.java | 8 +--
.../database/DatabaseRulePersistService.java | 10 ++--
.../config/global/GlobalRulePersistService.java | 6 +--
.../config/global/PropertiesPersistService.java | 6 +--
.../service/DatabaseMetaDataPersistService.java | 6 +--
.../service/SchemaMetaDataPersistService.java | 6 +--
.../service/TableMetaDataPersistService.java | 8 +--
.../service/TableRowDataPersistService.java | 10 ++--
.../service/ViewMetaDataPersistService.java | 8 +--
.../statistics/StatisticsPersistService.java | 10 ++--
.../state/cluster/ClusterStatePersistService.java | 4 +-
.../mode/state/node/ComputeNodePersistService.java | 24 ++++-----
.../QualifiedDataSourceStatePersistService.java | 6 +--
.../mode/node/path/NodePathGenerator.java | 61 ++++++++++------------
...ssTriggerNodePath.java => NodePathSegment.java} | 31 +++++++----
...sTriggerNodePath.java => NodePathVariable.java} | 32 ++++++++----
.../global/GlobalPropertiesNodePathParser.java | 2 +-
.../config/global/GlobalRuleNodePathParser.java | 2 +-
.../node/path/metadata/DatabaseNodePathParser.java | 2 +-
.../database/SchemaMetaDataNodePathParser.java | 2 +-
.../database/TableMetaDataNodePathParser.java | 4 +-
.../database/ViewMetaDataNodePathParser.java | 4 +-
.../metadata/storage/DataSourceNodePathParser.java | 2 +-
.../storage/StorageNodeNodePathParser.java | 4 +-
.../storage/StorageUnitNodePathParser.java | 4 +-
...NodePath.java => InstanceProcessNodeValue.java} | 14 ++---
.../process/KillProcessTriggerNodePath.java | 6 +--
.../process/ShowProcessListTriggerNodePath.java | 6 +--
.../storage/QualifiedDataSourceNodePathParser.java | 2 +-
.../DatabaseListenerCoordinatorNodePathParser.java | 5 +-
.../path/statistics/StatisticsNodePathParser.java | 8 +--
.../mode/node/path/NodePathSegmentTest.java | 54 +++++++++++++++++++
...NodePathTest.java => NodePathVariableTest.java} | 20 +++++--
.../global/GlobalPropertiesNodePathTest.java | 2 +-
.../path/config/global/GlobalRuleNodePathTest.java | 4 +-
.../node/path/execution/ProcessNodePathTest.java | 4 +-
.../database/TableMetadataNodePathTest.java | 10 ++--
.../database/ViewMetadataNodePathTest.java | 10 ++--
.../metadata/rule/DatabaseRuleNodePathTest.java | 10 ++--
.../metadata/storage/StorageNodeNodePathTest.java | 4 +-
.../metadata/storage/StorageUnitNodePathTest.java | 4 +-
.../path/node/compute/label/LabelNodePathTest.java | 2 +-
.../process/KillProcessTriggerNodePathTest.java | 4 +-
.../ShowProcessListTriggerNodePathTest.java | 4 +-
.../node/compute/status/OnlineNodePathTest.java | 6 +--
.../node/compute/status/StatusNodePathTest.java | 4 +-
.../workerid/ComputeNodeWorkerIDNodePathTest.java | 2 +-
.../storage/QualifiedDataSourceNodePathTest.java | 2 +-
.../WorkerIDReservationNodePathTest.java | 4 +-
.../mode/node/path/state/ClusterNodePathTest.java | 2 +-
.../DatabaseListenerCoordinatorNodePathTest.java | 4 +-
.../statistics/StatisticsDataNodePathTest.java | 14 ++---
.../path/statistics/StatisticsJobNodePathTest.java | 2 +-
.../global/type/ClusterStateChangedHandler.java | 2 +-
.../global/type/ComputeNodeOnlineHandler.java | 4 +-
.../type/ComputeNodeStateChangedHandler.java | 6 +--
.../type/DatabaseListenerChangedHandler.java | 6 +--
.../global/type/GlobalRuleChangedHandler.java | 2 +-
.../handler/global/type/KillProcessHandler.java | 4 +-
.../global/type/PropertiesChangedHandler.java | 2 +-
.../type/QualifiedDataSourceChangedHandler.java | 2 +-
.../global/type/ShowProcessListHandler.java | 4 +-
.../global/type/StatisticsChangedHandler.java | 2 +-
.../listener/DataChangedEventListenerRegistry.java | 2 +-
.../ClusterDatabaseListenerPersistCoordinator.java | 4 +-
.../process/ClusterProcessPersistCoordinator.java | 7 +--
.../service/ClusterProcessPersistService.java | 15 +++---
.../workerid/ReservationPersistService.java | 2 +-
70 files changed, 311 insertions(+), 232 deletions(-)
diff --git
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/deliver/ReadwriteSplittingQualifiedDataSourceChangedSubscriber.java
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/deliver/ReadwriteSplittingQualifiedDataSourceChangedSubscriber.java
index fb66cbbab9d..98d2e52d22e 100644
---
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/deliver/ReadwriteSplittingQualifiedDataSourceChangedSubscriber.java
+++
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/deliver/ReadwriteSplittingQualifiedDataSourceChangedSubscriber.java
@@ -39,6 +39,6 @@ public final class
ReadwriteSplittingQualifiedDataSourceChangedSubscriber implem
*/
@Subscribe
public void delete(final QualifiedDataSourceDeletedEvent event) {
- repository.delete(NodePathGenerator.generatePath(new
QualifiedDataSourceNodePath(event.getQualifiedDataSource()), false));
+ repository.delete(NodePathGenerator.toPath(new
QualifiedDataSourceNodePath(event.getQualifiedDataSource()), false));
}
}
diff --git
a/kernel/schedule/core/src/main/java/org/apache/shardingsphere/schedule/core/job/statistics/collect/StatisticsCollectJobWorker.java
b/kernel/schedule/core/src/main/java/org/apache/shardingsphere/schedule/core/job/statistics/collect/StatisticsCollectJobWorker.java
index 49fb9d13060..c202e539806 100644
---
a/kernel/schedule/core/src/main/java/org/apache/shardingsphere/schedule/core/job/statistics/collect/StatisticsCollectJobWorker.java
+++
b/kernel/schedule/core/src/main/java/org/apache/shardingsphere/schedule/core/job/statistics/collect/StatisticsCollectJobWorker.java
@@ -69,7 +69,7 @@ public final class StatisticsCollectJobWorker {
private CoordinatorRegistryCenter createRegistryCenter(final
ModeConfiguration modeConfig) {
ClusterPersistRepositoryConfiguration repositoryConfig =
(ClusterPersistRepositoryConfiguration) modeConfig.getRepository();
- String namespace = repositoryConfig.getNamespace() +
NodePathGenerator.generatePath(new StatisticsJobNodePath(), false);
+ String namespace = repositoryConfig.getNamespace() +
NodePathGenerator.toPath(new StatisticsJobNodePath(), false);
CoordinatorRegistryCenter result = new
ZookeeperRegistryCenter(getZookeeperConfiguration(repositoryConfig, namespace));
result.init();
return result;
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/database/DataSourceUnitPersistService.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/database/DataSourceUnitPersistService.java
index 2191c10e9a6..e5c0fdae66a 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/database/DataSourceUnitPersistService.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/database/DataSourceUnitPersistService.java
@@ -56,7 +56,7 @@ public final class DataSourceUnitPersistService {
* @return data source pool properties map
*/
public Map<String, DataSourcePoolProperties> load(final String
databaseName) {
- Collection<String> childrenKeys =
repository.getChildrenKeys(NodePathGenerator.generatePath(new
StorageUnitNodePath(databaseName, null), false));
+ Collection<String> childrenKeys =
repository.getChildrenKeys(NodePathGenerator.toPath(new
StorageUnitNodePath(databaseName, null), false));
return childrenKeys.stream().collect(Collectors.toMap(each -> each,
each -> load(databaseName, each), (a, b) -> b, () -> new
LinkedHashMap<>(childrenKeys.size(), 1F)));
}
@@ -69,7 +69,7 @@ public final class DataSourceUnitPersistService {
*/
@SuppressWarnings("unchecked")
public DataSourcePoolProperties load(final String databaseName, final
String dataSourceName) {
- VersionNodePath versionNodePath =
NodePathGenerator.generateVersionPath(new StorageUnitNodePath(databaseName,
dataSourceName));
+ VersionNodePath versionNodePath = NodePathGenerator.toVersionPath(new
StorageUnitNodePath(databaseName, dataSourceName));
int activeVersion =
Integer.parseInt(repository.query(versionNodePath.getActiveVersionPath()));
String dataSourceContent =
repository.query(versionNodePath.getVersionPath(activeVersion));
return
yamlDataSourceConfigurationSwapper.swapToDataSourcePoolProperties(YamlEngine.unmarshal(dataSourceContent,
Map.class));
@@ -83,7 +83,7 @@ public final class DataSourceUnitPersistService {
*/
public void persist(final String databaseName, final Map<String,
DataSourcePoolProperties> dataSourcePropsMap) {
for (Entry<String, DataSourcePoolProperties> entry :
dataSourcePropsMap.entrySet()) {
- VersionNodePath versionNodePath =
NodePathGenerator.generateVersionPath(new StorageUnitNodePath(databaseName,
entry.getKey()));
+ VersionNodePath versionNodePath =
NodePathGenerator.toVersionPath(new StorageUnitNodePath(databaseName,
entry.getKey()));
metaDataVersionPersistService.persist(versionNodePath,
YamlEngine.marshal(yamlDataSourceConfigurationSwapper.swapToMap(entry.getValue())));
}
}
@@ -95,6 +95,6 @@ public final class DataSourceUnitPersistService {
* @param dataSourceName data source name
*/
public void delete(final String databaseName, final String dataSourceName)
{
- repository.delete(NodePathGenerator.generatePath(new
StorageUnitNodePath(databaseName, dataSourceName), false));
+ repository.delete(NodePathGenerator.toPath(new
StorageUnitNodePath(databaseName, dataSourceName), false));
}
}
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/database/DatabaseRulePersistService.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/database/DatabaseRulePersistService.java
index 905a55b0cd2..d52b9394ac0 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/database/DatabaseRulePersistService.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/database/DatabaseRulePersistService.java
@@ -68,7 +68,7 @@ public final class DatabaseRulePersistService {
*/
public Collection<RuleConfiguration> load(final String databaseName) {
return yamlRepositoryTupleSwapperEngine.swapToRuleConfigurations(
-
repositoryTuplePersistService.load(NodePathGenerator.generatePath(new
DatabaseRuleNodePath(databaseName, null, null), false)));
+
repositoryTuplePersistService.load(NodePathGenerator.toPath(new
DatabaseRuleNodePath(databaseName, null, null), false)));
}
/**
@@ -94,8 +94,8 @@ public final class DatabaseRulePersistService {
for (RepositoryTuple each : repositoryTuples) {
DatabaseRuleItem databaseRuleItem = new
DatabaseRuleItem(each.getKey());
DatabaseRuleNodePath databaseRuleNodePath = new
DatabaseRuleNodePath(databaseName, ruleType, databaseRuleItem);
- int nextVersion =
metaDataVersionPersistService.persist(NodePathGenerator.generateVersionPath(databaseRuleNodePath),
each.getValue());
- result.add(new
MetaDataVersion(NodePathGenerator.generatePath(databaseRuleNodePath, false),
Math.max(MetaDataVersion.INIT_VERSION, nextVersion - 1)));
+ int nextVersion =
metaDataVersionPersistService.persist(NodePathGenerator.toVersionPath(databaseRuleNodePath),
each.getValue());
+ result.add(new
MetaDataVersion(NodePathGenerator.toPath(databaseRuleNodePath, false),
Math.max(MetaDataVersion.INIT_VERSION, nextVersion - 1)));
}
return result;
}
@@ -107,7 +107,7 @@ public final class DatabaseRulePersistService {
* @param ruleType rule type
*/
public void delete(final String databaseName, final String ruleType) {
- repository.delete(NodePathGenerator.generatePath(new
DatabaseRuleNodePath(databaseName, ruleType, null), false));
+ repository.delete(NodePathGenerator.toPath(new
DatabaseRuleNodePath(databaseName, ruleType, null), false));
}
/**
@@ -133,7 +133,7 @@ public final class DatabaseRulePersistService {
private Collection<MetaDataVersion> delete(final String databaseName,
final String ruleType, final Collection<RepositoryTuple> repositoryTuples) {
Collection<MetaDataVersion> result = new LinkedList<>();
for (RepositoryTuple each : repositoryTuples) {
- String toBeDeletedKey = NodePathGenerator.generatePath(new
DatabaseRuleNodePath(databaseName, ruleType, new
DatabaseRuleItem(each.getKey())), false);
+ String toBeDeletedKey = NodePathGenerator.toPath(new
DatabaseRuleNodePath(databaseName, ruleType, new
DatabaseRuleItem(each.getKey())), false);
repository.delete(toBeDeletedKey);
result.add(new MetaDataVersion(toBeDeletedKey));
}
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/global/GlobalRulePersistService.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/global/GlobalRulePersistService.java
index 195389e5099..b4ba61341e1 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/global/GlobalRulePersistService.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/global/GlobalRulePersistService.java
@@ -57,7 +57,7 @@ public final class GlobalRulePersistService {
* @return global rule configurations
*/
public Collection<RuleConfiguration> load() {
- return
yamlRepositoryTupleSwapperEngine.swapToRuleConfigurations(repositoryTuplePersistService.load(NodePathGenerator.generatePath(new
GlobalRuleNodePath(null), false)));
+ return
yamlRepositoryTupleSwapperEngine.swapToRuleConfigurations(repositoryTuplePersistService.load(NodePathGenerator.toPath(new
GlobalRuleNodePath(null), false)));
}
/**
@@ -67,7 +67,7 @@ public final class GlobalRulePersistService {
* @return global rule configuration
*/
public Optional<RuleConfiguration> load(final String ruleType) {
- return
yamlRepositoryTupleSwapperEngine.swapToRuleConfiguration(ruleType,
repositoryTuplePersistService.load(NodePathGenerator.generatePath(new
GlobalRuleNodePath(ruleType), false)));
+ return
yamlRepositoryTupleSwapperEngine.swapToRuleConfiguration(ruleType,
repositoryTuplePersistService.load(NodePathGenerator.toPath(new
GlobalRuleNodePath(ruleType), false)));
}
/**
@@ -83,7 +83,7 @@ public final class GlobalRulePersistService {
private void persistTuples(final Collection<RepositoryTuple> tuples) {
for (RepositoryTuple each : tuples) {
-
metaDataVersionPersistService.persist(NodePathGenerator.generateVersionPath(new
GlobalRuleNodePath(each.getKey())), each.getValue());
+
metaDataVersionPersistService.persist(NodePathGenerator.toVersionPath(new
GlobalRuleNodePath(each.getKey())), each.getValue());
}
}
}
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/global/PropertiesPersistService.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/global/PropertiesPersistService.java
index e09aacdc219..530fc6ac3aa 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/global/PropertiesPersistService.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/global/PropertiesPersistService.java
@@ -46,12 +46,12 @@ public final class PropertiesPersistService {
*/
public Properties load() {
return loadActiveVersion()
- .map(optional ->
YamlEngine.unmarshal(repository.query(NodePathGenerator.generateVersionPath(new
GlobalPropertiesNodePath()).getVersionPath(optional)), Properties.class))
+ .map(optional ->
YamlEngine.unmarshal(repository.query(NodePathGenerator.toVersionPath(new
GlobalPropertiesNodePath()).getVersionPath(optional)), Properties.class))
.orElse(new Properties());
}
private Optional<Integer> loadActiveVersion() {
- String value =
repository.query(NodePathGenerator.generateVersionPath(new
GlobalPropertiesNodePath()).getActiveVersionPath());
+ String value = repository.query(NodePathGenerator.toVersionPath(new
GlobalPropertiesNodePath()).getActiveVersionPath());
return Strings.isNullOrEmpty(value) ? Optional.empty() :
Optional.of(Integer.parseInt(value));
}
@@ -61,7 +61,7 @@ public final class PropertiesPersistService {
* @param props properties
*/
public void persist(final Properties props) {
- VersionNodePath versionNodePath =
NodePathGenerator.generateVersionPath(new GlobalPropertiesNodePath());
+ VersionNodePath versionNodePath = NodePathGenerator.toVersionPath(new
GlobalPropertiesNodePath());
metaDataVersionPersistService.persist(versionNodePath,
YamlEngine.marshal(props));
}
}
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/DatabaseMetaDataPersistService.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/DatabaseMetaDataPersistService.java
index 6868ca7e5d9..e4f8a72715a 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/DatabaseMetaDataPersistService.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/DatabaseMetaDataPersistService.java
@@ -38,7 +38,7 @@ public final class DatabaseMetaDataPersistService {
* @param databaseName to be added database name
*/
public void add(final String databaseName) {
- repository.persist(NodePathGenerator.generatePath(new
TableMetadataNodePath(databaseName, null, null), true), "");
+ repository.persist(NodePathGenerator.toPath(new
TableMetadataNodePath(databaseName, null, null), true), "");
}
/**
@@ -47,7 +47,7 @@ public final class DatabaseMetaDataPersistService {
* @param databaseName to be dropped database name
*/
public void drop(final String databaseName) {
- repository.delete(NodePathGenerator.generatePath(new
TableMetadataNodePath(databaseName, null, null), true));
+ repository.delete(NodePathGenerator.toPath(new
TableMetadataNodePath(databaseName, null, null), true));
}
/**
@@ -56,6 +56,6 @@ public final class DatabaseMetaDataPersistService {
* @return loaded database names
*/
public Collection<String> loadAllDatabaseNames() {
- return repository.getChildrenKeys(NodePathGenerator.generatePath(new
TableMetadataNodePath(null, null, null), false));
+ return repository.getChildrenKeys(NodePathGenerator.toPath(new
TableMetadataNodePath(null, null, null), false));
}
}
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/SchemaMetaDataPersistService.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/SchemaMetaDataPersistService.java
index 678d721c58f..6c273f96507 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/SchemaMetaDataPersistService.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/SchemaMetaDataPersistService.java
@@ -52,7 +52,7 @@ public final class SchemaMetaDataPersistService {
* @param schemaName to be added schema name
*/
public void add(final String databaseName, final String schemaName) {
- repository.persist(NodePathGenerator.generatePath(new
TableMetadataNodePath(databaseName, schemaName, null), false), "");
+ repository.persist(NodePathGenerator.toPath(new
TableMetadataNodePath(databaseName, schemaName, null), false), "");
}
/**
@@ -62,7 +62,7 @@ public final class SchemaMetaDataPersistService {
* @param schemaName to be dropped schema name
*/
public void drop(final String databaseName, final String schemaName) {
- repository.delete(NodePathGenerator.generatePath(new
TableMetadataNodePath(databaseName, schemaName, null), true));
+ repository.delete(NodePathGenerator.toPath(new
TableMetadataNodePath(databaseName, schemaName, null), true));
}
/**
@@ -112,7 +112,7 @@ public final class SchemaMetaDataPersistService {
* @return schemas
*/
public Collection<ShardingSphereSchema> load(final String databaseName) {
- return repository.getChildrenKeys(NodePathGenerator.generatePath(new
TableMetadataNodePath(databaseName, null, null), false)).stream()
+ return repository.getChildrenKeys(NodePathGenerator.toPath(new
TableMetadataNodePath(databaseName, null, null), false)).stream()
.map(each -> new ShardingSphereSchema(each,
tableMetaDataPersistService.load(databaseName, each),
viewMetaDataPersistService.load(databaseName,
each))).collect(Collectors.toList());
}
}
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/TableMetaDataPersistService.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/TableMetaDataPersistService.java
index 3164f26947b..a64b1a250d0 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/TableMetaDataPersistService.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/TableMetaDataPersistService.java
@@ -51,7 +51,7 @@ public final class TableMetaDataPersistService {
* @return loaded tables
*/
public Collection<ShardingSphereTable> load(final String databaseName,
final String schemaName) {
- return repository.getChildrenKeys(NodePathGenerator.generatePath(new
TableMetadataNodePath(databaseName, schemaName, null), false)).stream()
+ return repository.getChildrenKeys(NodePathGenerator.toPath(new
TableMetadataNodePath(databaseName, schemaName, null), false)).stream()
.map(each -> load(databaseName, schemaName,
each)).collect(Collectors.toList());
}
@@ -64,7 +64,7 @@ public final class TableMetaDataPersistService {
* @return loaded table
*/
public ShardingSphereTable load(final String databaseName, final String
schemaName, final String tableName) {
- VersionNodePath versionNodePath =
NodePathGenerator.generateVersionPath(new TableMetadataNodePath(databaseName,
schemaName, tableName));
+ VersionNodePath versionNodePath = NodePathGenerator.toVersionPath(new
TableMetadataNodePath(databaseName, schemaName, tableName));
int activeVersion =
Integer.parseInt(repository.query(versionNodePath.getActiveVersionPath()));
String tableContent =
repository.query(versionNodePath.getVersionPath(activeVersion));
return swapper.swapToObject(YamlEngine.unmarshal(tableContent,
YamlShardingSphereTable.class));
@@ -80,7 +80,7 @@ public final class TableMetaDataPersistService {
public void persist(final String databaseName, final String schemaName,
final Collection<ShardingSphereTable> tables) {
for (ShardingSphereTable each : tables) {
String tableName = each.getName().toLowerCase();
- VersionNodePath versionNodePath =
NodePathGenerator.generateVersionPath(new TableMetadataNodePath(databaseName,
schemaName, tableName));
+ VersionNodePath versionNodePath =
NodePathGenerator.toVersionPath(new TableMetadataNodePath(databaseName,
schemaName, tableName));
metaDataVersionPersistService.persist(versionNodePath,
YamlEngine.marshal(swapper.swapToYamlConfiguration(each)));
}
}
@@ -93,7 +93,7 @@ public final class TableMetaDataPersistService {
* @param tableName to be dropped table name
*/
public void drop(final String databaseName, final String schemaName, final
String tableName) {
- repository.delete(NodePathGenerator.generatePath(new
TableMetadataNodePath(databaseName, schemaName, tableName.toLowerCase()),
false));
+ repository.delete(NodePathGenerator.toPath(new
TableMetadataNodePath(databaseName, schemaName, tableName.toLowerCase()),
false));
}
/**
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/TableRowDataPersistService.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/TableRowDataPersistService.java
index 3cffe3260bb..f730a5a6e9b 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/TableRowDataPersistService.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/TableRowDataPersistService.java
@@ -49,9 +49,9 @@ public final class TableRowDataPersistService {
*/
public void persist(final String databaseName, final String schemaName,
final String tableName, final Collection<YamlRowStatistics> rows) {
if (rows.isEmpty()) {
- repository.persist(NodePathGenerator.generatePath(new
StatisticsDataNodePath(databaseName, schemaName, tableName.toLowerCase(),
null), false), "");
+ repository.persist(NodePathGenerator.toPath(new
StatisticsDataNodePath(databaseName, schemaName, tableName.toLowerCase(),
null), false), "");
} else {
- rows.forEach(each ->
repository.persist(NodePathGenerator.generatePath(new
StatisticsDataNodePath(databaseName, schemaName, tableName.toLowerCase(),
each.getUniqueKey()), false),
+ rows.forEach(each ->
repository.persist(NodePathGenerator.toPath(new
StatisticsDataNodePath(databaseName, schemaName, tableName.toLowerCase(),
each.getUniqueKey()), false),
YamlEngine.marshal(each)));
}
}
@@ -65,7 +65,7 @@ public final class TableRowDataPersistService {
* @param rows rows
*/
public void delete(final String databaseName, final String schemaName,
final String tableName, final Collection<YamlRowStatistics> rows) {
- rows.forEach(each ->
repository.delete(NodePathGenerator.generatePath(new
StatisticsDataNodePath(databaseName, schemaName, tableName.toLowerCase(),
each.getUniqueKey()), false)));
+ rows.forEach(each -> repository.delete(NodePathGenerator.toPath(new
StatisticsDataNodePath(databaseName, schemaName, tableName.toLowerCase(),
each.getUniqueKey()), false)));
}
/**
@@ -79,8 +79,8 @@ public final class TableRowDataPersistService {
public TableStatistics load(final String databaseName, final String
schemaName, final ShardingSphereTable table) {
TableStatistics result = new TableStatistics(table.getName());
YamlRowStatisticsSwapper swapper = new YamlRowStatisticsSwapper(new
ArrayList<>(table.getAllColumns()));
- for (String each :
repository.getChildrenKeys(NodePathGenerator.generatePath(new
StatisticsDataNodePath(databaseName, schemaName, table.getName(), null),
false))) {
- String yamlRow =
repository.query(NodePathGenerator.generatePath(new
StatisticsDataNodePath(databaseName, schemaName, table.getName(), each),
false));
+ for (String each :
repository.getChildrenKeys(NodePathGenerator.toPath(new
StatisticsDataNodePath(databaseName, schemaName, table.getName(), null),
false))) {
+ String yamlRow = repository.query(NodePathGenerator.toPath(new
StatisticsDataNodePath(databaseName, schemaName, table.getName(), each),
false));
if (!Strings.isNullOrEmpty(yamlRow)) {
result.getRows().add(swapper.swapToObject(YamlEngine.unmarshal(yamlRow,
YamlRowStatistics.class)));
}
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/ViewMetaDataPersistService.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/ViewMetaDataPersistService.java
index 89f36d8f034..fd10eade925 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/ViewMetaDataPersistService.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/ViewMetaDataPersistService.java
@@ -51,7 +51,7 @@ public final class ViewMetaDataPersistService {
* @return loaded views
*/
public Collection<ShardingSphereView> load(final String databaseName,
final String schemaName) {
- return repository.getChildrenKeys(NodePathGenerator.generatePath(new
ViewMetadataNodePath(databaseName, schemaName, null), false)).stream()
+ return repository.getChildrenKeys(NodePathGenerator.toPath(new
ViewMetadataNodePath(databaseName, schemaName, null), false)).stream()
.map(each -> load(databaseName, schemaName,
each)).collect(Collectors.toList());
}
@@ -64,7 +64,7 @@ public final class ViewMetaDataPersistService {
* @return loaded view
*/
public ShardingSphereView load(final String databaseName, final String
schemaName, final String viewName) {
- VersionNodePath versionNodePath =
NodePathGenerator.generateVersionPath(new ViewMetadataNodePath(databaseName,
schemaName, viewName));
+ VersionNodePath versionNodePath = NodePathGenerator.toVersionPath(new
ViewMetadataNodePath(databaseName, schemaName, viewName));
int activeVersion =
Integer.parseInt(repository.query(versionNodePath.getActiveVersionPath()));
String view =
repository.query(versionNodePath.getVersionPath(activeVersion));
return swapper.swapToObject(YamlEngine.unmarshal(view,
YamlShardingSphereView.class));
@@ -80,7 +80,7 @@ public final class ViewMetaDataPersistService {
public void persist(final String databaseName, final String schemaName,
final Collection<ShardingSphereView> views) {
for (ShardingSphereView each : views) {
String viewName = each.getName().toLowerCase();
- VersionNodePath versionNodePath =
NodePathGenerator.generateVersionPath(new ViewMetadataNodePath(databaseName,
schemaName, viewName));
+ VersionNodePath versionNodePath =
NodePathGenerator.toVersionPath(new ViewMetadataNodePath(databaseName,
schemaName, viewName));
metaDataVersionPersistService.persist(versionNodePath,
YamlEngine.marshal(swapper.swapToYamlConfiguration(each)));
}
}
@@ -93,6 +93,6 @@ public final class ViewMetaDataPersistService {
* @param viewName to be dropped view name
*/
public void drop(final String databaseName, final String schemaName, final
String viewName) {
- repository.delete(NodePathGenerator.generatePath(new
ViewMetadataNodePath(databaseName, schemaName, viewName.toLowerCase()), false));
+ repository.delete(NodePathGenerator.toPath(new
ViewMetadataNodePath(databaseName, schemaName, viewName.toLowerCase()), false));
}
}
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/statistics/StatisticsPersistService.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/statistics/StatisticsPersistService.java
index c63d6bbdc31..9afb9a3cbe1 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/statistics/StatisticsPersistService.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/statistics/StatisticsPersistService.java
@@ -55,7 +55,7 @@ public final class StatisticsPersistService {
* @return statistics
*/
public ShardingSphereStatistics load(final ShardingSphereMetaData
metaData) {
- Collection<String> databaseNames =
repository.getChildrenKeys(NodePathGenerator.generatePath(new
StatisticsDataNodePath(null, null, null, null), false));
+ Collection<String> databaseNames =
repository.getChildrenKeys(NodePathGenerator.toPath(new
StatisticsDataNodePath(null, null, null, null), false));
if (databaseNames.isEmpty()) {
return new ShardingSphereStatistics();
}
@@ -68,7 +68,7 @@ public final class StatisticsPersistService {
private DatabaseStatistics load(final ShardingSphereDatabase database) {
DatabaseStatistics result = new DatabaseStatistics();
- for (String each :
repository.getChildrenKeys(NodePathGenerator.generatePath(new
StatisticsDataNodePath(database.getName(), null, null, null), false)).stream()
+ for (String each :
repository.getChildrenKeys(NodePathGenerator.toPath(new
StatisticsDataNodePath(database.getName(), null, null, null), false)).stream()
.filter(database::containsSchema).collect(Collectors.toList())) {
result.putSchemaStatistics(each, load(database.getName(),
database.getSchema(each)));
}
@@ -77,7 +77,7 @@ public final class StatisticsPersistService {
private SchemaStatistics load(final String databaseName, final
ShardingSphereSchema schema) {
SchemaStatistics result = new SchemaStatistics();
- for (String each :
repository.getChildrenKeys(NodePathGenerator.generatePath(new
StatisticsDataNodePath("foo_db", "foo_schema", null, null), false)).stream()
+ for (String each :
repository.getChildrenKeys(NodePathGenerator.toPath(new
StatisticsDataNodePath("foo_db", "foo_schema", null, null), false)).stream()
.filter(schema::containsTable).collect(Collectors.toList())) {
result.putTableStatistics(each,
tableRowDataPersistService.load(databaseName, schema.getName(),
schema.getTable(each)));
@@ -100,7 +100,7 @@ public final class StatisticsPersistService {
}
private void persistSchema(final String databaseName, final String
schemaName) {
- repository.persist(NodePathGenerator.generatePath(new
StatisticsDataNodePath(databaseName, schemaName, null, null), true), "");
+ repository.persist(NodePathGenerator.toPath(new
StatisticsDataNodePath(databaseName, schemaName, null, null), true), "");
}
private void persistTableData(final ShardingSphereDatabase database, final
String schemaName, final SchemaStatistics schemaStatistics) {
@@ -135,6 +135,6 @@ public final class StatisticsPersistService {
* @param databaseName database name
*/
public void delete(final String databaseName) {
- repository.delete(NodePathGenerator.generatePath(new
StatisticsDataNodePath(databaseName, null, null, null), true));
+ repository.delete(NodePathGenerator.toPath(new
StatisticsDataNodePath(databaseName, null, null, null), true));
}
}
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/state/cluster/ClusterStatePersistService.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/state/cluster/ClusterStatePersistService.java
index 100e286cca4..ad49b6b38a2 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/state/cluster/ClusterStatePersistService.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/state/cluster/ClusterStatePersistService.java
@@ -37,7 +37,7 @@ public final class ClusterStatePersistService {
* @param state to be updated cluster state
*/
public void update(final ClusterState state) {
- repository.persist(NodePathGenerator.generatePath(new
ClusterNodePath(), false), state.name());
+ repository.persist(NodePathGenerator.toPath(new ClusterNodePath(),
false), state.name());
}
/**
@@ -46,7 +46,7 @@ public final class ClusterStatePersistService {
* @return loaded cluster state
*/
public ClusterState load() {
- String value = repository.query(NodePathGenerator.generatePath(new
ClusterNodePath(), false));
+ String value = repository.query(NodePathGenerator.toPath(new
ClusterNodePath(), false));
return Strings.isNullOrEmpty(value) ? ClusterState.OK :
ClusterState.valueOf(value);
}
}
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/state/node/ComputeNodePersistService.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/state/node/ComputeNodePersistService.java
index ec04f13998c..e326550fce8 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/state/node/ComputeNodePersistService.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/state/node/ComputeNodePersistService.java
@@ -67,7 +67,7 @@ public final class ComputeNodePersistService {
private void persistOnline(final ComputeNodeInstance computeNodeInstance) {
ComputeNodeData computeNodeData = new ComputeNodeData(
computeNodeInstance.getMetaData().getDatabaseName(),
computeNodeInstance.getMetaData().getAttributes(),
computeNodeInstance.getMetaData().getVersion());
- repository.persistEphemeral(NodePathGenerator.generatePath(new
OnlineNodePath(computeNodeInstance.getMetaData().getType(),
computeNodeInstance.getMetaData().getId()), false),
+ repository.persistEphemeral(NodePathGenerator.toPath(new
OnlineNodePath(computeNodeInstance.getMetaData().getType(),
computeNodeInstance.getMetaData().getId()), false),
YamlEngine.marshal(new
YamlComputeNodeDataSwapper().swapToYamlConfiguration(computeNodeData)));
}
@@ -77,7 +77,7 @@ public final class ComputeNodePersistService {
* @param computeNodeInstance compute node instance
*/
public void offline(final ComputeNodeInstance computeNodeInstance) {
- repository.delete(NodePathGenerator.generatePath(new
OnlineNodePath(computeNodeInstance.getMetaData().getType(),
computeNodeInstance.getMetaData().getId()), false));
+ repository.delete(NodePathGenerator.toPath(new
OnlineNodePath(computeNodeInstance.getMetaData().getType(),
computeNodeInstance.getMetaData().getId()), false));
}
/**
@@ -91,8 +91,8 @@ public final class ComputeNodePersistService {
private Collection<ComputeNodeInstance> loadInstances(final InstanceType
instanceType) {
Collection<ComputeNodeInstance> result = new LinkedList<>();
- for (String each :
repository.getChildrenKeys(NodePathGenerator.generatePath(new
OnlineNodePath(instanceType, null), false))) {
- String value = repository.query(NodePathGenerator.generatePath(new
OnlineNodePath(instanceType, each), false));
+ for (String each :
repository.getChildrenKeys(NodePathGenerator.toPath(new
OnlineNodePath(instanceType, null), false))) {
+ String value = repository.query(NodePathGenerator.toPath(new
OnlineNodePath(instanceType, each), false));
if (!Strings.isNullOrEmpty(value)) {
result.add(loadInstance(InstanceMetaDataFactory.create(each,
instanceType, new
YamlComputeNodeDataSwapper().swapToObject(YamlEngine.unmarshal(value,
YamlComputeNodeData.class)))));
}
@@ -115,12 +115,12 @@ public final class ComputeNodePersistService {
}
private String loadState(final String instanceId) {
- return repository.query(NodePathGenerator.generatePath(new
StatusNodePath(instanceId), false));
+ return repository.query(NodePathGenerator.toPath(new
StatusNodePath(instanceId), false));
}
@SuppressWarnings("unchecked")
private Collection<String> loadLabels(final String instanceId) {
- String yamlContent =
repository.query(NodePathGenerator.generatePath(new LabelNodePath(instanceId),
false));
+ String yamlContent = repository.query(NodePathGenerator.toPath(new
LabelNodePath(instanceId), false));
return Strings.isNullOrEmpty(yamlContent) ? Collections.emptyList() :
YamlEngine.unmarshal(yamlContent, Collection.class);
}
@@ -131,7 +131,7 @@ public final class ComputeNodePersistService {
* @param instanceState instance state
*/
public void updateState(final String instanceId, final InstanceState
instanceState) {
- repository.persistEphemeral(NodePathGenerator.generatePath(new
StatusNodePath(instanceId), false), instanceState.name());
+ repository.persistEphemeral(NodePathGenerator.toPath(new
StatusNodePath(instanceId), false), instanceState.name());
}
/**
@@ -141,7 +141,7 @@ public final class ComputeNodePersistService {
* @param labels instance labels
*/
public void persistLabels(final String instanceId, final
Collection<String> labels) {
- repository.persistEphemeral(NodePathGenerator.generatePath(new
LabelNodePath(instanceId), false), YamlEngine.marshal(labels));
+ repository.persistEphemeral(NodePathGenerator.toPath(new
LabelNodePath(instanceId), false), YamlEngine.marshal(labels));
}
/**
@@ -151,7 +151,7 @@ public final class ComputeNodePersistService {
* @param workerId worker ID
*/
public void persistWorkerId(final String instanceId, final int workerId) {
- repository.persistEphemeral(NodePathGenerator.generatePath(new
ComputeNodeWorkerIDNodePath(instanceId), false), String.valueOf(workerId));
+ repository.persistEphemeral(NodePathGenerator.toPath(new
ComputeNodeWorkerIDNodePath(instanceId), false), String.valueOf(workerId));
}
/**
@@ -162,7 +162,7 @@ public final class ComputeNodePersistService {
*/
public Optional<Integer> loadWorkerId(final String instanceId) {
try {
- String workerId =
repository.query(NodePathGenerator.generatePath(new
ComputeNodeWorkerIDNodePath(instanceId), false));
+ String workerId = repository.query(NodePathGenerator.toPath(new
ComputeNodeWorkerIDNodePath(instanceId), false));
return Strings.isNullOrEmpty(workerId) ? Optional.empty() :
Optional.of(Integer.valueOf(workerId));
} catch (final NumberFormatException ex) {
log.error("Invalid worker id for instance: {}", instanceId);
@@ -176,8 +176,8 @@ public final class ComputeNodePersistService {
* @return assigned worker IDs
*/
public Collection<Integer> getAssignedWorkerIds() {
- Collection<String> instanceIds =
repository.getChildrenKeys(NodePathGenerator.generatePath(new
ComputeNodeWorkerIDNodePath(null), false));
- return instanceIds.stream().map(each ->
repository.query(NodePathGenerator.generatePath(new
ComputeNodeWorkerIDNodePath(each), false)))
+ Collection<String> instanceIds =
repository.getChildrenKeys(NodePathGenerator.toPath(new
ComputeNodeWorkerIDNodePath(null), false));
+ return instanceIds.stream().map(each ->
repository.query(NodePathGenerator.toPath(new
ComputeNodeWorkerIDNodePath(each), false)))
.filter(Objects::nonNull).map(Integer::parseInt).collect(Collectors.toSet());
}
}
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/state/node/QualifiedDataSourceStatePersistService.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/state/node/QualifiedDataSourceStatePersistService.java
index e1e15fe942f..73715a31ce8 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/state/node/QualifiedDataSourceStatePersistService.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/state/node/QualifiedDataSourceStatePersistService.java
@@ -47,10 +47,10 @@ public final class QualifiedDataSourceStatePersistService {
* @return loaded qualified data source states
*/
public Map<String, QualifiedDataSourceState> load() {
- Collection<String> qualifiedDataSourceNodes =
repository.getChildrenKeys(NodePathGenerator.generatePath(new
QualifiedDataSourceNodePath(null), false));
+ Collection<String> qualifiedDataSourceNodes =
repository.getChildrenKeys(NodePathGenerator.toPath(new
QualifiedDataSourceNodePath(null), false));
Map<String, QualifiedDataSourceState> result = new
HashMap<>(qualifiedDataSourceNodes.size(), 1F);
qualifiedDataSourceNodes.forEach(each -> {
- String yamlContent =
repository.query(NodePathGenerator.generatePath(new
QualifiedDataSourceNodePath(new QualifiedDataSource(each)), false));
+ String yamlContent = repository.query(NodePathGenerator.toPath(new
QualifiedDataSourceNodePath(new QualifiedDataSource(each)), false));
if (!Strings.isNullOrEmpty(yamlContent)) {
result.put(each, new
YamlQualifiedDataSourceStateSwapper().swapToObject(YamlEngine.unmarshal(yamlContent,
YamlQualifiedDataSourceState.class)));
}
@@ -68,7 +68,7 @@ public final class QualifiedDataSourceStatePersistService {
*/
public void update(final String databaseName, final String groupName,
final String storageUnitName, final DataSourceState dataSourceState) {
QualifiedDataSourceState status = new
QualifiedDataSourceState(dataSourceState);
- repository.persist(NodePathGenerator.generatePath(new
QualifiedDataSourceNodePath(new QualifiedDataSource(databaseName, groupName,
storageUnitName)), false),
+ repository.persist(NodePathGenerator.toPath(new
QualifiedDataSourceNodePath(new QualifiedDataSource(databaseName, groupName,
storageUnitName)), false),
YamlEngine.marshal(new
YamlQualifiedDataSourceStateSwapper().swapToYamlConfiguration(status)));
}
}
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/NodePathGenerator.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/NodePathGenerator.java
index cc7c4ba2c04..92bb7c92fb2 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/NodePathGenerator.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/NodePathGenerator.java
@@ -19,11 +19,11 @@ package org.apache.shardingsphere.mode.node.path;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
-import org.apache.shardingsphere.infra.util.reflection.ReflectionUtils;
import org.apache.shardingsphere.mode.node.path.version.VersionNodePath;
-import java.util.Collection;
import java.util.LinkedList;
+import java.util.Objects;
+import java.util.Optional;
/**
* Node path generator.
@@ -31,50 +31,45 @@ import java.util.LinkedList;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class NodePathGenerator {
+ private static final String PATH_DELIMITER = "/";
+
/**
- * Generate path.
+ * Generate to path.
*
* @param nodePath node path
- * @param trimEmptyNode whether to trim empty node
+ * @param trimEmptyNode null variable should trim parent node if true
* @return path
*/
- public static String generatePath(final NodePath nodePath, final boolean
trimEmptyNode) {
- LinkedList<String> result = new LinkedList<>();
- String path =
nodePath.getClass().getAnnotation(NodePathEntity.class).value();
- for (String each : path.split("/")) {
- if (each.contains("$") || each.contains(":")) {
- Collection<String> nodeSegments = new LinkedList<>();
- for (String eachSegment : each.split(":")) {
- if (eachSegment.startsWith("${") &&
eachSegment.endsWith("}")) {
- Object fieldValue =
ReflectionUtils.getFieldValue(nodePath, eachSegment.substring(2,
eachSegment.length() - 1)).orElse(null);
- // CHECKSTYLE:OFF
- if (null == fieldValue) {
- if (trimEmptyNode) {
- result.removeLast();
- }
- return String.join("/", result);
- }
- // CHECKSTYLE:ON
- nodeSegments.add(fieldValue.toString());
- } else {
- nodeSegments.add(each);
- }
- }
- result.add(String.join(":", nodeSegments));
- } else {
- result.add(each);
+ public static String toPath(final NodePath nodePath, final boolean
trimEmptyNode) {
+ String templatePath =
Objects.requireNonNull(nodePath.getClass().getAnnotation(NodePathEntity.class),
"NodePathEntity annotation is missing").value();
+ LinkedList<String> nodeSegments = new LinkedList<>();
+ for (String each : templatePath.split(PATH_DELIMITER)) {
+ Optional<String> segmentLiteral = new
NodePathSegment(each).getLiteral(nodePath);
+ if (segmentLiteral.isPresent()) {
+ nodeSegments.add(segmentLiteral.get());
+ continue;
+ }
+ if (trimEmptyNode) {
+ trimLastParentNode(nodeSegments);
}
+ break;
+ }
+ return String.join(PATH_DELIMITER, nodeSegments);
+ }
+
+ private static void trimLastParentNode(final LinkedList<String>
nodeSegments) {
+ if (!nodeSegments.isEmpty()) {
+ nodeSegments.removeLast();
}
- return String.join("/", result);
}
/**
- * Generate version node path.
+ * Generate to version node path.
*
* @param nodePath node path
* @return version node path
*/
- public static VersionNodePath generateVersionPath(final NodePath nodePath)
{
- return new VersionNodePath(generatePath(nodePath, false));
+ public static VersionNodePath toVersionPath(final NodePath nodePath) {
+ return new VersionNodePath(toPath(nodePath, false));
}
}
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/compute/process/KillProcessTriggerNodePath.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/NodePathSegment.java
similarity index 52%
copy from
mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/compute/process/KillProcessTriggerNodePath.java
copy to
mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/NodePathSegment.java
index 706f89a2a8a..f0295489ade 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/compute/process/KillProcessTriggerNodePath.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/NodePathSegment.java
@@ -15,22 +15,33 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.mode.node.path.node.compute.process;
+package org.apache.shardingsphere.mode.node.path;
-import lombok.Getter;
import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.mode.node.path.NodePath;
-import org.apache.shardingsphere.mode.node.path.NodePathEntity;
+import org.apache.shardingsphere.infra.util.reflection.ReflectionUtils;
+
+import java.util.Optional;
/**
- * Kill process trigger node path.
+ * Node path segment.
*/
-@NodePathEntity("/nodes/compute_nodes/kill_process_trigger/${instanceId}:${processId}")
@RequiredArgsConstructor
-@Getter
-public final class KillProcessTriggerNodePath implements NodePath {
+public final class NodePathSegment {
- private final String instanceId;
+ private final String input;
- private final String processId;
+ /**
+ * Get segment literal.
+ *
+ * @param nodePath node path
+ * @return segment literal
+ */
+ public Optional<String> getLiteral(final NodePath nodePath) {
+ Optional<String> variableName = new
NodePathVariable(input).findVariableName();
+ if (variableName.isPresent()) {
+ Object variableValue = ReflectionUtils.getFieldValue(nodePath,
variableName.get()).orElse(null);
+ return null == variableValue ? Optional.empty() :
Optional.of(variableValue.toString());
+ }
+ return Optional.of(input);
+ }
}
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/compute/process/KillProcessTriggerNodePath.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/NodePathVariable.java
similarity index 57%
copy from
mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/compute/process/KillProcessTriggerNodePath.java
copy to
mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/NodePathVariable.java
index 706f89a2a8a..6ada11f36ed 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/compute/process/KillProcessTriggerNodePath.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/NodePathVariable.java
@@ -15,22 +15,34 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.mode.node.path.node.compute.process;
+package org.apache.shardingsphere.mode.node.path;
-import lombok.Getter;
import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.mode.node.path.NodePath;
-import org.apache.shardingsphere.mode.node.path.NodePathEntity;
+
+import java.util.Optional;
/**
- * Kill process trigger node path.
+ * Node path variable.
*/
-@NodePathEntity("/nodes/compute_nodes/kill_process_trigger/${instanceId}:${processId}")
@RequiredArgsConstructor
-@Getter
-public final class KillProcessTriggerNodePath implements NodePath {
+public final class NodePathVariable {
+
+ private static final String PREFIX = "${";
+
+ private static final String SUFFIX = "}";
+
+ private final String input;
- private final String instanceId;
+ /**
+ * Find variable name.
+ *
+ * @return found variable name
+ */
+ public Optional<String> findVariableName() {
+ return isVariable() ? Optional.of(input.substring(PREFIX.length(),
input.length() - SUFFIX.length())) : Optional.empty();
+ }
- private final String processId;
+ private boolean isVariable() {
+ return input.startsWith(PREFIX) && input.endsWith(SUFFIX);
+ }
}
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalPropertiesNodePathParser.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalPropertiesNodePathParser.java
index 60117897dbe..f8871ced145 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalPropertiesNodePathParser.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalPropertiesNodePathParser.java
@@ -28,7 +28,7 @@ import
org.apache.shardingsphere.mode.node.path.version.VersionNodePathParser;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class GlobalPropertiesNodePathParser {
- private static final VersionNodePathParser VERSION_PARSER = new
VersionNodePathParser(NodePathGenerator.generatePath(new
GlobalPropertiesNodePath(), false));
+ private static final VersionNodePathParser VERSION_PARSER = new
VersionNodePathParser(NodePathGenerator.toPath(new GlobalPropertiesNodePath(),
false));
/**
* Get properties version node path parser.
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalRuleNodePathParser.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalRuleNodePathParser.java
index 7eb10686230..b83231746ba 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalRuleNodePathParser.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalRuleNodePathParser.java
@@ -29,7 +29,7 @@ import
org.apache.shardingsphere.mode.node.path.version.VersionNodePathParser;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class GlobalRuleNodePathParser {
- private static final VersionNodePathParser PARSER = new
VersionNodePathParser(NodePathGenerator.generatePath(new
GlobalRuleNodePath(NodePathPattern.IDENTIFIER), false));
+ private static final VersionNodePathParser PARSER = new
VersionNodePathParser(NodePathGenerator.toPath(new
GlobalRuleNodePath(NodePathPattern.IDENTIFIER), false));
/**
* Get global rule version node path parser.
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/DatabaseNodePathParser.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/DatabaseNodePathParser.java
index 67744d0b5e9..58e8477721c 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/DatabaseNodePathParser.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/DatabaseNodePathParser.java
@@ -34,7 +34,7 @@ import java.util.regex.Pattern;
public final class DatabaseNodePathParser {
private static final Pattern DATABASE_PATTERN = Pattern.compile(
- NodePathGenerator.generatePath(new
TableMetadataNodePath(NodePathPattern.IDENTIFIER, null, null), true) + "?",
Pattern.CASE_INSENSITIVE);
+ NodePathGenerator.toPath(new
TableMetadataNodePath(NodePathPattern.IDENTIFIER, null, null), true) + "?",
Pattern.CASE_INSENSITIVE);
/**
* Find database name.
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/SchemaMetaDataNodePathParser.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/SchemaMetaDataNodePathParser.java
index 1001d6047aa..77dcaaf721a 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/SchemaMetaDataNodePathParser.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/SchemaMetaDataNodePathParser.java
@@ -42,7 +42,7 @@ public final class SchemaMetaDataNodePathParser {
public static Optional<String> findSchemaName(final String path, final
boolean containsChildPath) {
String endPattern = containsChildPath ? "?" : "$";
Pattern pattern = Pattern.compile(
- NodePathGenerator.generatePath(new
TableMetadataNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
null), true) + endPattern, Pattern.CASE_INSENSITIVE);
+ NodePathGenerator.toPath(new
TableMetadataNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
null), true) + endPattern, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(path);
return matcher.find() ? Optional.of(matcher.group(2)) :
Optional.empty();
}
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/TableMetaDataNodePathParser.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/TableMetaDataNodePathParser.java
index 5710b6e7e5e..d25090ff72d 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/TableMetaDataNodePathParser.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/TableMetaDataNodePathParser.java
@@ -33,11 +33,11 @@ import java.util.regex.Pattern;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class TableMetaDataNodePathParser {
- private static final Pattern PATTERN =
Pattern.compile(NodePathGenerator.generatePath(
+ private static final Pattern PATTERN =
Pattern.compile(NodePathGenerator.toPath(
new TableMetadataNodePath(NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER), false) + "$",
Pattern.CASE_INSENSITIVE);
private static final VersionNodePathParser VERSION_PARSER = new
VersionNodePathParser(
- NodePathGenerator.generatePath(new
TableMetadataNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER), false));
+ NodePathGenerator.toPath(new
TableMetadataNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER), false));
/**
* Find table name.
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/ViewMetaDataNodePathParser.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/ViewMetaDataNodePathParser.java
index e04bc005236..8c46468ecd2 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/ViewMetaDataNodePathParser.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/ViewMetaDataNodePathParser.java
@@ -34,10 +34,10 @@ import java.util.regex.Pattern;
public final class ViewMetaDataNodePathParser {
private static final Pattern PATTERN = Pattern.compile(
- NodePathGenerator.generatePath(new
ViewMetadataNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER), false) + "$", Pattern.CASE_INSENSITIVE);
+ NodePathGenerator.toPath(new
ViewMetadataNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER), false) + "$", Pattern.CASE_INSENSITIVE);
private static final VersionNodePathParser VERSION_PARSER = new
VersionNodePathParser(
- NodePathGenerator.generatePath(new
ViewMetadataNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER), false));
+ NodePathGenerator.toPath(new
ViewMetadataNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER), false));
/**
* Get view name.
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/storage/DataSourceNodePathParser.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/storage/DataSourceNodePathParser.java
index 4ce68f6240c..be94714d35e 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/storage/DataSourceNodePathParser.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/storage/DataSourceNodePathParser.java
@@ -30,7 +30,7 @@ import java.util.regex.Pattern;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class DataSourceNodePathParser {
- private static final Pattern PATTERN =
Pattern.compile(NodePathGenerator.generatePath(new
StorageUnitNodePath(NodePathPattern.IDENTIFIER, null), true) + "?",
Pattern.CASE_INSENSITIVE);
+ private static final Pattern PATTERN =
Pattern.compile(NodePathGenerator.toPath(new
StorageUnitNodePath(NodePathPattern.IDENTIFIER, null), true) + "?",
Pattern.CASE_INSENSITIVE);
/**
* Is data source path.
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/storage/StorageNodeNodePathParser.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/storage/StorageNodeNodePathParser.java
index 3b5e39eb515..838bacb0a4b 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/storage/StorageNodeNodePathParser.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/storage/StorageNodeNodePathParser.java
@@ -34,10 +34,10 @@ import java.util.regex.Pattern;
public final class StorageNodeNodePathParser {
private static final Pattern PATTERN = Pattern.compile(
- NodePathGenerator.generatePath(new
StorageNodeNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER),
false) + "$", Pattern.CASE_INSENSITIVE);
+ NodePathGenerator.toPath(new
StorageNodeNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER),
false) + "$", Pattern.CASE_INSENSITIVE);
private static final VersionNodePathParser VERSION_PARSER = new
VersionNodePathParser(
- NodePathGenerator.generatePath(new
StorageNodeNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER),
false));
+ NodePathGenerator.toPath(new
StorageNodeNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER),
false));
/**
* Find storage node name.
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/storage/StorageUnitNodePathParser.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/storage/StorageUnitNodePathParser.java
index 3f65846de85..33bfa386ed3 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/storage/StorageUnitNodePathParser.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/storage/StorageUnitNodePathParser.java
@@ -34,10 +34,10 @@ import java.util.regex.Pattern;
public final class StorageUnitNodePathParser {
private static final Pattern PATTERN = Pattern.compile(
- NodePathGenerator.generatePath(new
StorageUnitNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER),
false) + "$", Pattern.CASE_INSENSITIVE);
+ NodePathGenerator.toPath(new
StorageUnitNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER),
false) + "$", Pattern.CASE_INSENSITIVE);
private static final VersionNodePathParser VERSION_PARSER = new
VersionNodePathParser(
- NodePathGenerator.generatePath(new
StorageUnitNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER),
false));
+ NodePathGenerator.toPath(new
StorageUnitNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER),
false));
/**
* Find storage unit name.
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/compute/process/KillProcessTriggerNodePath.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/compute/process/InstanceProcessNodeValue.java
similarity index 75%
copy from
mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/compute/process/KillProcessTriggerNodePath.java
copy to
mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/compute/process/InstanceProcessNodeValue.java
index 706f89a2a8a..1f944ae1e76 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/compute/process/KillProcessTriggerNodePath.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/compute/process/InstanceProcessNodeValue.java
@@ -17,20 +17,20 @@
package org.apache.shardingsphere.mode.node.path.node.compute.process;
-import lombok.Getter;
import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.mode.node.path.NodePath;
-import org.apache.shardingsphere.mode.node.path.NodePathEntity;
/**
- * Kill process trigger node path.
+ * Instance process node value.
*/
-@NodePathEntity("/nodes/compute_nodes/kill_process_trigger/${instanceId}:${processId}")
@RequiredArgsConstructor
-@Getter
-public final class KillProcessTriggerNodePath implements NodePath {
+public final class InstanceProcessNodeValue {
private final String instanceId;
private final String processId;
+
+ @Override
+ public String toString() {
+ return String.join(":", instanceId, processId);
+ }
}
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/compute/process/KillProcessTriggerNodePath.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/compute/process/KillProcessTriggerNodePath.java
index 706f89a2a8a..ae5415aea37 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/compute/process/KillProcessTriggerNodePath.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/compute/process/KillProcessTriggerNodePath.java
@@ -25,12 +25,10 @@ import
org.apache.shardingsphere.mode.node.path.NodePathEntity;
/**
* Kill process trigger node path.
*/
-@NodePathEntity("/nodes/compute_nodes/kill_process_trigger/${instanceId}:${processId}")
+@NodePathEntity("/nodes/compute_nodes/kill_process_trigger/${instanceProcess}")
@RequiredArgsConstructor
@Getter
public final class KillProcessTriggerNodePath implements NodePath {
- private final String instanceId;
-
- private final String processId;
+ private final InstanceProcessNodeValue instanceProcess;
}
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/compute/process/ShowProcessListTriggerNodePath.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/compute/process/ShowProcessListTriggerNodePath.java
index 11780ab3c92..bc9d9c3b63b 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/compute/process/ShowProcessListTriggerNodePath.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/compute/process/ShowProcessListTriggerNodePath.java
@@ -25,12 +25,10 @@ import
org.apache.shardingsphere.mode.node.path.NodePathEntity;
/**
* Show process list trigger node path.
*/
-@NodePathEntity("/nodes/compute_nodes/show_process_list_trigger/${instanceId}:${taskId}")
+@NodePathEntity("/nodes/compute_nodes/show_process_list_trigger/${instanceProcess}")
@RequiredArgsConstructor
@Getter
public final class ShowProcessListTriggerNodePath implements NodePath {
- private final String instanceId;
-
- private final String taskId;
+ private final InstanceProcessNodeValue instanceProcess;
}
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/storage/QualifiedDataSourceNodePathParser.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/storage/QualifiedDataSourceNodePathParser.java
index ceb12c630e4..1698e7ab0d2 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/storage/QualifiedDataSourceNodePathParser.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/storage/QualifiedDataSourceNodePathParser.java
@@ -42,7 +42,7 @@ public final class QualifiedDataSourceNodePathParser {
*/
public static Optional<QualifiedDataSource> findQualifiedDataSource(final
String qualifiedDataSourcePath) {
Pattern pattern = Pattern.compile(
- String.join("/", NodePathGenerator.generatePath(new
QualifiedDataSourceNodePath(null), false), QUALIFIED_DATA_SOURCE_PATTERN +
"$"), Pattern.CASE_INSENSITIVE);
+ String.join("/", NodePathGenerator.toPath(new
QualifiedDataSourceNodePath(null), false), QUALIFIED_DATA_SOURCE_PATTERN +
"$"), Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(qualifiedDataSourcePath);
return matcher.find() ? Optional.of(new
QualifiedDataSource(matcher.group(1))) : Optional.empty();
}
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/state/DatabaseListenerCoordinatorNodePathParser.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/state/DatabaseListenerCoordinatorNodePathParser.java
index a042af609e6..f2c03c63d03 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/state/DatabaseListenerCoordinatorNodePathParser.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/state/DatabaseListenerCoordinatorNodePathParser.java
@@ -20,6 +20,7 @@ package org.apache.shardingsphere.mode.node.path.state;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
+import org.apache.shardingsphere.mode.node.path.NodePathPattern;
import java.util.Optional;
import java.util.regex.Matcher;
@@ -31,8 +32,6 @@ import java.util.regex.Pattern;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class DatabaseListenerCoordinatorNodePathParser {
- private static final String DATABASE_PATTERN = "(\\w+)";
-
/**
* Find database name by database listener coordinator node path.
*
@@ -40,7 +39,7 @@ public final class DatabaseListenerCoordinatorNodePathParser {
* @return found database name
*/
public static Optional<String> findDatabaseName(final String
databaseListenerCoordinatorNodePath) {
- Pattern pattern = Pattern.compile(NodePathGenerator.generatePath(new
DatabaseListenerCoordinatorNodePath(DATABASE_PATTERN), false) + "$",
Pattern.CASE_INSENSITIVE);
+ Pattern pattern = Pattern.compile(NodePathGenerator.toPath(new
DatabaseListenerCoordinatorNodePath(NodePathPattern.IDENTIFIER), false) + "$",
Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(databaseListenerCoordinatorNodePath);
return matcher.find() ? Optional.of(matcher.group(1)) :
Optional.empty();
}
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/statistics/StatisticsNodePathParser.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/statistics/StatisticsNodePathParser.java
index 80d7ff4e277..ec96fa77221 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/statistics/StatisticsNodePathParser.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/statistics/StatisticsNodePathParser.java
@@ -43,7 +43,7 @@ public final class StatisticsNodePathParser {
*/
public static Optional<String> findDatabaseName(final String path, final
boolean containsChildPath) {
String endPattern = containsChildPath ? "?" : "$";
- Pattern pattern = Pattern.compile(NodePathGenerator.generatePath(new
StatisticsDataNodePath(NodePathPattern.IDENTIFIER, null, null, null), true) +
endPattern, Pattern.CASE_INSENSITIVE);
+ Pattern pattern = Pattern.compile(NodePathGenerator.toPath(new
StatisticsDataNodePath(NodePathPattern.IDENTIFIER, null, null, null), true) +
endPattern, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(path);
return matcher.find() ? Optional.of(matcher.group(1)) :
Optional.empty();
}
@@ -58,7 +58,7 @@ public final class StatisticsNodePathParser {
public static Optional<String> findSchemaName(final String path, final
boolean containsChildPath) {
String endPattern = containsChildPath ? "?" : "$";
Pattern pattern = Pattern.compile(
- NodePathGenerator.generatePath(new
StatisticsDataNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
null, null), true) + endPattern, Pattern.CASE_INSENSITIVE);
+ NodePathGenerator.toPath(new
StatisticsDataNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
null, null), true) + endPattern, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(path);
return matcher.find() ? Optional.of(matcher.group(2)) :
Optional.empty();
}
@@ -73,7 +73,7 @@ public final class StatisticsNodePathParser {
public static Optional<String> findTableName(final String path, final
boolean containsChildPath) {
String endPattern = containsChildPath ? "?" : "$";
Pattern pattern = Pattern.compile(
- NodePathGenerator.generatePath(new
StatisticsDataNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER, null), false) + endPattern,
+ NodePathGenerator.toPath(new
StatisticsDataNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER, null), false) + endPattern,
Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(path);
return matcher.find() ? Optional.of(matcher.group(3)) :
Optional.empty();
@@ -86,7 +86,7 @@ public final class StatisticsNodePathParser {
* @return found row unique key
*/
public static Optional<String> findRowUniqueKey(final String path) {
- Pattern pattern = Pattern.compile(NodePathGenerator.generatePath(
+ Pattern pattern = Pattern.compile(NodePathGenerator.toPath(
new StatisticsDataNodePath(NodePathPattern.IDENTIFIER,
NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER, UNIQUE_KEY_PATTERN),
false) + "$", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(path);
return matcher.find() ? Optional.of(matcher.group(4)) :
Optional.empty();
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/NodePathSegmentTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/NodePathSegmentTest.java
new file mode 100644
index 00000000000..48abb142dbc
--- /dev/null
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/NodePathSegmentTest.java
@@ -0,0 +1,54 @@
+/*
+ * 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.mode.node.path;
+
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import org.junit.jupiter.api.Test;
+
+import java.util.Optional;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+
+class NodePathSegmentTest {
+
+ @Test
+ void assertGetLiteralWithoutVariable() {
+ assertThat(new NodePathSegment("foo").getLiteral(new
NodePathFixture("foo")), is(Optional.of("foo")));
+ }
+
+ @Test
+ void assertGetLiteralWithVariable() {
+ assertThat(new NodePathSegment("${fooVariable}").getLiteral(new
NodePathFixture("foo_value")), is(Optional.of("foo_value")));
+ }
+
+ @Test
+ void assertGetLiteralWithNullVariable() {
+ assertFalse(new NodePathSegment("${fooVariable}").getLiteral(new
NodePathFixture(null)).isPresent());
+ }
+
+ @NodePathEntity("/foo/${fooVariable}")
+ @RequiredArgsConstructor
+ @Getter
+ private static class NodePathFixture implements NodePath {
+
+ private final String fooVariable;
+ }
+}
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalPropertiesNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/NodePathVariableTest.java
similarity index 56%
copy from
mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalPropertiesNodePathTest.java
copy to
mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/NodePathVariableTest.java
index b98725c6e44..80df22a0929 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalPropertiesNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/NodePathVariableTest.java
@@ -15,18 +15,28 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.mode.node.path.config.global;
+package org.apache.shardingsphere.mode.node.path;
-import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
import org.junit.jupiter.api.Test;
+import java.util.Optional;
+
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertFalse;
-class GlobalPropertiesNodePathTest {
+class NodePathVariableTest {
+
+ @Test
+ void assertFindVariableName() {
+ assertThat(new NodePathVariable("${foo_variable}").findVariableName(),
is(Optional.of("foo_variable")));
+ }
@Test
- void assertGeneratePath() {
- assertThat(NodePathGenerator.generatePath(new
GlobalPropertiesNodePath(), false), is("/props"));
+ void assertNotFindVariableName() {
+ assertFalse(new
NodePathVariable("${foo_variable").findVariableName().isPresent());
+ assertFalse(new
NodePathVariable("foo_variable}").findVariableName().isPresent());
+ assertFalse(new
NodePathVariable("$foo_variable").findVariableName().isPresent());
+ assertFalse(new
NodePathVariable("foo_variable").findVariableName().isPresent());
}
}
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalPropertiesNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalPropertiesNodePathTest.java
index b98725c6e44..03cb36ce5df 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalPropertiesNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalPropertiesNodePathTest.java
@@ -27,6 +27,6 @@ class GlobalPropertiesNodePathTest {
@Test
void assertGeneratePath() {
- assertThat(NodePathGenerator.generatePath(new
GlobalPropertiesNodePath(), false), is("/props"));
+ assertThat(NodePathGenerator.toPath(new GlobalPropertiesNodePath(),
false), is("/props"));
}
}
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalRuleNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalRuleNodePathTest.java
index 45bcbbf9c0c..a821aa7528b 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalRuleNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalRuleNodePathTest.java
@@ -27,7 +27,7 @@ class GlobalRuleNodePathTest {
@Test
void assertGeneratePath() {
- assertThat(NodePathGenerator.generatePath(new
GlobalRuleNodePath(null), false), is("/rules"));
- assertThat(NodePathGenerator.generatePath(new
GlobalRuleNodePath("foo_rule"), false), is("/rules/foo_rule"));
+ assertThat(NodePathGenerator.toPath(new GlobalRuleNodePath(null),
false), is("/rules"));
+ assertThat(NodePathGenerator.toPath(new
GlobalRuleNodePath("foo_rule"), false), is("/rules/foo_rule"));
}
}
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/execution/ProcessNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/execution/ProcessNodePathTest.java
index d0f41ad8fdd..649cb5c4cab 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/execution/ProcessNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/execution/ProcessNodePathTest.java
@@ -27,7 +27,7 @@ class ProcessNodePathTest {
@Test
void assertGeneratePath() {
- assertThat(NodePathGenerator.generatePath(new
ProcessNodePath("foo_process_id", null), false),
is("/execution_nodes/foo_process_id"));
- assertThat(NodePathGenerator.generatePath(new
ProcessNodePath("foo_process_id", "foo_instance_id"), false),
is("/execution_nodes/foo_process_id/foo_instance_id"));
+ assertThat(NodePathGenerator.toPath(new
ProcessNodePath("foo_process_id", null), false),
is("/execution_nodes/foo_process_id"));
+ assertThat(NodePathGenerator.toPath(new
ProcessNodePath("foo_process_id", "foo_instance_id"), false),
is("/execution_nodes/foo_process_id/foo_instance_id"));
}
}
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/database/TableMetadataNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/database/TableMetadataNodePathTest.java
index 84fd2cc0aea..09ff3881fbe 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/database/TableMetadataNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/database/TableMetadataNodePathTest.java
@@ -28,15 +28,15 @@ class TableMetadataNodePathTest {
@Test
void assertGeneratePath() {
- assertThat(NodePathGenerator.generatePath(new
TableMetadataNodePath("foo_db", null, null), false),
is("/metadata/foo_db/schemas"));
- assertThat(NodePathGenerator.generatePath(new
TableMetadataNodePath("foo_db", "foo_schema", null), false),
is("/metadata/foo_db/schemas/foo_schema/tables"));
- assertThat(NodePathGenerator.generatePath(new
TableMetadataNodePath("foo_db", "foo_schema", null), true),
is("/metadata/foo_db/schemas/foo_schema"));
- assertThat(NodePathGenerator.generatePath(new
TableMetadataNodePath("foo_db", "foo_schema", "foo_tbl"), false),
is("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl"));
+ assertThat(NodePathGenerator.toPath(new
TableMetadataNodePath("foo_db", null, null), false),
is("/metadata/foo_db/schemas"));
+ assertThat(NodePathGenerator.toPath(new
TableMetadataNodePath("foo_db", "foo_schema", null), false),
is("/metadata/foo_db/schemas/foo_schema/tables"));
+ assertThat(NodePathGenerator.toPath(new
TableMetadataNodePath("foo_db", "foo_schema", null), true),
is("/metadata/foo_db/schemas/foo_schema"));
+ assertThat(NodePathGenerator.toPath(new
TableMetadataNodePath("foo_db", "foo_schema", "foo_tbl"), false),
is("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl"));
}
@Test
void assertGenerateVersionPath() {
- VersionNodePath versionNodePath =
NodePathGenerator.generateVersionPath(new TableMetadataNodePath("foo_db",
"foo_schema", "foo_tbl"));
+ VersionNodePath versionNodePath = NodePathGenerator.toVersionPath(new
TableMetadataNodePath("foo_db", "foo_schema", "foo_tbl"));
assertThat(versionNodePath.getActiveVersionPath(),
is("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl/active_version"));
assertThat(versionNodePath.getVersionsPath(),
is("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl/versions"));
assertThat(versionNodePath.getVersionPath(0),
is("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl/versions/0"));
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/database/ViewMetadataNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/database/ViewMetadataNodePathTest.java
index 471cf89102f..2893481f48c 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/database/ViewMetadataNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/database/ViewMetadataNodePathTest.java
@@ -28,15 +28,15 @@ class ViewMetadataNodePathTest {
@Test
void assertGeneratePath() {
- assertThat(NodePathGenerator.generatePath(new
ViewMetadataNodePath("foo_db", null, null), false),
is("/metadata/foo_db/schemas"));
- assertThat(NodePathGenerator.generatePath(new
ViewMetadataNodePath("foo_db", "foo_schema", null), false),
is("/metadata/foo_db/schemas/foo_schema/views"));
- assertThat(NodePathGenerator.generatePath(new
ViewMetadataNodePath("foo_db", "foo_schema", null), true),
is("/metadata/foo_db/schemas/foo_schema"));
- assertThat(NodePathGenerator.generatePath(new
ViewMetadataNodePath("foo_db", "foo_schema", "foo_view"), false),
is("/metadata/foo_db/schemas/foo_schema/views/foo_view"));
+ assertThat(NodePathGenerator.toPath(new ViewMetadataNodePath("foo_db",
null, null), false), is("/metadata/foo_db/schemas"));
+ assertThat(NodePathGenerator.toPath(new ViewMetadataNodePath("foo_db",
"foo_schema", null), false), is("/metadata/foo_db/schemas/foo_schema/views"));
+ assertThat(NodePathGenerator.toPath(new ViewMetadataNodePath("foo_db",
"foo_schema", null), true), is("/metadata/foo_db/schemas/foo_schema"));
+ assertThat(NodePathGenerator.toPath(new ViewMetadataNodePath("foo_db",
"foo_schema", "foo_view"), false),
is("/metadata/foo_db/schemas/foo_schema/views/foo_view"));
}
@Test
void assertGenerateVersionPath() {
- VersionNodePath versionNodePath =
NodePathGenerator.generateVersionPath(new ViewMetadataNodePath("foo_db",
"foo_schema", "foo_view"));
+ VersionNodePath versionNodePath = NodePathGenerator.toVersionPath(new
ViewMetadataNodePath("foo_db", "foo_schema", "foo_view"));
assertThat(versionNodePath.getActiveVersionPath(),
is("/metadata/foo_db/schemas/foo_schema/views/foo_view/active_version"));
assertThat(versionNodePath.getVersionsPath(),
is("/metadata/foo_db/schemas/foo_schema/views/foo_view/versions"));
assertThat(versionNodePath.getVersionPath(0),
is("/metadata/foo_db/schemas/foo_schema/views/foo_view/versions/0"));
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/rule/DatabaseRuleNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/rule/DatabaseRuleNodePathTest.java
index a50a976a2a8..e1c30588660 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/rule/DatabaseRuleNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/rule/DatabaseRuleNodePathTest.java
@@ -29,17 +29,17 @@ class DatabaseRuleNodePathTest {
@Test
void assertGeneratePath() {
- assertThat(NodePathGenerator.generatePath(new
DatabaseRuleNodePath("foo_db", null, null), false),
is("/metadata/foo_db/rules"));
- assertThat(NodePathGenerator.generatePath(new
DatabaseRuleNodePath("foo_db", "foo_rule", null), false),
is("/metadata/foo_db/rules/foo_rule"));
- assertThat(NodePathGenerator.generatePath(new
DatabaseRuleNodePath("foo_db", "foo_rule", new
DatabaseRuleItem("unique_rule_item")), false),
+ assertThat(NodePathGenerator.toPath(new DatabaseRuleNodePath("foo_db",
null, null), false), is("/metadata/foo_db/rules"));
+ assertThat(NodePathGenerator.toPath(new DatabaseRuleNodePath("foo_db",
"foo_rule", null), false), is("/metadata/foo_db/rules/foo_rule"));
+ assertThat(NodePathGenerator.toPath(new DatabaseRuleNodePath("foo_db",
"foo_rule", new DatabaseRuleItem("unique_rule_item")), false),
is("/metadata/foo_db/rules/foo_rule/unique_rule_item"));
- assertThat(NodePathGenerator.generatePath(new
DatabaseRuleNodePath("foo_db", "foo_rule", new
DatabaseRuleItem("named_rule_item/item")), false),
+ assertThat(NodePathGenerator.toPath(new DatabaseRuleNodePath("foo_db",
"foo_rule", new DatabaseRuleItem("named_rule_item/item")), false),
is("/metadata/foo_db/rules/foo_rule/named_rule_item/item"));
}
@Test
void assertGenerateVersionPath() {
- VersionNodePath versionNodePath =
NodePathGenerator.generateVersionPath(new DatabaseRuleNodePath("foo_db",
"foo_rule", new DatabaseRuleItem("named_rule_item/item")));
+ VersionNodePath versionNodePath = NodePathGenerator.toVersionPath(new
DatabaseRuleNodePath("foo_db", "foo_rule", new
DatabaseRuleItem("named_rule_item/item")));
assertThat(versionNodePath.getActiveVersionPath(),
is("/metadata/foo_db/rules/foo_rule/named_rule_item/item/active_version"));
assertThat(versionNodePath.getVersionsPath(),
is("/metadata/foo_db/rules/foo_rule/named_rule_item/item/versions"));
assertThat(versionNodePath.getVersionPath(0),
is("/metadata/foo_db/rules/foo_rule/named_rule_item/item/versions/0"));
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/storage/StorageNodeNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/storage/StorageNodeNodePathTest.java
index 361ea957906..fccd69ba4cd 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/storage/StorageNodeNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/storage/StorageNodeNodePathTest.java
@@ -27,7 +27,7 @@ class StorageNodeNodePathTest {
@Test
void assertGeneratePath() {
- assertThat(NodePathGenerator.generatePath(new
StorageNodeNodePath("foo_db", null), false),
is("/metadata/foo_db/data_sources/nodes"));
- assertThat(NodePathGenerator.generatePath(new
StorageNodeNodePath("foo_db", "foo_storage_node"), false),
is("/metadata/foo_db/data_sources/nodes/foo_storage_node"));
+ assertThat(NodePathGenerator.toPath(new StorageNodeNodePath("foo_db",
null), false), is("/metadata/foo_db/data_sources/nodes"));
+ assertThat(NodePathGenerator.toPath(new StorageNodeNodePath("foo_db",
"foo_storage_node"), false),
is("/metadata/foo_db/data_sources/nodes/foo_storage_node"));
}
}
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/storage/StorageUnitNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/storage/StorageUnitNodePathTest.java
index a35048142b8..ab6a01b3e77 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/storage/StorageUnitNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/storage/StorageUnitNodePathTest.java
@@ -27,7 +27,7 @@ class StorageUnitNodePathTest {
@Test
void assertGeneratePath() {
- assertThat(NodePathGenerator.generatePath(new
StorageUnitNodePath("foo_db", null), false),
is("/metadata/foo_db/data_sources/units"));
- assertThat(NodePathGenerator.generatePath(new
StorageUnitNodePath("foo_db", "foo_storage_unit"), false),
is("/metadata/foo_db/data_sources/units/foo_storage_unit"));
+ assertThat(NodePathGenerator.toPath(new StorageUnitNodePath("foo_db",
null), false), is("/metadata/foo_db/data_sources/units"));
+ assertThat(NodePathGenerator.toPath(new StorageUnitNodePath("foo_db",
"foo_storage_unit"), false),
is("/metadata/foo_db/data_sources/units/foo_storage_unit"));
}
}
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/label/LabelNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/label/LabelNodePathTest.java
index 80adeb3dfb7..86e7745a3dc 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/label/LabelNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/label/LabelNodePathTest.java
@@ -27,6 +27,6 @@ class LabelNodePathTest {
@Test
void assertGeneratePath() {
- assertThat(NodePathGenerator.generatePath(new
LabelNodePath("foo_instance_id"), false),
is("/nodes/compute_nodes/labels/foo_instance_id"));
+ assertThat(NodePathGenerator.toPath(new
LabelNodePath("foo_instance_id"), false),
is("/nodes/compute_nodes/labels/foo_instance_id"));
}
}
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/process/KillProcessTriggerNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/process/KillProcessTriggerNodePathTest.java
index e5819d7e6a8..9250c89c60c 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/process/KillProcessTriggerNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/process/KillProcessTriggerNodePathTest.java
@@ -27,8 +27,8 @@ class KillProcessTriggerNodePathTest {
@Test
void assertGeneratePath() {
- assertThat(NodePathGenerator.generatePath(new
KillProcessTriggerNodePath(null, null), false),
is("/nodes/compute_nodes/kill_process_trigger"));
- assertThat(NodePathGenerator.generatePath(new
KillProcessTriggerNodePath("foo_instance_id", "foo_process_id"), false),
+ assertThat(NodePathGenerator.toPath(new
KillProcessTriggerNodePath(null), false),
is("/nodes/compute_nodes/kill_process_trigger"));
+ assertThat(NodePathGenerator.toPath(new KillProcessTriggerNodePath(new
InstanceProcessNodeValue("foo_instance_id", "foo_process_id")), false),
is("/nodes/compute_nodes/kill_process_trigger/foo_instance_id:foo_process_id"));
}
}
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/process/ShowProcessListTriggerNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/process/ShowProcessListTriggerNodePathTest.java
index d29f2741cb0..56c833cec24 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/process/ShowProcessListTriggerNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/process/ShowProcessListTriggerNodePathTest.java
@@ -27,8 +27,8 @@ class ShowProcessListTriggerNodePathTest {
@Test
void assertGeneratePath() {
- assertThat(NodePathGenerator.generatePath(new
ShowProcessListTriggerNodePath(null, null), false),
is("/nodes/compute_nodes/show_process_list_trigger"));
- assertThat(NodePathGenerator.generatePath(new
ShowProcessListTriggerNodePath("foo_instance_id", "foo_process_id"), false),
+ assertThat(NodePathGenerator.toPath(new
ShowProcessListTriggerNodePath(null), false),
is("/nodes/compute_nodes/show_process_list_trigger"));
+ assertThat(NodePathGenerator.toPath(new
ShowProcessListTriggerNodePath(new InstanceProcessNodeValue("foo_instance_id",
"foo_process_id")), false),
is("/nodes/compute_nodes/show_process_list_trigger/foo_instance_id:foo_process_id"));
}
}
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/status/OnlineNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/status/OnlineNodePathTest.java
index 99c8b798607..245fdf8591a 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/status/OnlineNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/status/OnlineNodePathTest.java
@@ -28,8 +28,8 @@ class OnlineNodePathTest {
@Test
void assertGeneratePath() {
- assertThat(NodePathGenerator.generatePath(new OnlineNodePath(null,
null), false), is("/nodes/compute_nodes/online"));
- assertThat(NodePathGenerator.generatePath(new
OnlineNodePath(InstanceType.JDBC, null), false),
is("/nodes/compute_nodes/online/jdbc"));
- assertThat(NodePathGenerator.generatePath(new
OnlineNodePath(InstanceType.PROXY, "foo_instance_id"), false),
is("/nodes/compute_nodes/online/proxy/foo_instance_id"));
+ assertThat(NodePathGenerator.toPath(new OnlineNodePath(null, null),
false), is("/nodes/compute_nodes/online"));
+ assertThat(NodePathGenerator.toPath(new
OnlineNodePath(InstanceType.JDBC, null), false),
is("/nodes/compute_nodes/online/jdbc"));
+ assertThat(NodePathGenerator.toPath(new
OnlineNodePath(InstanceType.PROXY, "foo_instance_id"), false),
is("/nodes/compute_nodes/online/proxy/foo_instance_id"));
}
}
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/status/StatusNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/status/StatusNodePathTest.java
index e99d1d98551..2f71d11a0c2 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/status/StatusNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/status/StatusNodePathTest.java
@@ -27,7 +27,7 @@ class StatusNodePathTest {
@Test
void assertGeneratePath() {
- assertThat(NodePathGenerator.generatePath(new StatusNodePath(null),
false), is("/nodes/compute_nodes/status"));
- assertThat(NodePathGenerator.generatePath(new
StatusNodePath("foo_instance_id"), false),
is("/nodes/compute_nodes/status/foo_instance_id"));
+ assertThat(NodePathGenerator.toPath(new StatusNodePath(null), false),
is("/nodes/compute_nodes/status"));
+ assertThat(NodePathGenerator.toPath(new
StatusNodePath("foo_instance_id"), false),
is("/nodes/compute_nodes/status/foo_instance_id"));
}
}
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/workerid/ComputeNodeWorkerIDNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/workerid/ComputeNodeWorkerIDNodePathTest.java
index 77588618530..84a111b1a9c 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/workerid/ComputeNodeWorkerIDNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/workerid/ComputeNodeWorkerIDNodePathTest.java
@@ -27,6 +27,6 @@ class ComputeNodeWorkerIDNodePathTest {
@Test
void assertGeneratePath() {
- assertThat(NodePathGenerator.generatePath(new
ComputeNodeWorkerIDNodePath("foo_instance_id"), false),
is("/nodes/compute_nodes/worker_id/foo_instance_id"));
+ assertThat(NodePathGenerator.toPath(new
ComputeNodeWorkerIDNodePath("foo_instance_id"), false),
is("/nodes/compute_nodes/worker_id/foo_instance_id"));
}
}
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/storage/QualifiedDataSourceNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/storage/QualifiedDataSourceNodePathTest.java
index 5b188b8db5e..d1e82b0b3e5 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/storage/QualifiedDataSourceNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/storage/QualifiedDataSourceNodePathTest.java
@@ -28,7 +28,7 @@ class QualifiedDataSourceNodePathTest {
@Test
void assertGeneratePath() {
- assertThat(NodePathGenerator.generatePath(new
QualifiedDataSourceNodePath(new
QualifiedDataSource("foo_db.foo_group.foo_ds")), false),
+ assertThat(NodePathGenerator.toPath(new
QualifiedDataSourceNodePath(new
QualifiedDataSource("foo_db.foo_group.foo_ds")), false),
is("/nodes/qualified_data_sources/foo_db.foo_group.foo_ds"));
}
}
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/reservation/WorkerIDReservationNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/reservation/WorkerIDReservationNodePathTest.java
index 991a8742a35..4c3db671db5 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/reservation/WorkerIDReservationNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/reservation/WorkerIDReservationNodePathTest.java
@@ -27,7 +27,7 @@ class WorkerIDReservationNodePathTest {
@Test
void assertGeneratePath() {
- assertThat(NodePathGenerator.generatePath(new
WorkerIDReservationNodePath(null), false), is("/reservation/worker_id"));
- assertThat(NodePathGenerator.generatePath(new
WorkerIDReservationNodePath(1), false), is("/reservation/worker_id/1"));
+ assertThat(NodePathGenerator.toPath(new
WorkerIDReservationNodePath(null), false), is("/reservation/worker_id"));
+ assertThat(NodePathGenerator.toPath(new
WorkerIDReservationNodePath(1), false), is("/reservation/worker_id/1"));
}
}
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/state/ClusterNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/state/ClusterNodePathTest.java
index 1ffbcc2b40a..77eae06cff9 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/state/ClusterNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/state/ClusterNodePathTest.java
@@ -27,6 +27,6 @@ class ClusterNodePathTest {
@Test
void assertGeneratePath() {
- assertThat(NodePathGenerator.generatePath(new ClusterNodePath(),
false), is("/states/cluster_state"));
+ assertThat(NodePathGenerator.toPath(new ClusterNodePath(), false),
is("/states/cluster_state"));
}
}
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/state/DatabaseListenerCoordinatorNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/state/DatabaseListenerCoordinatorNodePathTest.java
index 49bc1a14dd0..6ac018582c5 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/state/DatabaseListenerCoordinatorNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/state/DatabaseListenerCoordinatorNodePathTest.java
@@ -27,7 +27,7 @@ class DatabaseListenerCoordinatorNodePathTest {
@Test
void assertGeneratePath() {
- assertThat(NodePathGenerator.generatePath(new
DatabaseListenerCoordinatorNodePath(null), false),
is("/states/database_listener_coordinator"));
- assertThat(NodePathGenerator.generatePath(new
DatabaseListenerCoordinatorNodePath("foo_db"), false),
is("/states/database_listener_coordinator/foo_db"));
+ assertThat(NodePathGenerator.toPath(new
DatabaseListenerCoordinatorNodePath(null), false),
is("/states/database_listener_coordinator"));
+ assertThat(NodePathGenerator.toPath(new
DatabaseListenerCoordinatorNodePath("foo_db"), false),
is("/states/database_listener_coordinator/foo_db"));
}
}
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/statistics/StatisticsDataNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/statistics/StatisticsDataNodePathTest.java
index ede711e444f..8a4bcf626f5 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/statistics/StatisticsDataNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/statistics/StatisticsDataNodePathTest.java
@@ -27,14 +27,14 @@ class StatisticsDataNodePathTest {
@Test
void assertGeneratePath() {
- assertThat(NodePathGenerator.generatePath(new
StatisticsDataNodePath(null, null, null, null), false),
is("/statistics/databases"));
- assertThat(NodePathGenerator.generatePath(new
StatisticsDataNodePath("foo_db", null, null, null), true),
is("/statistics/databases/foo_db"));
- assertThat(NodePathGenerator.generatePath(new
StatisticsDataNodePath("foo_db", null, null, null), false),
is("/statistics/databases/foo_db/schemas"));
- assertThat(NodePathGenerator.generatePath(new
StatisticsDataNodePath("foo_db", "foo_schema", null, null), true),
is("/statistics/databases/foo_db/schemas/foo_schema"));
- assertThat(NodePathGenerator.generatePath(new
StatisticsDataNodePath("foo_db", "foo_schema", null, null), false),
is("/statistics/databases/foo_db/schemas/foo_schema/tables"));
- assertThat(NodePathGenerator.generatePath(new
StatisticsDataNodePath("foo_db", "foo_schema", "foo_tbl", null), false),
+ assertThat(NodePathGenerator.toPath(new StatisticsDataNodePath(null,
null, null, null), false), is("/statistics/databases"));
+ assertThat(NodePathGenerator.toPath(new
StatisticsDataNodePath("foo_db", null, null, null), true),
is("/statistics/databases/foo_db"));
+ assertThat(NodePathGenerator.toPath(new
StatisticsDataNodePath("foo_db", null, null, null), false),
is("/statistics/databases/foo_db/schemas"));
+ assertThat(NodePathGenerator.toPath(new
StatisticsDataNodePath("foo_db", "foo_schema", null, null), true),
is("/statistics/databases/foo_db/schemas/foo_schema"));
+ assertThat(NodePathGenerator.toPath(new
StatisticsDataNodePath("foo_db", "foo_schema", null, null), false),
is("/statistics/databases/foo_db/schemas/foo_schema/tables"));
+ assertThat(NodePathGenerator.toPath(new
StatisticsDataNodePath("foo_db", "foo_schema", "foo_tbl", null), false),
is("/statistics/databases/foo_db/schemas/foo_schema/tables/foo_tbl"));
- assertThat(NodePathGenerator.generatePath(new
StatisticsDataNodePath("foo_db", "foo_schema", "foo_tbl", "foo_key"), false),
+ assertThat(NodePathGenerator.toPath(new
StatisticsDataNodePath("foo_db", "foo_schema", "foo_tbl", "foo_key"), false),
is("/statistics/databases/foo_db/schemas/foo_schema/tables/foo_tbl/foo_key"));
}
}
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/statistics/StatisticsJobNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/statistics/StatisticsJobNodePathTest.java
index 698b9b764fc..9a652cb0d57 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/statistics/StatisticsJobNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/statistics/StatisticsJobNodePathTest.java
@@ -27,6 +27,6 @@ class StatisticsJobNodePathTest {
@Test
void assertGeneratePath() {
- assertThat(NodePathGenerator.generatePath(new StatisticsJobNodePath(),
false), is("/statistics/job"));
+ assertThat(NodePathGenerator.toPath(new StatisticsJobNodePath(),
false), is("/statistics/job"));
}
}
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/ClusterStateChangedHandler.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/ClusterStateChangedHandler.java
index 97be8de0f09..b704689def9 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/ClusterStateChangedHandler.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/ClusterStateChangedHandler.java
@@ -35,7 +35,7 @@ public final class ClusterStateChangedHandler implements
GlobalDataChangedEventH
@Override
public String getSubscribedKey() {
- return NodePathGenerator.generatePath(new ClusterNodePath(), false);
+ return NodePathGenerator.toPath(new ClusterNodePath(), false);
}
@Override
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/ComputeNodeOnlineHandler.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/ComputeNodeOnlineHandler.java
index 9a419c7f09b..3f043295356 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/ComputeNodeOnlineHandler.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/ComputeNodeOnlineHandler.java
@@ -44,7 +44,7 @@ public final class ComputeNodeOnlineHandler implements
GlobalDataChangedEventHan
@Override
public String getSubscribedKey() {
- return NodePathGenerator.generatePath(new OnlineNodePath(null, null),
false);
+ return NodePathGenerator.toPath(new OnlineNodePath(null, null), false);
}
@Override
@@ -68,6 +68,6 @@ public final class ComputeNodeOnlineHandler implements
GlobalDataChangedEventHan
}
private Matcher getInstanceOnlinePathMatcher(final String
onlineInstancePath) {
- return Pattern.compile(NodePathGenerator.generatePath(new
OnlineNodePath(null, null), false) + "/([\\S]+)/([\\S]+)$",
Pattern.CASE_INSENSITIVE).matcher(onlineInstancePath);
+ return Pattern.compile(NodePathGenerator.toPath(new
OnlineNodePath(null, null), false) + "/([\\S]+)/([\\S]+)$",
Pattern.CASE_INSENSITIVE).matcher(onlineInstancePath);
}
}
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/ComputeNodeStateChangedHandler.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/ComputeNodeStateChangedHandler.java
index 4c52018de34..513c6868007 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/ComputeNodeStateChangedHandler.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/ComputeNodeStateChangedHandler.java
@@ -57,12 +57,12 @@ public final class ComputeNodeStateChangedHandler
implements GlobalDataChangedEv
@SuppressWarnings("unchecked")
private void handle(final ContextManager contextManager, final
DataChangedEvent event, final String instanceId) {
ComputeNodeInstanceContext computeNodeInstanceContext =
contextManager.getComputeNodeInstanceContext();
- if (event.getKey().equals(NodePathGenerator.generatePath(new
StatusNodePath(instanceId), false)) && Type.DELETED != event.getType()) {
+ if (event.getKey().equals(NodePathGenerator.toPath(new
StatusNodePath(instanceId), false)) && Type.DELETED != event.getType()) {
computeNodeInstanceContext.updateStatus(instanceId,
event.getValue());
- } else if (event.getKey().equals(NodePathGenerator.generatePath(new
LabelNodePath(instanceId), false)) && Type.DELETED != event.getType()) {
+ } else if (event.getKey().equals(NodePathGenerator.toPath(new
LabelNodePath(instanceId), false)) && Type.DELETED != event.getType()) {
// TODO labels may be empty
computeNodeInstanceContext.updateLabels(instanceId,
Strings.isNullOrEmpty(event.getValue()) ? new ArrayList<>() :
YamlEngine.unmarshal(event.getValue(), Collection.class));
- } else if (event.getKey().equals(NodePathGenerator.generatePath(new
ComputeNodeWorkerIDNodePath(instanceId), false))) {
+ } else if (event.getKey().equals(NodePathGenerator.toPath(new
ComputeNodeWorkerIDNodePath(instanceId), false))) {
computeNodeInstanceContext.updateWorkerId(instanceId,
Strings.isNullOrEmpty(event.getValue()) ? null :
Integer.valueOf(event.getValue()));
}
}
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/DatabaseListenerChangedHandler.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/DatabaseListenerChangedHandler.java
index f9b126bcd4d..6b4a21721b9 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/DatabaseListenerChangedHandler.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/DatabaseListenerChangedHandler.java
@@ -42,7 +42,7 @@ public final class DatabaseListenerChangedHandler implements
GlobalDataChangedEv
@Override
public String getSubscribedKey() {
- return NodePathGenerator.generatePath(new
DatabaseListenerCoordinatorNodePath(null), false);
+ return NodePathGenerator.toPath(new
DatabaseListenerCoordinatorNodePath(null), false);
}
@Override
@@ -59,10 +59,10 @@ public final class DatabaseListenerChangedHandler
implements GlobalDataChangedEv
private static void handle(final ContextManager contextManager, final
String databaseName, final ClusterDatabaseListenerCoordinatorType
clusterDatabaseListenerCoordinatorType) {
ClusterPersistRepository repository = (ClusterPersistRepository)
contextManager.getPersistServiceFacade().getRepository();
if (ClusterDatabaseListenerCoordinatorType.CREATE ==
clusterDatabaseListenerCoordinatorType) {
- repository.watch(NodePathGenerator.generatePath(new
TableMetadataNodePath(databaseName, null, null), true), new
DatabaseMetaDataChangedListener(contextManager));
+ repository.watch(NodePathGenerator.toPath(new
TableMetadataNodePath(databaseName, null, null), true), new
DatabaseMetaDataChangedListener(contextManager));
contextManager.getMetaDataContextManager().getDatabaseMetaDataManager().addDatabase(databaseName);
} else if (ClusterDatabaseListenerCoordinatorType.DROP ==
clusterDatabaseListenerCoordinatorType) {
- repository.removeDataListener(NodePathGenerator.generatePath(new
TableMetadataNodePath(databaseName, null, null), true));
+ repository.removeDataListener(NodePathGenerator.toPath(new
TableMetadataNodePath(databaseName, null, null), true));
contextManager.getMetaDataContextManager().getDatabaseMetaDataManager().dropDatabase(databaseName);
}
new
ClusterDatabaseListenerPersistCoordinator(repository).delete(databaseName);
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/GlobalRuleChangedHandler.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/GlobalRuleChangedHandler.java
index a9d759bb4d1..c077830ce74 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/GlobalRuleChangedHandler.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/GlobalRuleChangedHandler.java
@@ -39,7 +39,7 @@ public final class GlobalRuleChangedHandler implements
GlobalDataChangedEventHan
@Override
public String getSubscribedKey() {
- return NodePathGenerator.generatePath(new GlobalRuleNodePath(null),
false);
+ return NodePathGenerator.toPath(new GlobalRuleNodePath(null), false);
}
@Override
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/KillProcessHandler.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/KillProcessHandler.java
index 1148d4579e3..4fa74ddc993 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/KillProcessHandler.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/KillProcessHandler.java
@@ -41,7 +41,7 @@ public final class KillProcessHandler implements
GlobalDataChangedEventHandler {
@Override
public String getSubscribedKey() {
- return NodePathGenerator.generatePath(new
KillProcessTriggerNodePath(null, null), false);
+ return NodePathGenerator.toPath(new KillProcessTriggerNodePath(null),
false);
}
@Override
@@ -73,6 +73,6 @@ public final class KillProcessHandler implements
GlobalDataChangedEventHandler {
}
private Matcher getKillProcessTriggerMatcher(final DataChangedEvent event)
{
- return Pattern.compile(NodePathGenerator.generatePath(new
KillProcessTriggerNodePath(null, null), false) + "/([\\S]+):([\\S]+)$",
Pattern.CASE_INSENSITIVE).matcher(event.getKey());
+ return Pattern.compile(NodePathGenerator.toPath(new
KillProcessTriggerNodePath(null), false) + "/([\\S]+):([\\S]+)$",
Pattern.CASE_INSENSITIVE).matcher(event.getKey());
}
}
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/PropertiesChangedHandler.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/PropertiesChangedHandler.java
index 3978421f89c..ed05e5f01cd 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/PropertiesChangedHandler.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/PropertiesChangedHandler.java
@@ -36,7 +36,7 @@ public final class PropertiesChangedHandler implements
GlobalDataChangedEventHan
@Override
public String getSubscribedKey() {
- return NodePathGenerator.generatePath(new GlobalPropertiesNodePath(),
false);
+ return NodePathGenerator.toPath(new GlobalPropertiesNodePath(), false);
}
@Override
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/QualifiedDataSourceChangedHandler.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/QualifiedDataSourceChangedHandler.java
index b804c8dcf29..52b39133ab0 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/QualifiedDataSourceChangedHandler.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/QualifiedDataSourceChangedHandler.java
@@ -45,7 +45,7 @@ public final class QualifiedDataSourceChangedHandler
implements GlobalDataChange
@Override
public String getSubscribedKey() {
- return NodePathGenerator.generatePath(new
QualifiedDataSourceNodePath(null), false);
+ return NodePathGenerator.toPath(new QualifiedDataSourceNodePath(null),
false);
}
@Override
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/ShowProcessListHandler.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/ShowProcessListHandler.java
index 808b4cba104..af8b4863f85 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/ShowProcessListHandler.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/ShowProcessListHandler.java
@@ -38,7 +38,7 @@ public final class ShowProcessListHandler implements
GlobalDataChangedEventHandl
@Override
public String getSubscribedKey() {
- return NodePathGenerator.generatePath(new
ShowProcessListTriggerNodePath(null, null), false);
+ return NodePathGenerator.toPath(new
ShowProcessListTriggerNodePath(null), false);
}
@Override
@@ -67,6 +67,6 @@ public final class ShowProcessListHandler implements
GlobalDataChangedEventHandl
}
private Matcher getShowProcessListTriggerMatcher(final DataChangedEvent
event) {
- return Pattern.compile(NodePathGenerator.generatePath(new
ShowProcessListTriggerNodePath(null, null), false) + "/([\\S]+):([\\S]+)$",
Pattern.CASE_INSENSITIVE).matcher(event.getKey());
+ return Pattern.compile(NodePathGenerator.toPath(new
ShowProcessListTriggerNodePath(null), false) + "/([\\S]+):([\\S]+)$",
Pattern.CASE_INSENSITIVE).matcher(event.getKey());
}
}
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/StatisticsChangedHandler.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/StatisticsChangedHandler.java
index e18e837fe3c..1966e8b5306 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/StatisticsChangedHandler.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/StatisticsChangedHandler.java
@@ -40,7 +40,7 @@ public final class StatisticsChangedHandler implements
GlobalDataChangedEventHan
@Override
public String getSubscribedKey() {
- return NodePathGenerator.generatePath(new StatisticsDataNodePath(null,
null, null, null), false);
+ return NodePathGenerator.toPath(new StatisticsDataNodePath(null, null,
null, null), false);
}
@Override
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/DataChangedEventListenerRegistry.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/DataChangedEventListenerRegistry.java
index 7c28f92e62a..24b2546c23e 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/DataChangedEventListenerRegistry.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/DataChangedEventListenerRegistry.java
@@ -54,7 +54,7 @@ public final class DataChangedEventListenerRegistry {
}
private void registerDatabaseListeners(final String databaseName) {
- repository.watch(NodePathGenerator.generatePath(new
TableMetadataNodePath(databaseName, null, null), true), new
DatabaseMetaDataChangedListener(contextManager));
+ repository.watch(NodePathGenerator.toPath(new
TableMetadataNodePath(databaseName, null, null), true), new
DatabaseMetaDataChangedListener(contextManager));
}
private void registerGlobalHandlers(final GlobalDataChangedEventHandler
handler) {
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/coordinator/database/ClusterDatabaseListenerPersistCoordinator.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/coordinator/database/ClusterDatabaseListenerPersistCoordinator.java
index 8fb3172d9b7..22c235c2216 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/coordinator/database/ClusterDatabaseListenerPersistCoordinator.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/coordinator/database/ClusterDatabaseListenerPersistCoordinator.java
@@ -37,7 +37,7 @@ public final class ClusterDatabaseListenerPersistCoordinator {
* @param clusterDatabaseListenerCoordinatorType database changed listener
assisted type
*/
public void persist(final String databaseName, final
ClusterDatabaseListenerCoordinatorType clusterDatabaseListenerCoordinatorType) {
- repository.persistEphemeral(NodePathGenerator.generatePath(new
DatabaseListenerCoordinatorNodePath(databaseName), false),
clusterDatabaseListenerCoordinatorType.name());
+ repository.persistEphemeral(NodePathGenerator.toPath(new
DatabaseListenerCoordinatorNodePath(databaseName), false),
clusterDatabaseListenerCoordinatorType.name());
}
/**
@@ -46,6 +46,6 @@ public final class ClusterDatabaseListenerPersistCoordinator {
* @param databaseName database name
*/
public void delete(final String databaseName) {
- repository.delete(NodePathGenerator.generatePath(new
DatabaseListenerCoordinatorNodePath(databaseName), false));
+ repository.delete(NodePathGenerator.toPath(new
DatabaseListenerCoordinatorNodePath(databaseName), false));
}
}
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/coordinator/process/ClusterProcessPersistCoordinator.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/coordinator/process/ClusterProcessPersistCoordinator.java
index 79f53f6cb58..69c2f0200e0 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/coordinator/process/ClusterProcessPersistCoordinator.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/coordinator/process/ClusterProcessPersistCoordinator.java
@@ -24,6 +24,7 @@ import
org.apache.shardingsphere.infra.executor.sql.process.yaml.swapper.YamlPro
import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
import org.apache.shardingsphere.mode.node.path.execution.ProcessNodePath;
+import
org.apache.shardingsphere.mode.node.path.node.compute.process.InstanceProcessNodeValue;
import
org.apache.shardingsphere.mode.node.path.node.compute.process.KillProcessTriggerNodePath;
import
org.apache.shardingsphere.mode.node.path.node.compute.process.ShowProcessListTriggerNodePath;
import org.apache.shardingsphere.mode.spi.repository.PersistRepository;
@@ -49,9 +50,9 @@ public final class ClusterProcessPersistCoordinator {
public void reportLocalProcesses(final String instanceId, final String
taskId) {
Collection<Process> processes =
ProcessRegistry.getInstance().listAll();
if (!processes.isEmpty()) {
- repository.persist(NodePathGenerator.generatePath(new
ProcessNodePath(taskId, instanceId), false),
YamlEngine.marshal(swapper.swapToYamlConfiguration(processes)));
+ repository.persist(NodePathGenerator.toPath(new
ProcessNodePath(taskId, instanceId), false),
YamlEngine.marshal(swapper.swapToYamlConfiguration(processes)));
}
- repository.delete(NodePathGenerator.generatePath(new
ShowProcessListTriggerNodePath(instanceId, taskId), false));
+ repository.delete(NodePathGenerator.toPath(new
ShowProcessListTriggerNodePath(new InstanceProcessNodeValue(instanceId,
taskId)), false));
}
/**
@@ -61,6 +62,6 @@ public final class ClusterProcessPersistCoordinator {
* @param processId process ID
*/
public void cleanProcess(final String instanceId, final String processId) {
- repository.delete(NodePathGenerator.generatePath(new
KillProcessTriggerNodePath(instanceId, processId), false));
+ repository.delete(NodePathGenerator.toPath(new
KillProcessTriggerNodePath(new InstanceProcessNodeValue(instanceId,
processId)), false));
}
}
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterProcessPersistService.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterProcessPersistService.java
index 357740a95fd..7e69dfbcf53 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterProcessPersistService.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterProcessPersistService.java
@@ -26,6 +26,7 @@ import
org.apache.shardingsphere.infra.instance.metadata.InstanceType;
import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
import org.apache.shardingsphere.mode.node.path.execution.ProcessNodePath;
+import
org.apache.shardingsphere.mode.node.path.node.compute.process.InstanceProcessNodeValue;
import
org.apache.shardingsphere.mode.node.path.node.compute.process.KillProcessTriggerNodePath;
import
org.apache.shardingsphere.mode.node.path.node.compute.process.ShowProcessListTriggerNodePath;
import
org.apache.shardingsphere.mode.node.path.node.compute.status.OnlineNodePath;
@@ -56,7 +57,7 @@ public final class ClusterProcessPersistService implements
ProcessPersistService
isCompleted =
ProcessOperationLockRegistry.getInstance().waitUntilReleaseReady(taskId, () ->
isReady(triggerPaths));
return getShowProcessListData(taskId);
} finally {
- repository.delete(NodePathGenerator.generatePath(new
ProcessNodePath(taskId, null), false));
+ repository.delete(NodePathGenerator.toPath(new
ProcessNodePath(taskId, null), false));
if (!isCompleted) {
triggerPaths.forEach(repository::delete);
}
@@ -65,15 +66,15 @@ public final class ClusterProcessPersistService implements
ProcessPersistService
private Collection<String> getShowProcessListTriggerPaths(final String
taskId) {
return Stream.of(InstanceType.values())
- .flatMap(each ->
repository.getChildrenKeys(NodePathGenerator.generatePath(new
OnlineNodePath(each, null), false)).stream()
- .map(instanceId -> NodePathGenerator.generatePath(new
ShowProcessListTriggerNodePath(instanceId, taskId), false)))
+ .flatMap(each ->
repository.getChildrenKeys(NodePathGenerator.toPath(new OnlineNodePath(each,
null), false)).stream()
+ .map(instanceId -> NodePathGenerator.toPath(new
ShowProcessListTriggerNodePath(new InstanceProcessNodeValue(instanceId,
taskId)), false)))
.collect(Collectors.toList());
}
private Collection<Process> getShowProcessListData(final String taskId) {
YamlProcessList yamlProcessList = new YamlProcessList();
- for (String each :
repository.getChildrenKeys(NodePathGenerator.generatePath(new
ProcessNodePath(taskId, null), false)).stream()
- .map(each ->
repository.query(NodePathGenerator.generatePath(new ProcessNodePath(taskId,
each), false))).collect(Collectors.toList())) {
+ for (String each :
repository.getChildrenKeys(NodePathGenerator.toPath(new ProcessNodePath(taskId,
null), false)).stream()
+ .map(each -> repository.query(NodePathGenerator.toPath(new
ProcessNodePath(taskId, each), false))).collect(Collectors.toList())) {
yamlProcessList.getProcesses().addAll(YamlEngine.unmarshal(each,
YamlProcessList.class).getProcesses());
}
return new YamlProcessListSwapper().swapToObject(yamlProcessList);
@@ -95,8 +96,8 @@ public final class ClusterProcessPersistService implements
ProcessPersistService
private Collection<String> getKillProcessTriggerPaths(final String
processId) {
return Stream.of(InstanceType.values())
- .flatMap(each ->
repository.getChildrenKeys(NodePathGenerator.generatePath(new
OnlineNodePath(each, null), false)).stream()
- .map(onlinePath -> NodePathGenerator.generatePath(new
KillProcessTriggerNodePath(onlinePath, processId), false)))
+ .flatMap(each ->
repository.getChildrenKeys(NodePathGenerator.toPath(new OnlineNodePath(each,
null), false)).stream()
+ .map(onlinePath -> NodePathGenerator.toPath(new
KillProcessTriggerNodePath(new InstanceProcessNodeValue(onlinePath,
processId)), false)))
.collect(Collectors.toList());
}
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/workerid/ReservationPersistService.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/workerid/ReservationPersistService.java
index b02d0567883..dc3c10821ee 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/workerid/ReservationPersistService.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/workerid/ReservationPersistService.java
@@ -43,7 +43,7 @@ public final class ReservationPersistService {
public Optional<Integer> reserveWorkerId(final Integer
preselectedWorkerId, final String instanceId) {
try {
return repository.persistExclusiveEphemeral(
- NodePathGenerator.generatePath(new
WorkerIDReservationNodePath(preselectedWorkerId), false), instanceId) ?
Optional.of(preselectedWorkerId) : Optional.empty();
+ NodePathGenerator.toPath(new
WorkerIDReservationNodePath(preselectedWorkerId), false), instanceId) ?
Optional.of(preselectedWorkerId) : Optional.empty();
} catch (final ClusterRepositoryPersistException ignore) {
return Optional.empty();
}