This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang 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 4f701607974 Merge RepositoryTupleType and RepositoryTupleEntity
(#31139)
4f701607974 is described below
commit 4f7016079749fa19d5d088e02f3f8b7995e861e1
Author: Liang Zhang <[email protected]>
AuthorDate: Tue May 7 16:43:20 2024 +0800
Merge RepositoryTupleType and RepositoryTupleEntity (#31139)
* Refactor RepositoryTupleEntity
* Merge RepositoryTupleType and RepositoryTupleEntity
* Merge RepositoryTupleType and RepositoryTupleEntity
---
.../config/YamlAuthorityRuleConfiguration.java | 4 +--
.../config/YamlGlobalClockRuleConfiguration.java | 4 +--
.../yaml/config/YamlLoggingRuleConfiguration.java | 6 ++--
.../config/pojo/YamlSingleRuleConfiguration.java | 2 +-
.../config/YamlSQLFederationRuleConfiguration.java | 4 +--
.../config/YamlSQLParserRuleConfiguration.java | 4 +--
.../config/YamlSQLTranslatorRuleConfiguration.java | 4 +--
.../yaml/config/YamlTrafficRuleConfiguration.java | 4 +--
.../config/YamlTransactionRuleConfiguration.java | 4 +--
.../mode/tuple/RepositoryTupleSwapperEngine.java | 31 +++++++++---------
.../tuple/annotation/RepositoryTupleEntity.java | 7 ++++
.../mode/tuple/annotation/RepositoryTupleType.java | 38 ----------------------
12 files changed, 32 insertions(+), 80 deletions(-)
diff --git
a/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/yaml/config/YamlAuthorityRuleConfiguration.java
b/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/yaml/config/YamlAuthorityRuleConfiguration.java
index 32c74bcb8c9..44c67c634ce 100644
---
a/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/yaml/config/YamlAuthorityRuleConfiguration.java
+++
b/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/yaml/config/YamlAuthorityRuleConfiguration.java
@@ -22,7 +22,6 @@ import lombok.Setter;
import org.apache.shardingsphere.authority.config.AuthorityRuleConfiguration;
import
org.apache.shardingsphere.infra.algorithm.core.yaml.YamlAlgorithmConfiguration;
import
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlGlobalRuleConfiguration;
-import org.apache.shardingsphere.mode.tuple.annotation.RepositoryTupleType;
import org.apache.shardingsphere.mode.tuple.annotation.RepositoryTupleEntity;
import java.util.Collection;
@@ -33,8 +32,7 @@ import java.util.Map;
/**
* Authority rule configuration for YAML.
*/
-@RepositoryTupleEntity("authority")
-@RepositoryTupleType("authority")
+@RepositoryTupleEntity(value = "authority", leaf = true)
@Getter
@Setter
public final class YamlAuthorityRuleConfiguration implements
YamlGlobalRuleConfiguration {
diff --git
a/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/yaml/config/YamlGlobalClockRuleConfiguration.java
b/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/yaml/config/YamlGlobalClockRuleConfiguration.java
index 2af56283189..4c640a45f24 100644
---
a/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/yaml/config/YamlGlobalClockRuleConfiguration.java
+++
b/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/yaml/config/YamlGlobalClockRuleConfiguration.java
@@ -21,7 +21,6 @@ import lombok.Getter;
import lombok.Setter;
import
org.apache.shardingsphere.globalclock.api.config.GlobalClockRuleConfiguration;
import
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlGlobalRuleConfiguration;
-import org.apache.shardingsphere.mode.tuple.annotation.RepositoryTupleType;
import org.apache.shardingsphere.mode.tuple.annotation.RepositoryTupleEntity;
import java.util.Properties;
@@ -29,8 +28,7 @@ import java.util.Properties;
/**
* Global clock rule configuration for YAML.
*/
-@RepositoryTupleEntity("global_clock")
-@RepositoryTupleType("global_clock")
+@RepositoryTupleEntity(value = "global_clock", leaf = true)
@Getter
@Setter
public final class YamlGlobalClockRuleConfiguration implements
YamlGlobalRuleConfiguration {
diff --git
a/kernel/logging/core/src/main/java/org/apache/shardingsphere/logging/yaml/config/YamlLoggingRuleConfiguration.java
b/kernel/logging/core/src/main/java/org/apache/shardingsphere/logging/yaml/config/YamlLoggingRuleConfiguration.java
index 090b8181ab2..e30dd2be85f 100644
---
a/kernel/logging/core/src/main/java/org/apache/shardingsphere/logging/yaml/config/YamlLoggingRuleConfiguration.java
+++
b/kernel/logging/core/src/main/java/org/apache/shardingsphere/logging/yaml/config/YamlLoggingRuleConfiguration.java
@@ -20,9 +20,8 @@ package org.apache.shardingsphere.logging.yaml.config;
import lombok.Getter;
import lombok.Setter;
import
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlGlobalRuleConfiguration;
-import org.apache.shardingsphere.mode.tuple.annotation.RepositoryTupleType;
-import org.apache.shardingsphere.mode.tuple.annotation.RepositoryTupleEntity;
import org.apache.shardingsphere.logging.config.LoggingRuleConfiguration;
+import org.apache.shardingsphere.mode.tuple.annotation.RepositoryTupleEntity;
import java.util.Collection;
import java.util.LinkedList;
@@ -30,8 +29,7 @@ import java.util.LinkedList;
/**
* Logging rule configuration for YAML.
*/
-@RepositoryTupleEntity("logging")
-@RepositoryTupleType("logging")
+@RepositoryTupleEntity(value = "logging", leaf = true)
@Getter
@Setter
public final class YamlLoggingRuleConfiguration implements
YamlGlobalRuleConfiguration {
diff --git
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/yaml/config/pojo/YamlSingleRuleConfiguration.java
b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/yaml/config/pojo/YamlSingleRuleConfiguration.java
index 96e765ea2a6..3ce2a9ab09a 100644
---
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/yaml/config/pojo/YamlSingleRuleConfiguration.java
+++
b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/yaml/config/pojo/YamlSingleRuleConfiguration.java
@@ -30,7 +30,7 @@ import java.util.LinkedList;
/**
* Single rule configuration for YAML.
*/
-@RepositoryTupleEntity("single")
+@RepositoryTupleEntity(value = "single")
@Getter
@Setter
public final class YamlSingleRuleConfiguration implements
YamlRuleConfiguration {
diff --git
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/yaml/config/YamlSQLFederationRuleConfiguration.java
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/yaml/config/YamlSQLFederationRuleConfiguration.java
index 479e2c13872..801e044cf44 100644
---
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/yaml/config/YamlSQLFederationRuleConfiguration.java
+++
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/yaml/config/YamlSQLFederationRuleConfiguration.java
@@ -20,15 +20,13 @@ package org.apache.shardingsphere.sqlfederation.yaml.config;
import lombok.Getter;
import lombok.Setter;
import
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlGlobalRuleConfiguration;
-import org.apache.shardingsphere.mode.tuple.annotation.RepositoryTupleType;
import org.apache.shardingsphere.mode.tuple.annotation.RepositoryTupleEntity;
import
org.apache.shardingsphere.sqlfederation.api.config.SQLFederationRuleConfiguration;
/**
* SQL federation rule configuration for YAML.
*/
-@RepositoryTupleEntity("sql_federation")
-@RepositoryTupleType("sql_federation")
+@RepositoryTupleEntity(value = "sql_federation", leaf = true)
@Getter
@Setter
public final class YamlSQLFederationRuleConfiguration implements
YamlGlobalRuleConfiguration {
diff --git
a/kernel/sql-parser/core/src/main/java/org/apache/shardingsphere/parser/yaml/config/YamlSQLParserRuleConfiguration.java
b/kernel/sql-parser/core/src/main/java/org/apache/shardingsphere/parser/yaml/config/YamlSQLParserRuleConfiguration.java
index 3ebd4df6dc3..c1db137ecaf 100644
---
a/kernel/sql-parser/core/src/main/java/org/apache/shardingsphere/parser/yaml/config/YamlSQLParserRuleConfiguration.java
+++
b/kernel/sql-parser/core/src/main/java/org/apache/shardingsphere/parser/yaml/config/YamlSQLParserRuleConfiguration.java
@@ -20,15 +20,13 @@ package org.apache.shardingsphere.parser.yaml.config;
import lombok.Getter;
import lombok.Setter;
import
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlGlobalRuleConfiguration;
-import org.apache.shardingsphere.mode.tuple.annotation.RepositoryTupleType;
import org.apache.shardingsphere.mode.tuple.annotation.RepositoryTupleEntity;
import org.apache.shardingsphere.parser.config.SQLParserRuleConfiguration;
/**
* SQL parser configuration for YAML.
*/
-@RepositoryTupleEntity("sql_parser")
-@RepositoryTupleType("sql_parser")
+@RepositoryTupleEntity(value = "sql_parser", leaf = true)
@Getter
@Setter
public final class YamlSQLParserRuleConfiguration implements
YamlGlobalRuleConfiguration {
diff --git
a/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/yaml/config/YamlSQLTranslatorRuleConfiguration.java
b/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/yaml/config/YamlSQLTranslatorRuleConfiguration.java
index b6d673fe511..7baef6cbd9f 100644
---
a/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/yaml/config/YamlSQLTranslatorRuleConfiguration.java
+++
b/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/yaml/config/YamlSQLTranslatorRuleConfiguration.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.sqltranslator.yaml.config;
import lombok.Getter;
import lombok.Setter;
import
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlGlobalRuleConfiguration;
-import org.apache.shardingsphere.mode.tuple.annotation.RepositoryTupleType;
import org.apache.shardingsphere.mode.tuple.annotation.RepositoryTupleEntity;
import
org.apache.shardingsphere.sqltranslator.api.config.SQLTranslatorRuleConfiguration;
@@ -29,8 +28,7 @@ import java.util.Properties;
/**
* SQL translator configuration for YAML.
*/
-@RepositoryTupleEntity("sql_translator")
-@RepositoryTupleType("sql_translator")
+@RepositoryTupleEntity(value = "sql_translator", leaf = true)
@Getter
@Setter
public final class YamlSQLTranslatorRuleConfiguration implements
YamlGlobalRuleConfiguration {
diff --git
a/kernel/traffic/core/src/main/java/org/apache/shardingsphere/traffic/yaml/config/YamlTrafficRuleConfiguration.java
b/kernel/traffic/core/src/main/java/org/apache/shardingsphere/traffic/yaml/config/YamlTrafficRuleConfiguration.java
index a55a57c89d4..d5552720d41 100644
---
a/kernel/traffic/core/src/main/java/org/apache/shardingsphere/traffic/yaml/config/YamlTrafficRuleConfiguration.java
+++
b/kernel/traffic/core/src/main/java/org/apache/shardingsphere/traffic/yaml/config/YamlTrafficRuleConfiguration.java
@@ -21,7 +21,6 @@ import lombok.Getter;
import lombok.Setter;
import
org.apache.shardingsphere.infra.algorithm.core.yaml.YamlAlgorithmConfiguration;
import
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlGlobalRuleConfiguration;
-import org.apache.shardingsphere.mode.tuple.annotation.RepositoryTupleType;
import org.apache.shardingsphere.mode.tuple.annotation.RepositoryTupleEntity;
import org.apache.shardingsphere.traffic.api.config.TrafficRuleConfiguration;
@@ -31,8 +30,7 @@ import java.util.Map;
/**
* Traffic rule configuration for YAML.
*/
-@RepositoryTupleEntity("traffic")
-@RepositoryTupleType("traffic")
+@RepositoryTupleEntity(value = "traffic", leaf = true)
@Getter
@Setter
public final class YamlTrafficRuleConfiguration implements
YamlGlobalRuleConfiguration {
diff --git
a/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/yaml/config/YamlTransactionRuleConfiguration.java
b/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/yaml/config/YamlTransactionRuleConfiguration.java
index 438d72565e4..71b873edc22 100644
---
a/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/yaml/config/YamlTransactionRuleConfiguration.java
+++
b/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/yaml/config/YamlTransactionRuleConfiguration.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.transaction.yaml.config;
import lombok.Getter;
import lombok.Setter;
import
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlGlobalRuleConfiguration;
-import org.apache.shardingsphere.mode.tuple.annotation.RepositoryTupleType;
import org.apache.shardingsphere.mode.tuple.annotation.RepositoryTupleEntity;
import
org.apache.shardingsphere.transaction.config.TransactionRuleConfiguration;
@@ -29,8 +28,7 @@ import java.util.Properties;
/**
* Transaction rule configuration for YAML.
*/
-@RepositoryTupleEntity("transaction")
-@RepositoryTupleType("transaction")
+@RepositoryTupleEntity(value = "transaction", leaf = true)
@Getter
@Setter
public final class YamlTransactionRuleConfiguration implements
YamlGlobalRuleConfiguration {
diff --git
a/mode/api/src/main/java/org/apache/shardingsphere/mode/tuple/RepositoryTupleSwapperEngine.java
b/mode/api/src/main/java/org/apache/shardingsphere/mode/tuple/RepositoryTupleSwapperEngine.java
index 07a37a93018..07a5b4aab9a 100644
---
a/mode/api/src/main/java/org/apache/shardingsphere/mode/tuple/RepositoryTupleSwapperEngine.java
+++
b/mode/api/src/main/java/org/apache/shardingsphere/mode/tuple/RepositoryTupleSwapperEngine.java
@@ -27,15 +27,14 @@ import
org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
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.mode.tuple.annotation.RepositoryTupleEntity;
-import org.apache.shardingsphere.mode.tuple.annotation.RepositoryTupleField;
-import
org.apache.shardingsphere.mode.tuple.annotation.RepositoryTupleKeyListNameGenerator;
-import org.apache.shardingsphere.mode.tuple.annotation.RepositoryTupleType;
import
org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlRuleConfigurationSwapper;
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.RuleNodePathProvider;
+import org.apache.shardingsphere.mode.tuple.annotation.RepositoryTupleEntity;
+import org.apache.shardingsphere.mode.tuple.annotation.RepositoryTupleField;
+import
org.apache.shardingsphere.mode.tuple.annotation.RepositoryTupleKeyListNameGenerator;
import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
@@ -63,12 +62,12 @@ public final class RepositoryTupleSwapperEngine {
* @return repository tuples
*/
public Collection<RepositoryTuple> swapToRepositoryTuples(final
YamlRuleConfiguration yamlRuleConfig) {
- if (null ==
yamlRuleConfig.getClass().getAnnotation(RepositoryTupleEntity.class)) {
+ RepositoryTupleEntity tupleEntity =
yamlRuleConfig.getClass().getAnnotation(RepositoryTupleEntity.class);
+ if (null == tupleEntity) {
return Collections.emptyList();
}
- RepositoryTupleType tupleType =
yamlRuleConfig.getClass().getAnnotation(RepositoryTupleType.class);
- if (null != tupleType) {
- return Collections.singleton(new
RepositoryTuple(tupleType.value(), YamlEngine.marshal(yamlRuleConfig)));
+ if (tupleEntity.leaf()) {
+ return Collections.singleton(new
RepositoryTuple(tupleEntity.value(), YamlEngine.marshal(yamlRuleConfig)));
}
Collection<RepositoryTuple> result = new LinkedList<>();
RuleNodePath ruleNodePath =
TypedSPILoader.getService(RuleNodePathProvider.class,
yamlRuleConfig.getRuleConfigurationType()).getRuleNodePath();
@@ -140,21 +139,21 @@ public final class RepositoryTupleSwapperEngine {
* @return swapped YAML rule configurations
*/
public Optional<YamlRuleConfiguration> swapToYamlRuleConfiguration(final
Collection<RepositoryTuple> repositoryTuples, final Class<? extends
YamlRuleConfiguration> toBeSwappedType) {
- if (null ==
toBeSwappedType.getAnnotation(RepositoryTupleEntity.class)) {
+ RepositoryTupleEntity tupleEntity =
toBeSwappedType.getAnnotation(RepositoryTupleEntity.class);
+ if (null == tupleEntity) {
return Optional.empty();
}
- RepositoryTupleType tupleType =
toBeSwappedType.getAnnotation(RepositoryTupleType.class);
- return null == tupleType
- ? swapToYamlRuleConfiguration(repositoryTuples,
toBeSwappedType, getFields(toBeSwappedType))
- : swapToYamlRuleConfiguration(repositoryTuples,
toBeSwappedType, tupleType);
+ return tupleEntity.leaf()
+ ? swapToYamlRuleConfiguration(repositoryTuples,
toBeSwappedType, tupleEntity)
+ : swapToYamlRuleConfiguration(repositoryTuples,
toBeSwappedType, getFields(toBeSwappedType));
}
@SneakyThrows(ReflectiveOperationException.class)
private Optional<YamlRuleConfiguration> swapToYamlRuleConfiguration(final
Collection<RepositoryTuple> repositoryTuples,
- final
Class<? extends YamlRuleConfiguration> toBeSwappedType, final
RepositoryTupleType tupleType) {
+ final
Class<? extends YamlRuleConfiguration> toBeSwappedType, final
RepositoryTupleEntity tupleEntity) {
if
(YamlGlobalRuleConfiguration.class.isAssignableFrom(toBeSwappedType)) {
for (RepositoryTuple each : repositoryTuples) {
- if (GlobalNodePath.getVersion(tupleType.value(),
each.getKey()).isPresent()) {
+ if (GlobalNodePath.getVersion(tupleEntity.value(),
each.getKey()).isPresent()) {
return Optional.of(YamlEngine.unmarshal(each.getValue(),
toBeSwappedType));
}
}
@@ -163,7 +162,7 @@ public final class RepositoryTupleSwapperEngine {
YamlRuleConfiguration yamlRuleConfig =
toBeSwappedType.getConstructor().newInstance();
RuleNodePath ruleNodePath =
TypedSPILoader.getService(RuleNodePathProvider.class,
yamlRuleConfig.getRuleConfigurationType()).getRuleNodePath();
for (RepositoryTuple each : repositoryTuples.stream().filter(each ->
ruleNodePath.getRoot().isValidatedPath(each.getKey())).collect(Collectors.toList()))
{
- if
(ruleNodePath.getUniqueItem(tupleType.value()).isValidatedPath(each.getKey())) {
+ if
(ruleNodePath.getUniqueItem(tupleEntity.value()).isValidatedPath(each.getKey()))
{
return Optional.of(YamlEngine.unmarshal(each.getValue(),
toBeSwappedType));
}
}
diff --git
a/mode/api/src/main/java/org/apache/shardingsphere/mode/tuple/annotation/RepositoryTupleEntity.java
b/mode/api/src/main/java/org/apache/shardingsphere/mode/tuple/annotation/RepositoryTupleEntity.java
index c275ed24ffe..e3eb959818b 100644
---
a/mode/api/src/main/java/org/apache/shardingsphere/mode/tuple/annotation/RepositoryTupleEntity.java
+++
b/mode/api/src/main/java/org/apache/shardingsphere/mode/tuple/annotation/RepositoryTupleEntity.java
@@ -35,4 +35,11 @@ public @interface RepositoryTupleEntity {
* @return rule type name
*/
String value();
+
+ /**
+ * Whether leaf node.
+ *
+ * @return is leaf node or not
+ */
+ boolean leaf() default false;
}
diff --git
a/mode/api/src/main/java/org/apache/shardingsphere/mode/tuple/annotation/RepositoryTupleType.java
b/mode/api/src/main/java/org/apache/shardingsphere/mode/tuple/annotation/RepositoryTupleType.java
deleted file mode 100644
index 3f43efae578..00000000000
---
a/mode/api/src/main/java/org/apache/shardingsphere/mode/tuple/annotation/RepositoryTupleType.java
+++ /dev/null
@@ -1,38 +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.mode.tuple.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Repository tuple type.
- */
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface RepositoryTupleType {
-
- /**
- * Get persist path name.
- *
- * @return persist path name
- */
- String value();
-}