This is an automated email from the ASF dual-hosted git repository.

jianglongtao 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 1926b4d38ea Remove the exclamation mark in the proxy's global rule 
configuration #22329 (#22457)
1926b4d38ea is described below

commit 1926b4d38ea96da38620c3329db9d575b69a447a
Author: jiangML <1060319...@qq.com>
AuthorDate: Tue Nov 29 11:36:25 2022 +0800

    Remove the exclamation mark in the proxy's global rule configuration #22329 
(#22457)
    
    * Refactor: remove the exclamation mark in the proxy's global rule 
configuration
    
    * update doc
    
    * optimize code
    
    * add final for class
    
    * update yaml of test
    
    * optimize code
    
    * restore yaml about jdbc test
    
    * remove todo
---
 .../shardingsphere-proxy/yaml-config/rules.cn.md   | 20 ++++++++++++++++
 .../shardingsphere-proxy/yaml-config/rules.en.md   | 20 ++++++++++++++++
 .../src/main/resources/server/server.yaml          | 12 +++++-----
 .../pojo/rule/YamlGlobalRuleConfiguration.java     | 22 +++--------------
 .../yaml/config/YamlAuthorityConfiguration.java    |  4 ++--
 .../config/YamlAuthorityRuleConfiguration.java     |  4 ++--
 .../config/YamlSQLParserRuleConfiguration.java     |  4 ++--
 .../config/YamlSQLTranslatorRuleConfiguration.java |  4 ++--
 .../yaml/config/YamlTrafficRuleConfiguration.java  |  4 ++--
 .../config/YamlTransactionRuleConfiguration.java   |  4 ++--
 .../backend/config/ProxyConfigurationLoader.java   | 28 +++++++++++++++-------
 .../config/yaml/YamlProxyServerConfiguration.java  | 14 ++++++++++-
 .../bootstrap/src/main/resources/conf/server.yaml  |  8 +++----
 13 files changed, 98 insertions(+), 50 deletions(-)

diff --git 
a/docs/document/content/user-manual/shardingsphere-proxy/yaml-config/rules.cn.md
 
b/docs/document/content/user-manual/shardingsphere-proxy/yaml-config/rules.cn.md
index cacf3d7446b..2649bce2d01 100644
--- 
a/docs/document/content/user-manual/shardingsphere-proxy/yaml-config/rules.cn.md
+++ 
b/docs/document/content/user-manual/shardingsphere-proxy/yaml-config/rules.cn.md
@@ -16,5 +16,25 @@ ShardingSphere-Proxy 的规则配置与 ShardingSphere-JDBC 一致,具体规
 与 ShardingSphere-JDBC 不同的是,以下规则需要配置在 ShardingSphere-Proxy 的 `server.yaml` 中:
 
 * [SQL 解析](/cn/user-manual/shardingsphere-jdbc/yaml-config/rules/sql-parser/)
+```yaml
+sqlParser:
+  sqlCommentParseEnabled: true
+  sqlStatementCache:
+    initialCapacity: 2000
+    maximumSize: 65535
+  parseTreeCache:
+    initialCapacity: 128
+    maximumSize: 1024
+```
 * [分布式事务](/cn/user-manual/shardingsphere-jdbc/yaml-config/rules/transaction/)
+```yaml
+transaction:
+  defaultType: XA
+  providerType: Atomikos
+```
 * [SQL 
翻译](/cn/user-manual/shardingsphere-jdbc/yaml-config/rules/sql-translator/)
+```yaml
+sqlTranslator:
+  type:
+  useOriginalSQLWhenTranslatingFailed:
+```
diff --git 
a/docs/document/content/user-manual/shardingsphere-proxy/yaml-config/rules.en.md
 
b/docs/document/content/user-manual/shardingsphere-proxy/yaml-config/rules.en.md
index 4caf75453ec..a1926262a52 100644
--- 
a/docs/document/content/user-manual/shardingsphere-proxy/yaml-config/rules.en.md
+++ 
b/docs/document/content/user-manual/shardingsphere-proxy/yaml-config/rules.en.md
@@ -17,5 +17,25 @@ For details, please refer to [ShardingSphere-JDBC Rules 
Configuration](/en/user-
 Unlike ShardingSphere-JDBC, the following rules need to be configured in 
`server.yaml` of ShardingSphere-Proxy:
 
 * [SQL 
Parsing](/en/user-manual/shardingsphere-jdbc/yaml-config/rules/sql-parser/)
+```yaml
+sqlParser:
+  sqlCommentParseEnabled: true
+  sqlStatementCache:
+    initialCapacity: 2000
+    maximumSize: 65535
+  parseTreeCache:
+    initialCapacity: 128
+    maximumSize: 1024
+```
 * [Distributed 
Operations](/en/user-manual/shardingsphere-jdbc/yaml-config/rules/transaction/)
+```yaml
+transaction:
+  defaultType: XA
+  providerType: Atomikos
+```
 * [SQL 
Translator](/cn/user-manual/shardingsphere-jdbc/yaml-config/rules/sql-translator/)
+```yaml
+sqlTranslator:
+  type:
+  useOriginalSQLWhenTranslatingFailed:
+```
diff --git 
a/examples/shardingsphere-proxy-example/shardingsphere-proxy-distsql-example/src/main/resources/server/server.yaml
 
b/examples/shardingsphere-proxy-example/shardingsphere-proxy-distsql-example/src/main/resources/server/server.yaml
index f216f9a729e..addc5cbda5e 100644
--- 
a/examples/shardingsphere-proxy-example/shardingsphere-proxy-distsql-example/src/main/resources/server/server.yaml
+++ 
b/examples/shardingsphere-proxy-example/shardingsphere-proxy-distsql-example/src/main/resources/server/server.yaml
@@ -43,12 +43,12 @@ authority:
   privilege:
     type: ALL_PERMITTED
 
-rules:
-  - !TRANSACTION
-    defaultType: XA
-    providerType: Atomikos
-  - !SQL_PARSER
-    sqlCommentParseEnabled: true
+transaction:
+  defaultType: XA
+  providerType: Atomikos
+
+sqlParser:
+  sqlCommentParseEnabled: true
 
 props:
   max-connections-size-per-query: 1
diff --git 
a/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/yaml/config/YamlSQLTranslatorRuleConfiguration.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/yaml/config/pojo/rule/YamlGlobalRuleConfiguration.java
similarity index 54%
copy from 
kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/yaml/config/YamlSQLTranslatorRuleConfiguration.java
copy to 
infra/common/src/main/java/org/apache/shardingsphere/infra/yaml/config/pojo/rule/YamlGlobalRuleConfiguration.java
index 878c6892647..8a4c91fa07f 100644
--- 
a/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/yaml/config/YamlSQLTranslatorRuleConfiguration.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/yaml/config/pojo/rule/YamlGlobalRuleConfiguration.java
@@ -15,26 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sqltranslator.yaml.config;
-
-import lombok.Getter;
-import lombok.Setter;
-import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
-import 
org.apache.shardingsphere.sqltranslator.api.config.SQLTranslatorRuleConfiguration;
+package org.apache.shardingsphere.infra.yaml.config.pojo.rule;
 
 /**
- * SQL translator configuration for YAML.
+ * YAML global rule configuration.
  */
-@Getter
-@Setter
-public final class YamlSQLTranslatorRuleConfiguration implements 
YamlRuleConfiguration {
-    
-    private String type;
-    
-    private boolean useOriginalSQLWhenTranslatingFailed = true;
-    
-    @Override
-    public Class<SQLTranslatorRuleConfiguration> getRuleConfigurationType() {
-        return SQLTranslatorRuleConfiguration.class;
-    }
+public interface YamlGlobalRuleConfiguration extends YamlRuleConfiguration {
 }
diff --git 
a/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/yaml/config/YamlAuthorityConfiguration.java
 
b/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/yaml/config/YamlAuthorityConfiguration.java
index 52c6e8377e7..cdd5005953b 100644
--- 
a/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/yaml/config/YamlAuthorityConfiguration.java
+++ 
b/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/yaml/config/YamlAuthorityConfiguration.java
@@ -51,9 +51,9 @@ public final class YamlAuthorityConfiguration implements 
YamlRuleConfiguration {
     }
     
     /**
-     * Convert to yaml authority rule configuration.
+     * Convert to YAML authority rule configuration.
      *
-     * @return yaml authority rule configuration
+     * @return YAML authority rule configuration
      */
     public YamlAuthorityRuleConfiguration 
convertToYamlAuthorityRuleConfiguration() {
         YamlAuthorityRuleConfiguration result = new 
YamlAuthorityRuleConfiguration();
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 b7384cd8ef6..4bea53292c0 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
@@ -20,8 +20,8 @@ package org.apache.shardingsphere.authority.yaml.config;
 import lombok.Getter;
 import lombok.Setter;
 import org.apache.shardingsphere.authority.config.AuthorityRuleConfiguration;
-import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.algorithm.YamlAlgorithmConfiguration;
+import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlGlobalRuleConfiguration;
 
 import java.util.Collection;
 import java.util.LinkedList;
@@ -31,7 +31,7 @@ import java.util.LinkedList;
  */
 @Getter
 @Setter
-public final class YamlAuthorityRuleConfiguration implements 
YamlRuleConfiguration {
+public final class YamlAuthorityRuleConfiguration implements 
YamlGlobalRuleConfiguration {
     
     private Collection<String> users = new LinkedList<>();
     
diff --git 
a/kernel/parser/core/src/main/java/org/apache/shardingsphere/parser/yaml/config/YamlSQLParserRuleConfiguration.java
 
b/kernel/parser/core/src/main/java/org/apache/shardingsphere/parser/yaml/config/YamlSQLParserRuleConfiguration.java
index c336d347b90..fef2680f186 100644
--- 
a/kernel/parser/core/src/main/java/org/apache/shardingsphere/parser/yaml/config/YamlSQLParserRuleConfiguration.java
+++ 
b/kernel/parser/core/src/main/java/org/apache/shardingsphere/parser/yaml/config/YamlSQLParserRuleConfiguration.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.parser.yaml.config;
 
 import lombok.Getter;
 import lombok.Setter;
-import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
+import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlGlobalRuleConfiguration;
 import org.apache.shardingsphere.parser.config.SQLParserRuleConfiguration;
 
 /**
@@ -27,7 +27,7 @@ import 
org.apache.shardingsphere.parser.config.SQLParserRuleConfiguration;
  */
 @Getter
 @Setter
-public final class YamlSQLParserRuleConfiguration implements 
YamlRuleConfiguration {
+public final class YamlSQLParserRuleConfiguration implements 
YamlGlobalRuleConfiguration {
     
     private boolean sqlCommentParseEnabled;
     
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 878c6892647..f9c4388e50a 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
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.sqltranslator.yaml.config;
 
 import lombok.Getter;
 import lombok.Setter;
-import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
+import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlGlobalRuleConfiguration;
 import 
org.apache.shardingsphere.sqltranslator.api.config.SQLTranslatorRuleConfiguration;
 
 /**
@@ -27,7 +27,7 @@ import 
org.apache.shardingsphere.sqltranslator.api.config.SQLTranslatorRuleConfi
  */
 @Getter
 @Setter
-public final class YamlSQLTranslatorRuleConfiguration implements 
YamlRuleConfiguration {
+public final class YamlSQLTranslatorRuleConfiguration implements 
YamlGlobalRuleConfiguration {
     
     private String type;
     
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 702de3e0604..8a717c98151 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
@@ -19,8 +19,8 @@ package org.apache.shardingsphere.traffic.yaml.config;
 
 import lombok.Getter;
 import lombok.Setter;
-import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.algorithm.YamlAlgorithmConfiguration;
+import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlGlobalRuleConfiguration;
 import org.apache.shardingsphere.traffic.api.config.TrafficRuleConfiguration;
 
 import java.util.LinkedHashMap;
@@ -31,7 +31,7 @@ import java.util.Map;
  */
 @Getter
 @Setter
-public final class YamlTrafficRuleConfiguration implements 
YamlRuleConfiguration {
+public final class YamlTrafficRuleConfiguration implements 
YamlGlobalRuleConfiguration {
     
     private Map<String, YamlTrafficStrategyConfiguration> trafficStrategies = 
new LinkedHashMap<>();
     
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 f468cd4058c..5c665ef1d52 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
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.transaction.yaml.config;
 
 import lombok.Getter;
 import lombok.Setter;
-import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
+import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlGlobalRuleConfiguration;
 import 
org.apache.shardingsphere.transaction.config.TransactionRuleConfiguration;
 
 import java.util.Properties;
@@ -29,7 +29,7 @@ import java.util.Properties;
  */
 @Getter
 @Setter
-public final class YamlTransactionRuleConfiguration implements 
YamlRuleConfiguration {
+public final class YamlTransactionRuleConfiguration implements 
YamlGlobalRuleConfiguration {
     
     private String defaultType;
     
diff --git 
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/config/ProxyConfigurationLoader.java
 
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/config/ProxyConfigurationLoader.java
index 579d912eb4e..0ea805d8b9e 100644
--- 
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/config/ProxyConfigurationLoader.java
+++ 
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/config/ProxyConfigurationLoader.java
@@ -21,9 +21,9 @@ import com.google.common.base.Preconditions;
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import lombok.SneakyThrows;
-import 
org.apache.shardingsphere.authority.yaml.config.YamlAuthorityRuleConfiguration;
 import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
 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.infra.yaml.config.swapper.rule.YamlRuleConfigurationSwapperFactory;
@@ -77,15 +77,27 @@ public final class ProxyConfigurationLoader {
     
     private static YamlProxyServerConfiguration loadServerConfiguration(final 
File yamlFile) throws IOException {
         YamlProxyServerConfiguration result = YamlEngine.unmarshal(yamlFile, 
YamlProxyServerConfiguration.class);
-        if (null == result) {
-            return new YamlProxyServerConfiguration();
+        return null == result ? new YamlProxyServerConfiguration() : 
rebuildGlobalRuleConfiguration(result);
+    }
+    
+    private static YamlProxyServerConfiguration 
rebuildGlobalRuleConfiguration(final YamlProxyServerConfiguration 
serverConfiguration) {
+        serverConfiguration.getRules().removeIf(each -> each instanceof 
YamlGlobalRuleConfiguration);
+        if (null != serverConfiguration.getAuthority()) {
+            
serverConfiguration.getRules().add(serverConfiguration.getAuthority().convertToYamlAuthorityRuleConfiguration());
         }
-        // TODO authority will no longer be a global rule
-        result.getRules().removeIf(each -> each instanceof 
YamlAuthorityRuleConfiguration);
-        if (null != result.getAuthority()) {
-            
result.getRules().add(result.getAuthority().convertToYamlAuthorityRuleConfiguration());
+        if (null != serverConfiguration.getTransaction()) {
+            
serverConfiguration.getRules().add(serverConfiguration.getTransaction());
         }
-        return result;
+        if (null != serverConfiguration.getSqlParser()) {
+            
serverConfiguration.getRules().add(serverConfiguration.getSqlParser());
+        }
+        if (null != serverConfiguration.getSqlTranslator()) {
+            
serverConfiguration.getRules().add(serverConfiguration.getSqlTranslator());
+        }
+        if (null != serverConfiguration.getTraffic()) {
+            
serverConfiguration.getRules().add(serverConfiguration.getTraffic());
+        }
+        return serverConfiguration;
     }
     
     private static Collection<YamlProxyDatabaseConfiguration> 
loadDatabaseConfigurations(final File configPath) throws IOException {
diff --git 
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/config/yaml/YamlProxyServerConfiguration.java
 
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/config/yaml/YamlProxyServerConfiguration.java
index cf96865eb33..b3131836d43 100644
--- 
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/config/yaml/YamlProxyServerConfiguration.java
+++ 
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/config/yaml/YamlProxyServerConfiguration.java
@@ -21,8 +21,12 @@ import lombok.Getter;
 import lombok.Setter;
 import 
org.apache.shardingsphere.authority.yaml.config.YamlAuthorityConfiguration;
 import org.apache.shardingsphere.infra.util.yaml.YamlConfiguration;
-import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.mode.YamlModeConfiguration;
+import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
+import 
org.apache.shardingsphere.parser.yaml.config.YamlSQLParserRuleConfiguration;
+import 
org.apache.shardingsphere.sqltranslator.yaml.config.YamlSQLTranslatorRuleConfiguration;
+import 
org.apache.shardingsphere.traffic.yaml.config.YamlTrafficRuleConfiguration;
+import 
org.apache.shardingsphere.transaction.yaml.config.YamlTransactionRuleConfiguration;
 
 import java.util.Collection;
 import java.util.LinkedList;
@@ -39,6 +43,14 @@ public final class YamlProxyServerConfiguration implements 
YamlConfiguration {
     
     private YamlAuthorityConfiguration authority;
     
+    private YamlTransactionRuleConfiguration transaction;
+    
+    private YamlSQLParserRuleConfiguration sqlParser;
+    
+    private YamlSQLTranslatorRuleConfiguration sqlTranslator;
+    
+    private YamlTrafficRuleConfiguration traffic;
+    
     private Collection<YamlRuleConfiguration> rules = new LinkedList<>();
     
     private Properties props = new Properties();
diff --git a/proxy/bootstrap/src/main/resources/conf/server.yaml 
b/proxy/bootstrap/src/main/resources/conf/server.yaml
index 89994c80ceb..cbae3f3e249 100644
--- a/proxy/bootstrap/src/main/resources/conf/server.yaml
+++ b/proxy/bootstrap/src/main/resources/conf/server.yaml
@@ -42,11 +42,11 @@
 #  privilege:
 #    type: ALL_PERMITTED
 #
-#rules:
-#- !TRANSACTION
+#transaction:
 #  defaultType: XA
 #  providerType: Atomikos
-#- !SQL_PARSER
+#
+#sqlParser:
 #  sqlCommentParseEnabled: true
 #  sqlStatementCache:
 #    initialCapacity: 2000
@@ -54,7 +54,7 @@
 #  parseTreeCache:
 #    initialCapacity: 128
 #    maximumSize: 1024
-
+#
 #props:
 #  max-connections-size-per-query: 1
 #  kernel-executor-size: 16  # Infinite by default.

Reply via email to