This is an automated email from the ASF dual-hosted git repository.
zhaojinchao 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 c97021014ec Merge RepositoryTupleSwapperEngine and
AutoRepositoryTupleSwapperEngine (#31122)
c97021014ec is described below
commit c97021014ec5779705e548b52a1390b30df9d4d7
Author: Liang Zhang <[email protected]>
AuthorDate: Sun May 5 22:22:20 2024 +0800
Merge RepositoryTupleSwapperEngine and AutoRepositoryTupleSwapperEngine
(#31122)
---
.../config/RepositoryTupleSwapperEngine.java | 83 ----------------------
.../database/rule/DatabaseRulePersistService.java | 9 ++-
.../config/global/GlobalRulePersistService.java | 5 +-
...gine.java => RepositoryTupleSwapperEngine.java} | 50 ++++++++++++-
.../test/it/yaml/RepositoryTupleSwapperIT.java | 8 +--
5 files changed, 58 insertions(+), 97 deletions(-)
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/RepositoryTupleSwapperEngine.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/RepositoryTupleSwapperEngine.java
deleted file mode 100644
index 79ba0dec2ea..00000000000
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/RepositoryTupleSwapperEngine.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.metadata.persist.service.config;
-
-import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
-import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader;
-import org.apache.shardingsphere.infra.util.yaml.datanode.RepositoryTuple;
-import
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
-import
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleEntity;
-import
org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlRuleConfigurationSwapperEngine;
-import org.apache.shardingsphere.mode.engine.AutoRepositoryTupleSwapperEngine;
-import org.apache.shardingsphere.mode.spi.RepositoryTupleSwapper;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.Objects;
-import java.util.Optional;
-
-/**
- * Repository tuple swapper engine.
- */
-public final class RepositoryTupleSwapperEngine {
-
- /**
- * Swap to rule configurations.
- *
- * @param repositoryTuples repository tuples
- * @return global rule configurations
- */
- @SuppressWarnings({"unchecked", "rawtypes"})
- public Collection<RuleConfiguration> swapToRuleConfigurations(final
Collection<RepositoryTuple> repositoryTuples) {
- if (repositoryTuples.isEmpty()) {
- return Collections.emptyList();
- }
- Collection<RuleConfiguration> result = new LinkedList<>();
- YamlRuleConfigurationSwapperEngine yamlSwapperEngine = new
YamlRuleConfigurationSwapperEngine();
- AutoRepositoryTupleSwapperEngine repositoryTupleSwapperEngine = new
AutoRepositoryTupleSwapperEngine();
- for (RepositoryTupleSwapper each :
OrderedSPILoader.getServices(RepositoryTupleSwapper.class)) {
- repositoryTupleSwapperEngine
- .swapToObject(repositoryTuples,
each.getTypeClass()).ifPresent(optional ->
result.add(yamlSwapperEngine.swapToRuleConfiguration((YamlRuleConfiguration)
optional)));
- }
- return result;
- }
-
- /**
- * Swap to rule configuration.
- *
- * @param ruleName rule name
- * @param repositoryTuples repository tuples
- * @return global rule configuration
- */
- @SuppressWarnings({"unchecked", "rawtypes"})
- public Optional<RuleConfiguration> swapToRuleConfiguration(final String
ruleName, final Collection<RepositoryTuple> repositoryTuples) {
- if (repositoryTuples.isEmpty()) {
- return Optional.empty();
- }
- YamlRuleConfigurationSwapperEngine yamlSwapperEngine = new
YamlRuleConfigurationSwapperEngine();
- AutoRepositoryTupleSwapperEngine repositoryTupleSwapperEngine = new
AutoRepositoryTupleSwapperEngine();
- for (RepositoryTupleSwapper each :
OrderedSPILoader.getServices(RepositoryTupleSwapper.class)) {
- if (ruleName.equals(Objects.requireNonNull((RepositoryTupleEntity)
each.getTypeClass().getAnnotation(RepositoryTupleEntity.class)).value())) {
- Optional<YamlRuleConfiguration> yamlRuleConfig =
repositoryTupleSwapperEngine.swapToObject(repositoryTuples,
each.getTypeClass());
- return
yamlRuleConfig.map(yamlSwapperEngine::swapToRuleConfiguration);
- }
- }
- return Optional.empty();
- }
-}
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/rule/DatabaseRulePersistService.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/rule/DatabaseRulePersistService.java
index 3f8aabf611c..f1e07cb5072 100644
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/rule/DatabaseRulePersistService.java
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/rule/DatabaseRulePersistService.java
@@ -26,9 +26,8 @@ import
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.Reposito
import
org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlRuleConfigurationSwapperEngine;
import
org.apache.shardingsphere.metadata.persist.node.metadata.DatabaseRuleMetaDataNode;
import
org.apache.shardingsphere.metadata.persist.service.config.RepositoryTuplePersistService;
-import
org.apache.shardingsphere.metadata.persist.service.config.RepositoryTupleSwapperEngine;
import
org.apache.shardingsphere.metadata.persist.service.config.database.DatabaseBasedPersistService;
-import org.apache.shardingsphere.mode.engine.AutoRepositoryTupleSwapperEngine;
+import org.apache.shardingsphere.mode.engine.RepositoryTupleSwapperEngine;
import org.apache.shardingsphere.mode.spi.PersistRepository;
import java.util.Collection;
@@ -55,7 +54,7 @@ public final class DatabaseRulePersistService implements
DatabaseBasedPersistSer
@Override
public void persist(final String databaseName, final
Collection<RuleConfiguration> configs) {
- AutoRepositoryTupleSwapperEngine repositoryTupleSwapperEngine = new
AutoRepositoryTupleSwapperEngine();
+ RepositoryTupleSwapperEngine repositoryTupleSwapperEngine = new
RepositoryTupleSwapperEngine();
for (YamlRuleConfiguration each : new
YamlRuleConfigurationSwapperEngine().swapToYamlRuleConfigurations(configs)) {
Collection<RepositoryTuple> repositoryTuples =
repositoryTupleSwapperEngine.swapToRepositoryTuples(each);
if (!repositoryTuples.isEmpty()) {
@@ -77,7 +76,7 @@ public final class DatabaseRulePersistService implements
DatabaseBasedPersistSer
@Override
public Collection<MetaDataVersion> persistConfigurations(final String
databaseName, final Collection<RuleConfiguration> configs) {
Collection<MetaDataVersion> result = new LinkedList<>();
- AutoRepositoryTupleSwapperEngine repositoryTupleSwapperEngine = new
AutoRepositoryTupleSwapperEngine();
+ RepositoryTupleSwapperEngine repositoryTupleSwapperEngine = new
RepositoryTupleSwapperEngine();
Collection<YamlRuleConfiguration> yamlRuleConfigs = new
YamlRuleConfigurationSwapperEngine().swapToYamlRuleConfigurations(configs);
for (YamlRuleConfiguration each : yamlRuleConfigs) {
Collection<RepositoryTuple> repositoryTuples =
repositoryTupleSwapperEngine.swapToRepositoryTuples(each);
@@ -105,7 +104,7 @@ public final class DatabaseRulePersistService implements
DatabaseBasedPersistSer
@Override
public Collection<MetaDataVersion> deleteConfigurations(final String
databaseName, final Collection<RuleConfiguration> configs) {
Collection<MetaDataVersion> result = new LinkedList<>();
- AutoRepositoryTupleSwapperEngine repositoryTupleSwapperEngine = new
AutoRepositoryTupleSwapperEngine();
+ RepositoryTupleSwapperEngine repositoryTupleSwapperEngine = new
RepositoryTupleSwapperEngine();
for (YamlRuleConfiguration each : new
YamlRuleConfigurationSwapperEngine().swapToYamlRuleConfigurations(configs)) {
Collection<RepositoryTuple> repositoryTuples =
repositoryTupleSwapperEngine.swapToRepositoryTuples(each);
if (repositoryTuples.isEmpty()) {
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/global/GlobalRulePersistService.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/global/GlobalRulePersistService.java
index 05934f4d728..f45b5308cb9 100644
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/global/GlobalRulePersistService.java
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/global/GlobalRulePersistService.java
@@ -25,9 +25,8 @@ import
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfigurati
import
org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlRuleConfigurationSwapperEngine;
import org.apache.shardingsphere.metadata.persist.node.GlobalNode;
import
org.apache.shardingsphere.metadata.persist.service.config.RepositoryTuplePersistService;
-import
org.apache.shardingsphere.metadata.persist.service.config.RepositoryTupleSwapperEngine;
import
org.apache.shardingsphere.metadata.persist.service.version.MetaDataVersionPersistService;
-import org.apache.shardingsphere.mode.engine.AutoRepositoryTupleSwapperEngine;
+import org.apache.shardingsphere.mode.engine.RepositoryTupleSwapperEngine;
import org.apache.shardingsphere.mode.spi.PersistRepository;
import java.util.Collection;
@@ -57,7 +56,7 @@ public final class GlobalRulePersistService implements
GlobalPersistService<Coll
@Override
public void persist(final Collection<RuleConfiguration> globalRuleConfigs)
{
Collection<MetaDataVersion> metaDataVersions = new LinkedList<>();
- AutoRepositoryTupleSwapperEngine repositoryTupleSwapperEngine = new
AutoRepositoryTupleSwapperEngine();
+ RepositoryTupleSwapperEngine repositoryTupleSwapperEngine = new
RepositoryTupleSwapperEngine();
for (YamlRuleConfiguration each : new
YamlRuleConfigurationSwapperEngine().swapToYamlRuleConfigurations(globalRuleConfigs))
{
Collection<RepositoryTuple> repositoryTuples =
repositoryTupleSwapperEngine.swapToRepositoryTuples(each);
if (!repositoryTuples.isEmpty()) {
diff --git
a/mode/api/src/main/java/org/apache/shardingsphere/mode/engine/AutoRepositoryTupleSwapperEngine.java
b/mode/api/src/main/java/org/apache/shardingsphere/mode/engine/RepositoryTupleSwapperEngine.java
similarity index 84%
rename from
mode/api/src/main/java/org/apache/shardingsphere/mode/engine/AutoRepositoryTupleSwapperEngine.java
rename to
mode/api/src/main/java/org/apache/shardingsphere/mode/engine/RepositoryTupleSwapperEngine.java
index e1b6f154b9a..41722242ddb 100644
---
a/mode/api/src/main/java/org/apache/shardingsphere/mode/engine/AutoRepositoryTupleSwapperEngine.java
+++
b/mode/api/src/main/java/org/apache/shardingsphere/mode/engine/RepositoryTupleSwapperEngine.java
@@ -19,6 +19,8 @@ package org.apache.shardingsphere.mode.engine;
import com.google.common.base.Strings;
import lombok.SneakyThrows;
+import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
+import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import org.apache.shardingsphere.infra.util.yaml.datanode.RepositoryTuple;
@@ -28,8 +30,10 @@ import
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.Reposito
import
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleField;
import
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleKeyNameGenerator;
import
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleType;
+import
org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlRuleConfigurationSwapperEngine;
import org.apache.shardingsphere.mode.path.GlobalNodePath;
import org.apache.shardingsphere.mode.path.rule.RuleNodePath;
+import org.apache.shardingsphere.mode.spi.RepositoryTupleSwapper;
import org.apache.shardingsphere.mode.spi.RuleNodePathProvider;
import java.lang.reflect.Field;
@@ -42,13 +46,14 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
/**
- * Auto repository tuple swapper engine.
+ * Repository tuple swapper engine.
*/
-public final class AutoRepositoryTupleSwapperEngine {
+public final class RepositoryTupleSwapperEngine {
/**
* Swap to repository tuples.
@@ -233,4 +238,45 @@ public final class AutoRepositoryTupleSwapperEngine {
field.set(yamlRuleConfig,
YamlEngine.unmarshal(repositoryTuple.getValue(), field.getType()));
}
}
+
+ /**
+ * Swap to rule configurations.
+ *
+ * @param repositoryTuples repository tuples
+ * @return global rule configurations
+ */
+ @SuppressWarnings({"unchecked", "rawtypes"})
+ public Collection<RuleConfiguration> swapToRuleConfigurations(final
Collection<RepositoryTuple> repositoryTuples) {
+ if (repositoryTuples.isEmpty()) {
+ return Collections.emptyList();
+ }
+ Collection<RuleConfiguration> result = new LinkedList<>();
+ YamlRuleConfigurationSwapperEngine yamlSwapperEngine = new
YamlRuleConfigurationSwapperEngine();
+ for (RepositoryTupleSwapper each :
OrderedSPILoader.getServices(RepositoryTupleSwapper.class)) {
+ swapToObject(repositoryTuples,
each.getTypeClass()).ifPresent(optional ->
result.add(yamlSwapperEngine.swapToRuleConfiguration((YamlRuleConfiguration)
optional)));
+ }
+ return result;
+ }
+
+ /**
+ * Swap to rule configuration.
+ *
+ * @param ruleTypeName rule type name
+ * @param repositoryTuples repository tuples
+ * @return global rule configuration
+ */
+ @SuppressWarnings({"unchecked", "rawtypes"})
+ public Optional<RuleConfiguration> swapToRuleConfiguration(final String
ruleTypeName, final Collection<RepositoryTuple> repositoryTuples) {
+ if (repositoryTuples.isEmpty()) {
+ return Optional.empty();
+ }
+ YamlRuleConfigurationSwapperEngine yamlSwapperEngine = new
YamlRuleConfigurationSwapperEngine();
+ for (RepositoryTupleSwapper each :
OrderedSPILoader.getServices(RepositoryTupleSwapper.class)) {
+ if
(ruleTypeName.equals(Objects.requireNonNull((RepositoryTupleEntity)
each.getTypeClass().getAnnotation(RepositoryTupleEntity.class)).value())) {
+ Optional<YamlRuleConfiguration> yamlRuleConfig =
swapToObject(repositoryTuples, each.getTypeClass());
+ return
yamlRuleConfig.map(yamlSwapperEngine::swapToRuleConfiguration);
+ }
+ }
+ return Optional.empty();
+ }
}
diff --git
a/test/it/yaml/src/main/java/org/apache/shardingsphere/test/it/yaml/RepositoryTupleSwapperIT.java
b/test/it/yaml/src/main/java/org/apache/shardingsphere/test/it/yaml/RepositoryTupleSwapperIT.java
index 843684516f9..a97554b4d39 100644
---
a/test/it/yaml/src/main/java/org/apache/shardingsphere/test/it/yaml/RepositoryTupleSwapperIT.java
+++
b/test/it/yaml/src/main/java/org/apache/shardingsphere/test/it/yaml/RepositoryTupleSwapperIT.java
@@ -22,7 +22,7 @@ import
org.apache.shardingsphere.infra.util.yaml.datanode.RepositoryTuple;
import org.apache.shardingsphere.infra.yaml.config.pojo.YamlRootConfiguration;
import
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
import
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleEntity;
-import org.apache.shardingsphere.mode.engine.AutoRepositoryTupleSwapperEngine;
+import org.apache.shardingsphere.mode.engine.RepositoryTupleSwapperEngine;
import org.apache.shardingsphere.mode.spi.RepositoryTupleSwapper;
import org.junit.jupiter.api.Test;
@@ -65,7 +65,7 @@ public abstract class RepositoryTupleSwapperIT {
@Test
void assertSwapToRepositoryTuples() throws IOException {
YamlRuleConfiguration yamlRuleConfig = loadYamlRuleConfiguration();
- assertRepositoryTuples(new ArrayList<>(new
AutoRepositoryTupleSwapperEngine().swapToRepositoryTuples(yamlRuleConfig)),
yamlRuleConfig);
+ assertRepositoryTuples(new ArrayList<>(new
RepositoryTupleSwapperEngine().swapToRepositoryTuples(yamlRuleConfig)),
yamlRuleConfig);
}
private YamlRuleConfiguration loadYamlRuleConfiguration() throws
IOException {
@@ -93,10 +93,10 @@ public abstract class RepositoryTupleSwapperIT {
@SuppressWarnings("unchecked")
private String getActualYamlContent() throws IOException {
YamlRuleConfiguration yamlRuleConfig = loadYamlRuleConfiguration();
- Collection<RepositoryTuple> repositoryTuples = new
AutoRepositoryTupleSwapperEngine().swapToRepositoryTuples(yamlRuleConfig).stream()
+ Collection<RepositoryTuple> repositoryTuples = new
RepositoryTupleSwapperEngine().swapToRepositoryTuples(yamlRuleConfig).stream()
.map(each -> new
RepositoryTuple(getRepositoryTupleKey(Objects.requireNonNull(yamlRuleConfig.getClass().getAnnotation(RepositoryTupleEntity.class)).value(),
each), each.getValue()))
.collect(Collectors.toList());
- AutoRepositoryTupleSwapperEngine repositoryTupleSwapperEngine = new
AutoRepositoryTupleSwapperEngine();
+ RepositoryTupleSwapperEngine repositoryTupleSwapperEngine = new
RepositoryTupleSwapperEngine();
Optional<YamlRuleConfiguration> actualYamlRuleConfig =
repositoryTupleSwapperEngine.swapToObject(repositoryTuples,
swapper.getTypeClass());
assertTrue(actualYamlRuleConfig.isPresent());
YamlRootConfiguration yamlRootConfig = new YamlRootConfiguration();