Skip to content

Commit fa91999

Browse files
authored
Add NodePathGenerator (#34697)
* Rename NodePathGenerator to NodePath * Rename NodePathGenerator to NodePath * Add NodePathGenerator * Add NodePathGenerator * Add NodePathGenerator * Add NodePathGenerator * Add NodePathGenerator
1 parent 7cfc879 commit fa91999

File tree

40 files changed

+120
-291
lines changed

40 files changed

+120
-291
lines changed

mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/database/DataSourceUnitPersistService.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
2222
import org.apache.shardingsphere.infra.yaml.config.swapper.resource.YamlDataSourceConfigurationSwapper;
2323
import org.apache.shardingsphere.mode.metadata.persist.version.MetaDataVersionPersistService;
24+
import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
2425
import org.apache.shardingsphere.mode.node.path.metadata.storage.StorageUnitNodePath;
2526
import org.apache.shardingsphere.mode.node.path.version.VersionNodePathGenerator;
2627
import org.apache.shardingsphere.mode.spi.repository.PersistRepository;
@@ -68,7 +69,7 @@ public Map<String, DataSourcePoolProperties> load(final String databaseName) {
6869
*/
6970
@SuppressWarnings("unchecked")
7071
public DataSourcePoolProperties load(final String databaseName, final String dataSourceName) {
71-
VersionNodePathGenerator versionNodePathGenerator = new StorageUnitNodePath(databaseName).getVersion(dataSourceName);
72+
VersionNodePathGenerator versionNodePathGenerator = new NodePathGenerator(new StorageUnitNodePath(databaseName)).getVersion(dataSourceName);
7273
int activeVersion = Integer.parseInt(repository.query(versionNodePathGenerator.getActiveVersionPath()));
7374
String dataSourceContent = repository.query(versionNodePathGenerator.getVersionPath(activeVersion));
7475
return yamlDataSourceConfigurationSwapper.swapToDataSourcePoolProperties(YamlEngine.unmarshal(dataSourceContent, Map.class));
@@ -82,7 +83,7 @@ public DataSourcePoolProperties load(final String databaseName, final String dat
8283
*/
8384
public void persist(final String databaseName, final Map<String, DataSourcePoolProperties> dataSourcePropsMap) {
8485
for (Entry<String, DataSourcePoolProperties> entry : dataSourcePropsMap.entrySet()) {
85-
VersionNodePathGenerator versionNodePathGenerator = new StorageUnitNodePath(databaseName).getVersion(entry.getKey());
86+
VersionNodePathGenerator versionNodePathGenerator = new NodePathGenerator(new StorageUnitNodePath(databaseName)).getVersion(entry.getKey());
8687
metaDataVersionPersistService.persist(versionNodePathGenerator, YamlEngine.marshal(yamlDataSourceConfigurationSwapper.swapToMap(entry.getValue())));
8788
}
8889
}
@@ -94,6 +95,6 @@ public void persist(final String databaseName, final Map<String, DataSourcePoolP
9495
* @param dataSourceName data source name
9596
*/
9697
public void delete(final String databaseName, final String dataSourceName) {
97-
repository.delete(new StorageUnitNodePath(databaseName).getPath(dataSourceName));
98+
repository.delete(new NodePathGenerator(new StorageUnitNodePath(databaseName)).getPath(dataSourceName));
9899
}
99100
}

mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/database/DatabaseRulePersistService.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@
2323
import org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlRuleConfigurationSwapperEngine;
2424
import org.apache.shardingsphere.mode.metadata.persist.config.RepositoryTuplePersistService;
2525
import org.apache.shardingsphere.mode.metadata.persist.version.MetaDataVersionPersistService;
26+
import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
2627
import org.apache.shardingsphere.mode.node.path.config.database.item.DatabaseRuleItem;
2728
import org.apache.shardingsphere.mode.node.path.metadata.rule.DatabaseRuleItemNodePath;
2829
import org.apache.shardingsphere.mode.node.path.metadata.rule.DatabaseRuleNodePath;
29-
import org.apache.shardingsphere.mode.node.path.version.VersionNodePathGenerator;
3030
import org.apache.shardingsphere.mode.node.tuple.RepositoryTuple;
3131
import org.apache.shardingsphere.mode.node.tuple.YamlRepositoryTupleSwapperEngine;
3232
import org.apache.shardingsphere.mode.node.tuple.annotation.RepositoryTupleEntity;
@@ -91,11 +91,11 @@ public Collection<MetaDataVersion> persist(final String databaseName, final Coll
9191

9292
private Collection<MetaDataVersion> persistDataNodes(final String databaseName, final String ruleType, final Collection<RepositoryTuple> repositoryTuples) {
9393
Collection<MetaDataVersion> result = new LinkedList<>();
94+
NodePathGenerator nodePathGenerator = new NodePathGenerator(new DatabaseRuleItemNodePath(databaseName, ruleType));
9495
for (RepositoryTuple each : repositoryTuples) {
9596
DatabaseRuleItem databaseRuleItem = new DatabaseRuleItem(each.getKey());
96-
VersionNodePathGenerator versionNodePathGenerator = new DatabaseRuleItemNodePath(databaseName, ruleType).getVersion(databaseRuleItem);
97-
int nextVersion = metaDataVersionPersistService.persist(versionNodePathGenerator, each.getValue());
98-
result.add(new MetaDataVersion(new DatabaseRuleItemNodePath(databaseName, ruleType).getPath(databaseRuleItem), Math.max(MetaDataVersion.INIT_VERSION, nextVersion - 1)));
97+
int nextVersion = metaDataVersionPersistService.persist(nodePathGenerator.getVersion(databaseRuleItem), each.getValue());
98+
result.add(new MetaDataVersion(nodePathGenerator.getPath(databaseRuleItem), Math.max(MetaDataVersion.INIT_VERSION, nextVersion - 1)));
9999
}
100100
return result;
101101
}
@@ -107,7 +107,7 @@ private Collection<MetaDataVersion> persistDataNodes(final String databaseName,
107107
* @param ruleType rule type
108108
*/
109109
public void delete(final String databaseName, final String ruleType) {
110-
repository.delete(new DatabaseRuleNodePath(databaseName).getPath(ruleType));
110+
repository.delete(new NodePathGenerator(new DatabaseRuleNodePath(databaseName)).getPath(ruleType));
111111
}
112112

113113
/**
@@ -133,7 +133,7 @@ public Collection<MetaDataVersion> delete(final String databaseName, final Colle
133133
private Collection<MetaDataVersion> delete(final String databaseName, final String ruleType, final Collection<RepositoryTuple> repositoryTuples) {
134134
Collection<MetaDataVersion> result = new LinkedList<>();
135135
for (RepositoryTuple each : repositoryTuples) {
136-
String toBeDeletedKey = new DatabaseRuleItemNodePath(databaseName, ruleType).getPath(new DatabaseRuleItem(each.getKey()));
136+
String toBeDeletedKey = new NodePathGenerator(new DatabaseRuleItemNodePath(databaseName, ruleType)).getPath(new DatabaseRuleItem(each.getKey()));
137137
repository.delete(toBeDeletedKey);
138138
result.add(new MetaDataVersion(toBeDeletedKey));
139139
}

mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/global/GlobalRulePersistService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlRuleConfigurationSwapperEngine;
2323
import org.apache.shardingsphere.mode.metadata.persist.config.RepositoryTuplePersistService;
2424
import org.apache.shardingsphere.mode.metadata.persist.version.MetaDataVersionPersistService;
25+
import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
2526
import org.apache.shardingsphere.mode.node.path.config.global.GlobalRuleNodePath;
2627
import org.apache.shardingsphere.mode.node.path.version.VersionNodePathGenerator;
2728
import org.apache.shardingsphere.mode.node.tuple.RepositoryTuple;
@@ -67,7 +68,7 @@ public Collection<RuleConfiguration> load() {
6768
* @return global rule configuration
6869
*/
6970
public Optional<RuleConfiguration> load(final String ruleType) {
70-
return yamlRepositoryTupleSwapperEngine.swapToRuleConfiguration(ruleType, repositoryTuplePersistService.load(new GlobalRuleNodePath().getPath(ruleType)));
71+
return yamlRepositoryTupleSwapperEngine.swapToRuleConfiguration(ruleType, repositoryTuplePersistService.load(new NodePathGenerator(new GlobalRuleNodePath()).getPath(ruleType)));
7172
}
7273

7374
/**
@@ -83,7 +84,7 @@ public void persist(final Collection<RuleConfiguration> globalRuleConfigs) {
8384

8485
private void persistTuples(final Collection<RepositoryTuple> tuples) {
8586
for (RepositoryTuple each : tuples) {
86-
VersionNodePathGenerator versionNodePathGenerator = new GlobalRuleNodePath().getVersion(each.getKey());
87+
VersionNodePathGenerator versionNodePathGenerator = new NodePathGenerator(new GlobalRuleNodePath()).getVersion(each.getKey());
8788
metaDataVersionPersistService.persist(versionNodePathGenerator, each.getValue());
8889
}
8990
}

mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/global/PropertiesPersistService.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import lombok.RequiredArgsConstructor;
2222
import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
2323
import org.apache.shardingsphere.mode.metadata.persist.version.MetaDataVersionPersistService;
24+
import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
2425
import org.apache.shardingsphere.mode.node.path.config.global.GlobalPropertiesNodePath;
2526
import org.apache.shardingsphere.mode.node.path.version.VersionNodePathGenerator;
2627
import org.apache.shardingsphere.mode.spi.repository.PersistRepository;
@@ -45,12 +46,12 @@ public final class PropertiesPersistService {
4546
*/
4647
public Properties load() {
4748
return loadActiveVersion()
48-
.map(optional -> YamlEngine.unmarshal(repository.query(new GlobalPropertiesNodePath().getVersion("").getVersionPath(optional)), Properties.class))
49+
.map(optional -> YamlEngine.unmarshal(repository.query(new NodePathGenerator(new GlobalPropertiesNodePath()).getVersion(null).getVersionPath(optional)), Properties.class))
4950
.orElse(new Properties());
5051
}
5152

5253
private Optional<Integer> loadActiveVersion() {
53-
String value = repository.query(new GlobalPropertiesNodePath().getVersion("").getActiveVersionPath());
54+
String value = repository.query(new NodePathGenerator(new GlobalPropertiesNodePath()).getVersion(null).getActiveVersionPath());
5455
return Strings.isNullOrEmpty(value) ? Optional.empty() : Optional.of(Integer.parseInt(value));
5556
}
5657

@@ -60,7 +61,7 @@ private Optional<Integer> loadActiveVersion() {
6061
* @param props properties
6162
*/
6263
public void persist(final Properties props) {
63-
VersionNodePathGenerator versionNodePathGenerator = new GlobalPropertiesNodePath().getVersion("");
64+
VersionNodePathGenerator versionNodePathGenerator = new NodePathGenerator(new GlobalPropertiesNodePath()).getVersion(null);
6465
metaDataVersionPersistService.persist(versionNodePathGenerator, YamlEngine.marshal(props));
6566
}
6667
}

mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/DatabaseMetaDataPersistService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
package org.apache.shardingsphere.mode.metadata.persist.metadata.service;
1919

2020
import lombok.RequiredArgsConstructor;
21+
import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
2122
import org.apache.shardingsphere.mode.node.path.metadata.DatabaseNodePath;
2223
import org.apache.shardingsphere.mode.spi.repository.PersistRepository;
2324

@@ -37,7 +38,7 @@ public final class DatabaseMetaDataPersistService {
3738
* @param databaseName to be added database name
3839
*/
3940
public void add(final String databaseName) {
40-
repository.persist(new DatabaseNodePath().getPath(databaseName), "");
41+
repository.persist(new NodePathGenerator(new DatabaseNodePath()).getPath(databaseName), "");
4142
}
4243

4344
/**
@@ -46,7 +47,7 @@ public void add(final String databaseName) {
4647
* @param databaseName to be dropped database name
4748
*/
4849
public void drop(final String databaseName) {
49-
repository.delete(new DatabaseNodePath().getPath(databaseName));
50+
repository.delete(new NodePathGenerator(new DatabaseNodePath()).getPath(databaseName));
5051
}
5152

5253
/**

mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/SchemaMetaDataPersistService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.apache.shardingsphere.infra.metadata.database.schema.manager.GenericSchemaManager;
2121
import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
2222
import org.apache.shardingsphere.mode.metadata.persist.version.MetaDataVersionPersistService;
23+
import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
2324
import org.apache.shardingsphere.mode.node.path.metadata.database.SchemaNodePath;
2425
import org.apache.shardingsphere.mode.node.path.metadata.database.TableNodePath;
2526
import org.apache.shardingsphere.mode.spi.repository.PersistRepository;
@@ -62,7 +63,7 @@ public void add(final String databaseName, final String schemaName) {
6263
* @param schemaName to be dropped schema name
6364
*/
6465
public void drop(final String databaseName, final String schemaName) {
65-
repository.delete(new SchemaNodePath(databaseName).getPath(schemaName));
66+
repository.delete(new NodePathGenerator(new SchemaNodePath(databaseName)).getPath(schemaName));
6667
}
6768

6869
/**

mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/TableMetaDataPersistService.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.apache.shardingsphere.infra.yaml.schema.pojo.YamlShardingSphereTable;
2424
import org.apache.shardingsphere.infra.yaml.schema.swapper.YamlTableSwapper;
2525
import org.apache.shardingsphere.mode.metadata.persist.version.MetaDataVersionPersistService;
26+
import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
2627
import org.apache.shardingsphere.mode.node.path.metadata.database.TableNodePath;
2728
import org.apache.shardingsphere.mode.node.path.version.VersionNodePathGenerator;
2829
import org.apache.shardingsphere.mode.spi.repository.PersistRepository;
@@ -63,7 +64,7 @@ public Collection<ShardingSphereTable> load(final String databaseName, final Str
6364
* @return loaded table
6465
*/
6566
public ShardingSphereTable load(final String databaseName, final String schemaName, final String tableName) {
66-
VersionNodePathGenerator versionNodePathGenerator = new TableNodePath(databaseName, schemaName).getVersion(tableName);
67+
VersionNodePathGenerator versionNodePathGenerator = new NodePathGenerator(new TableNodePath(databaseName, schemaName)).getVersion(tableName);
6768
int activeVersion = Integer.parseInt(repository.query(versionNodePathGenerator.getActiveVersionPath()));
6869
String tableContent = repository.query(versionNodePathGenerator.getVersionPath(activeVersion));
6970
return swapper.swapToObject(YamlEngine.unmarshal(tableContent, YamlShardingSphereTable.class));
@@ -79,7 +80,7 @@ public ShardingSphereTable load(final String databaseName, final String schemaNa
7980
public void persist(final String databaseName, final String schemaName, final Collection<ShardingSphereTable> tables) {
8081
for (ShardingSphereTable each : tables) {
8182
String tableName = each.getName().toLowerCase();
82-
VersionNodePathGenerator versionNodePathGenerator = new TableNodePath(databaseName, schemaName).getVersion(tableName);
83+
VersionNodePathGenerator versionNodePathGenerator = new NodePathGenerator(new TableNodePath(databaseName, schemaName)).getVersion(tableName);
8384
metaDataVersionPersistService.persist(versionNodePathGenerator, YamlEngine.marshal(swapper.swapToYamlConfiguration(each)));
8485
}
8586
}
@@ -92,7 +93,7 @@ public void persist(final String databaseName, final String schemaName, final Co
9293
* @param tableName to be dropped table name
9394
*/
9495
public void drop(final String databaseName, final String schemaName, final String tableName) {
95-
repository.delete(new TableNodePath(databaseName, schemaName).getPath(tableName.toLowerCase()));
96+
repository.delete(new NodePathGenerator(new TableNodePath(databaseName, schemaName)).getPath(tableName.toLowerCase()));
9697
}
9798

9899
/**

mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/ViewMetaDataPersistService.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.apache.shardingsphere.infra.yaml.schema.pojo.YamlShardingSphereView;
2424
import org.apache.shardingsphere.infra.yaml.schema.swapper.YamlViewSwapper;
2525
import org.apache.shardingsphere.mode.metadata.persist.version.MetaDataVersionPersistService;
26+
import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
2627
import org.apache.shardingsphere.mode.node.path.metadata.database.ViewNodePath;
2728
import org.apache.shardingsphere.mode.node.path.version.VersionNodePathGenerator;
2829
import org.apache.shardingsphere.mode.spi.repository.PersistRepository;
@@ -63,7 +64,7 @@ public Collection<ShardingSphereView> load(final String databaseName, final Stri
6364
* @return loaded view
6465
*/
6566
public ShardingSphereView load(final String databaseName, final String schemaName, final String viewName) {
66-
VersionNodePathGenerator versionNodePathGenerator = new ViewNodePath(databaseName, schemaName).getVersion(viewName);
67+
VersionNodePathGenerator versionNodePathGenerator = new NodePathGenerator(new ViewNodePath(databaseName, schemaName)).getVersion(viewName);
6768
int activeVersion = Integer.parseInt(repository.query(versionNodePathGenerator.getActiveVersionPath()));
6869
String view = repository.query(versionNodePathGenerator.getVersionPath(activeVersion));
6970
return swapper.swapToObject(YamlEngine.unmarshal(view, YamlShardingSphereView.class));
@@ -79,7 +80,7 @@ public ShardingSphereView load(final String databaseName, final String schemaNam
7980
public void persist(final String databaseName, final String schemaName, final Collection<ShardingSphereView> views) {
8081
for (ShardingSphereView each : views) {
8182
String viewName = each.getName().toLowerCase();
82-
VersionNodePathGenerator versionNodePathGenerator = new ViewNodePath(databaseName, schemaName).getVersion(viewName);
83+
VersionNodePathGenerator versionNodePathGenerator = new NodePathGenerator(new ViewNodePath(databaseName, schemaName)).getVersion(viewName);
8384
metaDataVersionPersistService.persist(versionNodePathGenerator, YamlEngine.marshal(swapper.swapToYamlConfiguration(each)));
8485
}
8586
}
@@ -92,6 +93,6 @@ public void persist(final String databaseName, final String schemaName, final Co
9293
* @param viewName to be dropped view name
9394
*/
9495
public void drop(final String databaseName, final String schemaName, final String viewName) {
95-
repository.delete(new ViewNodePath(databaseName, schemaName).getPath(viewName.toLowerCase()));
96+
repository.delete(new NodePathGenerator(new ViewNodePath(databaseName, schemaName)).getPath(viewName.toLowerCase()));
9697
}
9798
}

mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import org.apache.shardingsphere.infra.rule.attribute.datanode.MutableDataNodeRuleAttribute;
3939
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
4040
import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
41+
import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
4142
import org.apache.shardingsphere.mode.node.path.metadata.database.SchemaNodePath;
4243
import org.apache.shardingsphere.mode.spi.repository.PersistRepository;
4344
import org.apache.shardingsphere.test.fixture.jdbc.MockedDataSource;
@@ -146,7 +147,7 @@ void assertReloadSchema() throws SQLException {
146147
when(metaDataContexts.getMetaData().getDatabase("foo_db").getName()).thenReturn("foo_db");
147148
ShardingSphereDatabase database = mockDatabase();
148149
contextManager.reloadSchema(database, "foo_schema", "foo_ds");
149-
verify(contextManager.getPersistServiceFacade().getRepository()).delete(new SchemaNodePath("foo_db").getPath("foo_schema"));
150+
verify(contextManager.getPersistServiceFacade().getRepository()).delete(new NodePathGenerator(new SchemaNodePath("foo_db")).getPath("foo_schema"));
150151
}
151152

152153
@Test

mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/NodePath.java

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,24 +18,14 @@
1818
package org.apache.shardingsphere.mode.node.path;
1919

2020
/**
21-
* Node path generator.
22-
*
23-
* @param <T> type of node
21+
* Node path.
2422
*/
25-
public interface NodePath<T> {
23+
public interface NodePath {
2624

2725
/**
2826
* Get root path.
2927
*
3028
* @return root path
3129
*/
3230
String getRootPath();
33-
34-
/**
35-
* Get path.
36-
*
37-
* @param node node
38-
* @return path
39-
*/
40-
String getPath(T node);
4131
}

0 commit comments

Comments
 (0)