Skip to content

Commit d55f244

Browse files
authored
Refactor NodePath (#34698)
* Refactor NodePath * Refactor NodePath
1 parent fa91999 commit d55f244

16 files changed

+79
-43
lines changed

mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/DatabaseNodePath.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import org.apache.shardingsphere.mode.node.path.NodePath;
2121

2222
/**
23-
* Database node path generator.
23+
* Database node path.
2424
*/
2525
public final class DatabaseNodePath implements NodePath {
2626

mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/SchemaNodePath.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import lombok.RequiredArgsConstructor;
2121
import org.apache.shardingsphere.mode.node.path.NodePath;
2222
import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
23+
import org.apache.shardingsphere.mode.node.path.NodePathPattern;
2324
import org.apache.shardingsphere.mode.node.path.metadata.DatabaseNodePath;
2425

2526
/**
@@ -32,8 +33,14 @@ public final class SchemaNodePath implements NodePath {
3233

3334
private final String databaseName;
3435

36+
private final NodePathGenerator nodePathGenerator = new NodePathGenerator(new DatabaseNodePath());
37+
38+
public SchemaNodePath() {
39+
this(NodePathPattern.IDENTIFIER);
40+
}
41+
3542
@Override
3643
public String getRootPath() {
37-
return String.join("/", new NodePathGenerator(new DatabaseNodePath()).getPath(databaseName), SCHEMAS_NODE);
44+
return String.join("/", nodePathGenerator.getPath(databaseName), SCHEMAS_NODE);
3845
}
3946
}

mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/SchemaNodePathParser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public final class SchemaNodePathParser {
4141
*/
4242
public static Optional<String> findSchemaName(final String path, final boolean containsChildPath) {
4343
String endPattern = containsChildPath ? "?" : "$";
44-
Pattern pattern = Pattern.compile(new NodePathGenerator(new SchemaNodePath(NodePathPattern.IDENTIFIER)).getPath(NodePathPattern.IDENTIFIER) + endPattern, Pattern.CASE_INSENSITIVE);
44+
Pattern pattern = Pattern.compile(new NodePathGenerator(new SchemaNodePath()).getPath(NodePathPattern.IDENTIFIER) + endPattern, Pattern.CASE_INSENSITIVE);
4545
Matcher matcher = pattern.matcher(path);
4646
return matcher.find() ? Optional.of(matcher.group(2)) : Optional.empty();
4747
}

mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/TableNodePath.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import org.apache.shardingsphere.mode.node.path.NodePath;
2121
import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
22+
import org.apache.shardingsphere.mode.node.path.NodePathPattern;
2223

2324
/**
2425
* Table node path.
@@ -27,17 +28,21 @@ public final class TableNodePath implements NodePath {
2728

2829
private static final String TABLES_NODE = "tables";
2930

30-
private final SchemaNodePath schemaNodePath;
31-
3231
private final String schemaName;
3332

33+
private final NodePathGenerator nodePathGenerator;
34+
35+
public TableNodePath() {
36+
this(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER);
37+
}
38+
3439
public TableNodePath(final String databaseName, final String schemaName) {
35-
schemaNodePath = new SchemaNodePath(databaseName);
3640
this.schemaName = schemaName;
41+
nodePathGenerator = new NodePathGenerator(new SchemaNodePath(databaseName));
3742
}
3843

3944
@Override
4045
public String getRootPath() {
41-
return String.join("/", new NodePathGenerator(schemaNodePath).getPath(schemaName), TABLES_NODE);
46+
return String.join("/", nodePathGenerator.getPath(schemaName), TABLES_NODE);
4247
}
4348
}

mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/TableNodePathParser.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,9 @@
3333
@NoArgsConstructor(access = AccessLevel.PRIVATE)
3434
public final class TableNodePathParser {
3535

36-
private static final Pattern PATTERN = Pattern.compile(
37-
new NodePathGenerator(new TableNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER)).getPath(NodePathPattern.IDENTIFIER) + "$", Pattern.CASE_INSENSITIVE);
36+
private static final Pattern PATTERN = Pattern.compile(new NodePathGenerator(new TableNodePath()).getPath(NodePathPattern.IDENTIFIER) + "$", Pattern.CASE_INSENSITIVE);
3837

39-
private static final VersionNodePathParser VERSION_PARSER = new VersionNodePathParser(
40-
new NodePathGenerator(new TableNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER)).getPath(NodePathPattern.IDENTIFIER));
38+
private static final VersionNodePathParser VERSION_PARSER = new VersionNodePathParser(new NodePathGenerator(new TableNodePath()).getPath(NodePathPattern.IDENTIFIER));
4139

4240
/**
4341
* Find table name.

mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/ViewNodePath.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import org.apache.shardingsphere.mode.node.path.NodePath;
2121
import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
22+
import org.apache.shardingsphere.mode.node.path.NodePathPattern;
2223

2324
/**
2425
* View path.
@@ -27,17 +28,21 @@ public final class ViewNodePath implements NodePath {
2728

2829
private static final String VIEWS_NODE = "views";
2930

30-
private final SchemaNodePath schemaNodePath;
31-
3231
private final String schemaName;
3332

33+
private final NodePathGenerator nodePathGenerator;
34+
35+
public ViewNodePath() {
36+
this(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER);
37+
}
38+
3439
public ViewNodePath(final String databaseName, final String schemaName) {
35-
schemaNodePath = new SchemaNodePath(databaseName);
3640
this.schemaName = schemaName;
41+
nodePathGenerator = new NodePathGenerator(new SchemaNodePath(databaseName));
3742
}
3843

3944
@Override
4045
public String getRootPath() {
41-
return String.join("/", new NodePathGenerator(schemaNodePath).getPath(schemaName), VIEWS_NODE);
46+
return String.join("/", nodePathGenerator.getPath(schemaName), VIEWS_NODE);
4247
}
4348
}

mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/ViewNodePathParser.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,9 @@
3333
@NoArgsConstructor(access = AccessLevel.PRIVATE)
3434
public final class ViewNodePathParser {
3535

36-
private static final Pattern PATTERN = Pattern.compile(
37-
new NodePathGenerator(new ViewNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER)).getPath(NodePathPattern.IDENTIFIER) + "$", Pattern.CASE_INSENSITIVE);
36+
private static final Pattern PATTERN = Pattern.compile(new NodePathGenerator(new ViewNodePath()).getPath(NodePathPattern.IDENTIFIER) + "$", Pattern.CASE_INSENSITIVE);
3837

39-
private static final VersionNodePathParser VERSION_PARSER = new VersionNodePathParser(
40-
new NodePathGenerator(new ViewNodePath(NodePathPattern.IDENTIFIER, NodePathPattern.IDENTIFIER)).getPath(NodePathPattern.IDENTIFIER));
38+
private static final VersionNodePathParser VERSION_PARSER = new VersionNodePathParser(new NodePathGenerator(new ViewNodePath()).getPath(NodePathPattern.IDENTIFIER));
4139

4240
/**
4341
* Get view name.

mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/rule/DatabaseRuleItemNodePath.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,17 @@
2525
*/
2626
public final class DatabaseRuleItemNodePath implements NodePath {
2727

28-
private final DatabaseRuleNodePath databaseRuleNodePath;
29-
3028
private final String ruleType;
3129

30+
private final NodePathGenerator nodePathGenerator;
31+
3232
public DatabaseRuleItemNodePath(final String databaseName, final String ruleType) {
33-
databaseRuleNodePath = new DatabaseRuleNodePath(databaseName);
3433
this.ruleType = ruleType;
34+
nodePathGenerator = new NodePathGenerator(new DatabaseRuleNodePath(databaseName));
3535
}
3636

3737
@Override
3838
public String getRootPath() {
39-
return new NodePathGenerator(databaseRuleNodePath).getPath(ruleType);
39+
return nodePathGenerator.getPath(ruleType);
4040
}
4141
}

mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/rule/DatabaseRuleNodePath.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,11 @@
1919

2020
import lombok.RequiredArgsConstructor;
2121
import org.apache.shardingsphere.mode.node.path.NodePath;
22+
import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
2223
import org.apache.shardingsphere.mode.node.path.metadata.DatabaseNodePath;
2324

2425
/**
25-
* Database rule node path generator.
26+
* Database rule node path.
2627
*/
2728
@RequiredArgsConstructor
2829
public final class DatabaseRuleNodePath implements NodePath {
@@ -31,8 +32,10 @@ public final class DatabaseRuleNodePath implements NodePath {
3132

3233
private final String databaseName;
3334

35+
private final NodePathGenerator nodePathGenerator = new NodePathGenerator(new DatabaseNodePath());
36+
3437
@Override
3538
public String getRootPath() {
36-
return String.join("/", new DatabaseNodePath().getRootPath(), databaseName, RULE_NODE);
39+
return String.join("/", nodePathGenerator.getPath(databaseName), RULE_NODE);
3740
}
3841
}

mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/storage/DataSourceNodePath.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919

2020
import lombok.RequiredArgsConstructor;
2121
import org.apache.shardingsphere.mode.node.path.NodePath;
22+
import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
23+
import org.apache.shardingsphere.mode.node.path.NodePathPattern;
2224
import org.apache.shardingsphere.mode.node.path.metadata.DatabaseNodePath;
2325

2426
/**
@@ -31,8 +33,14 @@ public final class DataSourceNodePath implements NodePath {
3133

3234
private final String databaseName;
3335

36+
private final NodePathGenerator nodePathGenerator = new NodePathGenerator(new DatabaseNodePath());
37+
38+
public DataSourceNodePath() {
39+
this(NodePathPattern.IDENTIFIER);
40+
}
41+
3442
@Override
3543
public String getRootPath() {
36-
return String.join("/", new DatabaseNodePath().getRootPath(), databaseName, DATA_SOURCES_NODE);
44+
return String.join("/", nodePathGenerator.getPath(databaseName), DATA_SOURCES_NODE);
3745
}
3846
}

0 commit comments

Comments
 (0)