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 fab39d3adca Spilt YamlRuleRepositoryTupleSwapperEngine.swapToTuples as
GlobalRule and DatabaseRule (#34839)
fab39d3adca is described below
commit fab39d3adca967fc95152199013d353194a14e3e
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Mar 2 12:49:45 2025 +0800
Spilt YamlRuleRepositoryTupleSwapperEngine.swapToTuples as GlobalRule and
DatabaseRule (#34839)
* Spilt YamlRuleRepositoryTupleSwapperEngine.swapToTuples as GlobalRule and
DatabaseRule
* Spilt YamlRuleRepositoryTupleSwapperEngine.swapToTuples as GlobalRule and
DatabaseRule
* Spilt YamlRuleRepositoryTupleSwapperEngine.swapToTuples as GlobalRule and
DatabaseRule
---
.../database/DatabaseRulePersistService.java | 20 +++++---
.../config/global/GlobalRulePersistService.java | 13 ++---
.../YamlRuleRepositoryTupleSwapperEngine.java | 57 +++++++++++++---------
.../YamlRuleRepositoryTupleSwapperEngineTest.java | 23 ++++-----
.../YamlRuleRepositoryTupleSwapperEngineIT.java | 20 +++++---
5 files changed, 75 insertions(+), 58 deletions(-)
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 88f56363c93..c998fa69b33 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
@@ -48,9 +48,15 @@ public final class DatabaseRulePersistService {
private final VersionPersistService versionPersistService;
+ private final YamlRuleConfigurationSwapperEngine yamlSwapperEngine;
+
+ private final YamlRuleRepositoryTupleSwapperEngine tupleSwapperEngine;
+
public DatabaseRulePersistService(final PersistRepository repository) {
this.repository = repository;
versionPersistService = new VersionPersistService(repository);
+ yamlSwapperEngine = new YamlRuleConfigurationSwapperEngine();
+ tupleSwapperEngine = new YamlRuleRepositoryTupleSwapperEngine();
}
/**
@@ -65,8 +71,8 @@ public final class DatabaseRulePersistService {
}
private RuleConfiguration load(final String databaseName, final String
ruleType) {
- return new
YamlRuleConfigurationSwapperEngine().swapToRuleConfiguration(
- new
YamlRuleRepositoryTupleSwapperEngine(databaseName).swapToYamlDatabaseRuleConfiguration(ruleType,
load(databaseName, DatabaseRuleNodeGenerator.generate(ruleType))));
+ return yamlSwapperEngine.swapToRuleConfiguration(
+
tupleSwapperEngine.swapToYamlDatabaseRuleConfiguration(databaseName, ruleType,
load(databaseName, DatabaseRuleNodeGenerator.generate(ruleType))));
}
private Collection<RuleRepositoryTuple> load(final String databaseName,
final DatabaseRuleNode databaseRuleNode) {
@@ -100,9 +106,8 @@ public final class DatabaseRulePersistService {
*/
public Collection<MetaDataVersion> persist(final String databaseName,
final Collection<RuleConfiguration> configs) {
Collection<MetaDataVersion> result = new LinkedList<>();
- YamlRuleRepositoryTupleSwapperEngine tupleSwapperEngine = new
YamlRuleRepositoryTupleSwapperEngine(databaseName);
- for (YamlRuleConfiguration each : new
YamlRuleConfigurationSwapperEngine().swapToYamlRuleConfigurations(configs)) {
-
result.addAll(persistTuples(tupleSwapperEngine.swapToTuples(each)));
+ for (YamlRuleConfiguration each :
yamlSwapperEngine.swapToYamlRuleConfigurations(configs)) {
+
result.addAll(persistTuples(tupleSwapperEngine.swapToTuples(databaseName,
each)));
}
return result;
}
@@ -131,9 +136,8 @@ public final class DatabaseRulePersistService {
*/
public Collection<MetaDataVersion> delete(final String databaseName, final
Collection<RuleConfiguration> configs) {
Collection<MetaDataVersion> result = new LinkedList<>();
- YamlRuleRepositoryTupleSwapperEngine tupleSwapperEngine = new
YamlRuleRepositoryTupleSwapperEngine(databaseName);
- for (YamlRuleConfiguration each : new
YamlRuleConfigurationSwapperEngine().swapToYamlRuleConfigurations(configs)) {
- List<RuleRepositoryTuple> tuples = new
LinkedList<>(tupleSwapperEngine.swapToTuples(each));
+ for (YamlRuleConfiguration each :
yamlSwapperEngine.swapToYamlRuleConfigurations(configs)) {
+ List<RuleRepositoryTuple> tuples = new
LinkedList<>(tupleSwapperEngine.swapToTuples(databaseName, each));
if (tuples.isEmpty()) {
continue;
}
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 33a7653f662..91bab873288 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
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.mode.metadata.persist.config.global;
import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
+import
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlGlobalRuleConfiguration;
import
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
import
org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlRuleConfigurationSwapperEngine;
import
org.apache.shardingsphere.mode.metadata.persist.version.VersionPersistService;
@@ -40,15 +41,15 @@ public final class GlobalRulePersistService {
private final VersionPersistService versionPersistService;
- private final YamlRuleRepositoryTupleSwapperEngine tupleSwapperEngine;
-
private final YamlRuleConfigurationSwapperEngine yamlSwapperEngine;
+ private final YamlRuleRepositoryTupleSwapperEngine tupleSwapperEngine;
+
public GlobalRulePersistService(final PersistRepository repository, final
VersionPersistService versionPersistService) {
this.repository = repository;
this.versionPersistService = versionPersistService;
- tupleSwapperEngine = new YamlRuleRepositoryTupleSwapperEngine();
yamlSwapperEngine = new YamlRuleConfigurationSwapperEngine();
+ tupleSwapperEngine = new YamlRuleRepositoryTupleSwapperEngine();
}
/**
@@ -78,11 +79,11 @@ public final class GlobalRulePersistService {
*/
public void persist(final Collection<RuleConfiguration> globalRuleConfigs)
{
for (YamlRuleConfiguration each :
yamlSwapperEngine.swapToYamlRuleConfigurations(globalRuleConfigs)) {
- persistTuples(tupleSwapperEngine.swapToTuples(each));
+
persistTuple(tupleSwapperEngine.swapToTuple((YamlGlobalRuleConfiguration)
each));
}
}
- private void persistTuples(final Collection<RuleRepositoryTuple> tuples) {
- tuples.forEach(each -> versionPersistService.persist(new
VersionNodePath(each.getPath()), each.getContent()));
+ private void persistTuple(final RuleRepositoryTuple tuple) {
+ versionPersistService.persist(new VersionNodePath(tuple.getPath()),
tuple.getContent());
}
}
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/rule/tuple/YamlRuleRepositoryTupleSwapperEngine.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/rule/tuple/YamlRuleRepositoryTupleSwapperEngine.java
index bd85a17a747..5909ba3ebdf 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/rule/tuple/YamlRuleRepositoryTupleSwapperEngine.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/rule/tuple/YamlRuleRepositoryTupleSwapperEngine.java
@@ -17,11 +17,12 @@
package org.apache.shardingsphere.mode.node.rule.tuple;
+import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
-import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader;
import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
+import
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlGlobalRuleConfiguration;
import
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
import
org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlRuleConfigurationSwapper;
import
org.apache.shardingsphere.mode.node.path.engine.generator.NodePathGenerator;
@@ -50,35 +51,40 @@ import java.util.Optional;
/**
* YAML rule repository tuple swapper engine.
*/
-@RequiredArgsConstructor
public final class YamlRuleRepositoryTupleSwapperEngine {
- private final String databaseName;
-
- public YamlRuleRepositoryTupleSwapperEngine() {
- this(NodePathPattern.IDENTIFIER);
+ /**
+ * Swap to rule repository tuple.
+ *
+ * @param yamlGlobalRuleConfig global YAML rule configuration to be swapped
+ * @return rule repository tuple
+ */
+ public RuleRepositoryTuple swapToTuple(final YamlGlobalRuleConfiguration
yamlGlobalRuleConfig) {
+ RuleRepositoryTupleEntity entity =
yamlGlobalRuleConfig.getClass().getAnnotation(RuleRepositoryTupleEntity.class);
+ Preconditions.checkNotNull(entity);
+ Preconditions.checkArgument(entity.leaf());
+ return new RuleRepositoryTuple(NodePathGenerator.toPath(new
GlobalRuleNodePath(entity.value()), false),
YamlEngine.marshal(yamlGlobalRuleConfig));
}
/**
* Swap to rule repository tuples.
*
+ * @param databaseName database name
* @param yamlRuleConfig YAML rule configuration to be swapped
* @return rule repository tuples
*/
- public Collection<RuleRepositoryTuple> swapToTuples(final
YamlRuleConfiguration yamlRuleConfig) {
+ public Collection<RuleRepositoryTuple> swapToTuples(final String
databaseName, final YamlRuleConfiguration yamlRuleConfig) {
RuleRepositoryTupleEntity entity =
yamlRuleConfig.getClass().getAnnotation(RuleRepositoryTupleEntity.class);
if (null == entity) {
return Collections.emptyList();
}
+ Preconditions.checkArgument(!entity.leaf());
String ruleType = entity.value();
- if (entity.leaf()) {
- return Collections.singleton(new
RuleRepositoryTuple(NodePathGenerator.toPath(new GlobalRuleNodePath(ruleType),
false), YamlEngine.marshal(yamlRuleConfig)));
- }
Collection<RuleRepositoryTuple> result = new LinkedList<>();
for (Field each :
YamlRuleConfigurationFieldUtil.getFields(yamlRuleConfig.getClass())) {
boolean isAccessible = each.isAccessible();
each.setAccessible(true);
- result.addAll(swapToTuples(ruleType, yamlRuleConfig, each));
+ result.addAll(swapToTuples(databaseName, ruleType, yamlRuleConfig,
each));
each.setAccessible(isAccessible);
}
return result;
@@ -86,7 +92,7 @@ public final class YamlRuleRepositoryTupleSwapperEngine {
@SneakyThrows(ReflectiveOperationException.class)
@SuppressWarnings("rawtypes")
- private Collection<RuleRepositoryTuple> swapToTuples(final String
ruleType, final YamlRuleConfiguration yamlRuleConfig, final Field field) {
+ private Collection<RuleRepositoryTuple> swapToTuples(final String
databaseName, final String ruleType, final YamlRuleConfiguration
yamlRuleConfig, final Field field) {
Object fieldValue = field.get(yamlRuleConfig);
if (null == fieldValue) {
return Collections.emptyList();
@@ -149,18 +155,19 @@ public final class YamlRuleRepositoryTupleSwapperEngine {
/**
* Swap to YAML database rule configuration.
*
+ * @param databaseName database name
* @param ruleType rule type
* @param tuples rule repository tuples
* @return database rule configuration
* @throws IllegalArgumentException throw if rule configuration not found
*/
@SuppressWarnings("rawtypes")
- public YamlRuleConfiguration swapToYamlDatabaseRuleConfiguration(final
String ruleType, final Collection<RuleRepositoryTuple> tuples) {
+ public YamlRuleConfiguration swapToYamlDatabaseRuleConfiguration(final
String databaseName, final String ruleType, final
Collection<RuleRepositoryTuple> tuples) {
for (YamlRuleConfigurationSwapper each :
OrderedSPILoader.getServices(YamlRuleConfigurationSwapper.class)) {
Class<? extends YamlRuleConfiguration> yamlRuleConfigClass =
getYamlRuleConfigurationClass(each);
RuleRepositoryTupleEntity entity =
yamlRuleConfigClass.getAnnotation(RuleRepositoryTupleEntity.class);
if (null != entity && entity.value().equals(ruleType)) {
- return
swapToYamlDatabaseRuleConfiguration(yamlRuleConfigClass, tuples)
+ return swapToYamlDatabaseRuleConfiguration(databaseName,
yamlRuleConfigClass, tuples)
.orElseThrow(() -> new
IllegalArgumentException(String.format("Can not find rule configuration with
type: %s", ruleType)));
}
}
@@ -168,33 +175,35 @@ public final class YamlRuleRepositoryTupleSwapperEngine {
}
@SneakyThrows(ReflectiveOperationException.class)
- private Optional<YamlRuleConfiguration>
swapToYamlDatabaseRuleConfiguration(final Class<? extends
YamlRuleConfiguration> toBeSwappedType, final Collection<RuleRepositoryTuple>
tuples) {
+ private Optional<YamlRuleConfiguration>
swapToYamlDatabaseRuleConfiguration(final String databaseName,
+
final Class<? extends YamlRuleConfiguration> toBeSwappedType, final
Collection<RuleRepositoryTuple> tuples) {
Collection<Field> fields =
YamlRuleConfigurationFieldUtil.getFields(toBeSwappedType);
YamlRuleConfiguration yamlRuleConfig =
toBeSwappedType.getConstructor().newInstance();
DatabaseRuleNode databaseRuleNode =
DatabaseRuleNodeGenerator.generate(toBeSwappedType);
for (RuleRepositoryTuple each : tuples) {
if (!Strings.isNullOrEmpty(each.getContent())) {
- setFieldValue(yamlRuleConfig, fields,
databaseRuleNode.getRuleType(), each);
+ setFieldValue(databaseName, yamlRuleConfig, fields,
databaseRuleNode.getRuleType(), each);
}
}
return Optional.of(yamlRuleConfig);
}
- private void setFieldValue(final YamlRuleConfiguration yamlRuleConfig,
final Collection<Field> fields, final String ruleType, final
RuleRepositoryTuple tuple) {
+ private void setFieldValue(final String databaseName, final
YamlRuleConfiguration yamlRuleConfig, final Collection<Field> fields, final
String ruleType, final RuleRepositoryTuple tuple) {
for (Field each : fields) {
boolean isAccessible = each.isAccessible();
each.setAccessible(true);
- setFieldValue(yamlRuleConfig, each, ruleType, tuple);
+ setFieldValue(databaseName, yamlRuleConfig, each, ruleType, tuple);
each.setAccessible(isAccessible);
}
}
- private void setFieldValue(final YamlRuleConfiguration yamlRuleConfig,
final Field field, final String ruleType, final RuleRepositoryTuple tuple) {
+ private void setFieldValue(final String databaseName, final
YamlRuleConfiguration yamlRuleConfig,
+ final Field field, final String ruleType, final
RuleRepositoryTuple tuple) {
String itemType =
YamlRuleConfigurationFieldUtil.getTupleItemName(field);
if (isNamedItem(field,
field.getAnnotation(RuleRepositoryTupleKeyListNameGenerator.class))) {
- setNamedItemFieldValue(yamlRuleConfig, ruleType, tuple, itemType,
field);
+ setNamedItemFieldValue(databaseName, yamlRuleConfig, ruleType,
tuple, itemType, field);
} else {
- setUniqueItemFieldValue(yamlRuleConfig, ruleType, tuple, itemType,
field);
+ setUniqueItemFieldValue(databaseName, yamlRuleConfig, ruleType,
tuple, itemType, field);
}
}
@@ -204,7 +213,8 @@ public final class YamlRuleRepositoryTupleSwapperEngine {
@SneakyThrows(ReflectiveOperationException.class)
@SuppressWarnings({"unchecked", "rawtypes"})
- private void setNamedItemFieldValue(final YamlRuleConfiguration
yamlRuleConfig, final String ruleType, final RuleRepositoryTuple tuple, final
String itemType, final Field field) {
+ private void setNamedItemFieldValue(final String databaseName, final
YamlRuleConfiguration yamlRuleConfig,
+ final String ruleType, final
RuleRepositoryTuple tuple, final String itemType, final Field field) {
DatabaseRuleNodePath databaseRuleNodePath = new
DatabaseRuleNodePath(databaseName, ruleType, new DatabaseRuleItem(itemType,
NodePathPattern.QUALIFIED_IDENTIFIER));
Optional<String> itemValue = NodePathSearcher.find(tuple.getPath(),
new NodePathSearchCriteria(databaseRuleNodePath, false, true, 1));
if (!itemValue.isPresent()) {
@@ -228,7 +238,8 @@ public final class YamlRuleRepositoryTupleSwapperEngine {
}
@SneakyThrows(ReflectiveOperationException.class)
- private void setUniqueItemFieldValue(final YamlRuleConfiguration
yamlRuleConfig, final String ruleType, final RuleRepositoryTuple tuple, final
String itemType, final Field field) {
+ private void setUniqueItemFieldValue(final String databaseName, final
YamlRuleConfiguration yamlRuleConfig,
+ final String ruleType, final
RuleRepositoryTuple tuple, final String itemType, final Field field) {
DatabaseRuleNodePath databaseRuleNodePath = new
DatabaseRuleNodePath(databaseName, ruleType, new DatabaseRuleItem(itemType));
if (!NodePathSearcher.isMatchedPath(tuple.getPath(), new
NodePathSearchCriteria(databaseRuleNodePath, false, true, 1))) {
return;
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/rule/tuple/YamlRuleRepositoryTupleSwapperEngineTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/rule/tuple/YamlRuleRepositoryTupleSwapperEngineTest.java
index 1b118d97836..9ea88d2e7fb 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/rule/tuple/YamlRuleRepositoryTupleSwapperEngineTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/rule/tuple/YamlRuleRepositoryTupleSwapperEngineTest.java
@@ -26,7 +26,6 @@ import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collection;
import java.util.Collections;
import java.util.List;
@@ -38,22 +37,20 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
class YamlRuleRepositoryTupleSwapperEngineTest {
@Test
- void assertSwapToTuplesWithoutTupleEntityAnnotation() {
- assertTrue(new YamlRuleRepositoryTupleSwapperEngine().swapToTuples(new
NoneYamlRuleConfiguration()).isEmpty());
+ void assertSwapToTuple() {
+ RuleRepositoryTuple actual = new
YamlRuleRepositoryTupleSwapperEngine().swapToTuple(new
LeafYamlRuleConfiguration("foo"));
+ assertThat(actual.getPath(), is("/rules/leaf"));
+ assertThat(actual.getContent(), is("value: foo" +
System.lineSeparator()));
}
@Test
- void assertSwapToTuplesWithLeafYamlRuleConfiguration() {
- Collection<RuleRepositoryTuple> actual = new
YamlRuleRepositoryTupleSwapperEngine().swapToTuples(new
LeafYamlRuleConfiguration("foo"));
- assertThat(actual.size(), is(1));
- RuleRepositoryTuple actualTuple = actual.iterator().next();
- assertThat(actualTuple.getPath(), is("/rules/leaf"));
- assertThat(actualTuple.getContent(), is("value: foo" +
System.lineSeparator()));
+ void assertSwapToTuplesWithoutTupleEntityAnnotation() {
+ assertTrue(new
YamlRuleRepositoryTupleSwapperEngine().swapToTuples("foo_db", new
NoneYamlRuleConfiguration()).isEmpty());
}
@Test
void assertSwapToTuplesWithEmptyNodeYamlRuleConfiguration() {
- assertTrue(new YamlRuleRepositoryTupleSwapperEngine().swapToTuples(new
NodeYamlRuleConfiguration()).isEmpty());
+ assertTrue(new
YamlRuleRepositoryTupleSwapperEngine().swapToTuples("foo_db", new
NodeYamlRuleConfiguration()).isEmpty());
}
@Test
@@ -71,7 +68,7 @@ class YamlRuleRepositoryTupleSwapperEngineTest {
yamlRuleConfig.setLeaf(leaf);
yamlRuleConfig.setGens(Collections.singleton("value"));
yamlRuleConfig.setGen("single_gen");
- List<RuleRepositoryTuple> actual = new ArrayList<>(new
YamlRuleRepositoryTupleSwapperEngine("foo_db").swapToTuples(yamlRuleConfig));
+ List<RuleRepositoryTuple> actual = new ArrayList<>(new
YamlRuleRepositoryTupleSwapperEngine().swapToTuples("foo_db", yamlRuleConfig));
assertThat(actual.size(), is(10));
assertThat(actual.get(0).getPath(),
is("/metadata/foo_db/rules/node/map_value/k"));
assertThat(actual.get(0).getContent(), is("value: v" +
System.lineSeparator()));
@@ -97,14 +94,14 @@ class YamlRuleRepositoryTupleSwapperEngineTest {
@Test
void assertSwapToYamlRuleConfigurationWithEmptyNodeYamlRuleConfiguration()
{
- NodeYamlRuleConfiguration actual = (NodeYamlRuleConfiguration) new
YamlRuleRepositoryTupleSwapperEngine().swapToYamlDatabaseRuleConfiguration("node",
+ NodeYamlRuleConfiguration actual = (NodeYamlRuleConfiguration) new
YamlRuleRepositoryTupleSwapperEngine().swapToYamlDatabaseRuleConfiguration("foo_db",
"node",
Collections.singleton(new
RuleRepositoryTuple("/metadata/foo_db/rules/node/string_value", "")));
assertThat(actual.getStringValue(), is(""));
}
@Test
void assertSwapToYamlRuleConfigurationWithNodeYamlRuleConfiguration() {
- NodeYamlRuleConfiguration actual = (NodeYamlRuleConfiguration) new
YamlRuleRepositoryTupleSwapperEngine("foo_db").swapToYamlDatabaseRuleConfiguration("node",
Arrays.asList(
+ NodeYamlRuleConfiguration actual = (NodeYamlRuleConfiguration) new
YamlRuleRepositoryTupleSwapperEngine().swapToYamlDatabaseRuleConfiguration("foo_db",
"node", Arrays.asList(
new
RuleRepositoryTuple("/metadata/foo_db/rules/node/map_value/k", "v"),
new
RuleRepositoryTuple("/metadata/foo_db/rules/node/map_value/k:qualified",
"k:qualified"),
new
RuleRepositoryTuple("/metadata/foo_db/rules/node/collection_value", "- !LEAF" +
System.lineSeparator() + " value: foo"),
diff --git
a/test/it/yaml/src/main/java/org/apache/shardingsphere/test/it/yaml/YamlRuleRepositoryTupleSwapperEngineIT.java
b/test/it/yaml/src/main/java/org/apache/shardingsphere/test/it/yaml/YamlRuleRepositoryTupleSwapperEngineIT.java
index fc5c884e1d1..59f6dc57faa 100644
---
a/test/it/yaml/src/main/java/org/apache/shardingsphere/test/it/yaml/YamlRuleRepositoryTupleSwapperEngineIT.java
+++
b/test/it/yaml/src/main/java/org/apache/shardingsphere/test/it/yaml/YamlRuleRepositoryTupleSwapperEngineIT.java
@@ -20,6 +20,7 @@ package org.apache.shardingsphere.test.it.yaml;
import lombok.extern.slf4j.Slf4j;
import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import org.apache.shardingsphere.infra.yaml.config.pojo.YamlRootConfiguration;
+import
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlGlobalRuleConfiguration;
import
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
import org.apache.shardingsphere.mode.node.rule.tuple.RuleRepositoryTuple;
import
org.apache.shardingsphere.mode.node.rule.tuple.YamlRuleRepositoryTupleSwapperEngine;
@@ -32,11 +33,9 @@ import java.net.URL;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
-import java.util.Objects;
import java.util.stream.Collectors;
import static org.hamcrest.CoreMatchers.containsString;
@@ -51,17 +50,23 @@ public abstract class
YamlRuleRepositoryTupleSwapperEngineIT {
private final YamlRuleRepositoryTupleSwapperEngine engine;
+ private final String databaseName;
+
protected YamlRuleRepositoryTupleSwapperEngineIT(final String
yamlFileName) {
URL url =
Thread.currentThread().getContextClassLoader().getResource(yamlFileName);
assertNotNull(url);
yamlFile = new File(url.getFile());
- engine = new YamlRuleRepositoryTupleSwapperEngine("foo_db");
+ engine = new YamlRuleRepositoryTupleSwapperEngine();
+ databaseName = "foo_db";
}
@Test
void assertSwapToTuples() throws IOException {
YamlRuleConfiguration yamlRuleConfig = loadYamlRuleConfiguration();
- assertRepositoryTuples(new
ArrayList<>(engine.swapToTuples(yamlRuleConfig)), yamlRuleConfig);
+ List<RuleRepositoryTuple> tuples = yamlRuleConfig instanceof
YamlGlobalRuleConfiguration
+ ?
Collections.singletonList(engine.swapToTuple((YamlGlobalRuleConfiguration)
yamlRuleConfig))
+ : new ArrayList<>(engine.swapToTuples(databaseName,
yamlRuleConfig));
+ assertRepositoryTuples(tuples, yamlRuleConfig);
}
private YamlRuleConfiguration loadYamlRuleConfiguration() throws
IOException {
@@ -93,11 +98,10 @@ public abstract class
YamlRuleRepositoryTupleSwapperEngineIT {
private String getActualYamlContent() throws IOException {
YamlRuleConfiguration yamlRuleConfig = loadYamlRuleConfiguration();
RuleRepositoryTupleEntity entity =
yamlRuleConfig.getClass().getAnnotation(RuleRepositoryTupleEntity.class);
- String ruleType = Objects.requireNonNull(entity).value();
- Collection<RuleRepositoryTuple> tuples =
engine.swapToTuples(yamlRuleConfig);
+ String ruleType = entity.value();
YamlRuleConfiguration actualYamlRuleConfig = entity.leaf()
- ? engine.swapToYamlGlobalRuleConfiguration(ruleType,
tuples.iterator().next().getContent())
- : engine.swapToYamlDatabaseRuleConfiguration(ruleType, tuples);
+ ? engine.swapToYamlGlobalRuleConfiguration(ruleType,
engine.swapToTuple((YamlGlobalRuleConfiguration) yamlRuleConfig).getContent())
+ : engine.swapToYamlDatabaseRuleConfiguration(databaseName,
ruleType, engine.swapToTuples(databaseName, yamlRuleConfig));
YamlRootConfiguration yamlRootConfig = new YamlRootConfiguration();
yamlRootConfig.setRules(Collections.singletonList(actualYamlRuleConfig));
return YamlEngine.marshal(yamlRootConfig);