You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2022/06/20 05:58:29 UTC

[shardingsphere] branch master updated: Refactor SQLParserRuleConfiguration to keep only one constructor (#18440)

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

panjuan 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 5843faf9c68 Refactor SQLParserRuleConfiguration to keep only one constructor (#18440)
5843faf9c68 is described below

commit 5843faf9c68ce786af558f200d5685c407dba7a1
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Mon Jun 20 13:58:23 2022 +0800

    Refactor SQLParserRuleConfiguration to keep only one constructor (#18440)
    
    * Refactor SQLParserRuleConfiguration
    
    * Refactor SQLParserRuleConfiguration
---
 .../parser/config/SQLParserRuleConfiguration.java  | 16 +++++-------
 .../parser/SQLParserRuleBeanDefinitionParser.java  | 29 +++-------------------
 .../namespace/SQLParserSpringNamespaceTest.java    |  8 +++---
 .../spring/sql-parser-application-context.xml      |  6 ++---
 4 files changed, 15 insertions(+), 44 deletions(-)

diff --git a/shardingsphere-kernel/shardingsphere-parser/shardingsphere-parser-api/src/main/java/org/apache/shardingsphere/parser/config/SQLParserRuleConfiguration.java b/shardingsphere-kernel/shardingsphere-parser/shardingsphere-parser-api/src/main/java/org/apache/shardingsphere/parser/config/SQLParserRuleConfiguration.java
index bd2aac53b0b..30beae62948 100644
--- a/shardingsphere-kernel/shardingsphere-parser/shardingsphere-parser-api/src/main/java/org/apache/shardingsphere/parser/config/SQLParserRuleConfiguration.java
+++ b/shardingsphere-kernel/shardingsphere-parser/shardingsphere-parser-api/src/main/java/org/apache/shardingsphere/parser/config/SQLParserRuleConfiguration.java
@@ -17,25 +17,21 @@
 
 package org.apache.shardingsphere.parser.config;
 
-import lombok.AllArgsConstructor;
 import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
+import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.config.scope.GlobalRuleConfiguration;
 import org.apache.shardingsphere.sql.parser.api.CacheOption;
 
 /**
  * SQL parser rule configuration.
  */
+@RequiredArgsConstructor
 @Getter
-@Setter
-@AllArgsConstructor
-@NoArgsConstructor
-public class SQLParserRuleConfiguration implements GlobalRuleConfiguration {
+public final class SQLParserRuleConfiguration implements GlobalRuleConfiguration {
     
-    private boolean sqlCommentParseEnabled;
+    private final boolean sqlCommentParseEnabled;
     
-    private CacheOption parseTreeCache;
+    private final CacheOption parseTreeCache;
     
-    private CacheOption sqlStatementCache;
+    private final CacheOption sqlStatementCache;
 }
diff --git a/shardingsphere-kernel/shardingsphere-parser/shardingsphere-parser-spring/shardingsphere-parser-spring-namespace/src/main/java/org/apache/shardingsphere/parser/spring/namespace/parser/SQLParserRuleBeanDefinitionParser.java b/shardingsphere-kernel/shardingsphere-parser/shardingsphere-parser-spring/shardingsphere-parser-spring-namespace/src/main/java/org/apache/shardingsphere/parser/spring/namespace/parser/SQLParserRuleBeanDefinitionParser.java
index 9f0f7d8a977..c162e6b8d70 100644
--- a/shardingsphere-kernel/shardingsphere-parser/shardingsphere-parser-spring/shardingsphere-parser-spring-namespace/src/main/java/org/apache/shardingsphere/parser/spring/namespace/parser/SQLParserRuleBeanDefinitionParser.java
+++ b/shardingsphere-kernel/shardingsphere-parser/shardingsphere-parser-spring/shardingsphere-parser-spring-namespace/src/main/java/org/apache/shardingsphere/parser/spring/namespace/parser/SQLParserRuleBeanDefinitionParser.java
@@ -17,7 +17,6 @@
 
 package org.apache.shardingsphere.parser.spring.namespace.parser;
 
-import com.google.common.base.Strings;
 import org.apache.shardingsphere.parser.config.SQLParserRuleConfiguration;
 import org.apache.shardingsphere.parser.spring.namespace.tag.SQLParserRuleBeanDefinitionTag;
 import org.springframework.beans.factory.support.AbstractBeanDefinition;
@@ -26,8 +25,6 @@ import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser;
 import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
-import java.util.Optional;
-
 /**
  * SQL parser bean parser for spring namespace.
  */
@@ -36,29 +33,9 @@ public final class SQLParserRuleBeanDefinitionParser extends AbstractBeanDefinit
     @Override
     protected AbstractBeanDefinition parseInternal(final Element element, final ParserContext parserContext) {
         BeanDefinitionBuilder factory = BeanDefinitionBuilder.rootBeanDefinition(SQLParserRuleConfiguration.class);
-        factory.addPropertyValue("sqlCommentParseEnabled", parseSQLCommentParserEnableConfiguration(element));
-        setSQLStatementCacheOption(element, factory);
-        setParseTreeCacheOption(element, factory);
+        factory.addConstructorArgValue(Boolean.parseBoolean(element.getAttribute(SQLParserRuleBeanDefinitionTag.SQL_COMMENT_PARSER_ENABLE)));
+        factory.addConstructorArgReference(element.getAttribute(SQLParserRuleBeanDefinitionTag.PARSE_TREE_CACHE_REF));
+        factory.addConstructorArgReference(element.getAttribute(SQLParserRuleBeanDefinitionTag.SQL_STATEMENT_CACHE_REF));
         return factory.getBeanDefinition();
     }
-    
-    private void setSQLStatementCacheOption(final Element element, final BeanDefinitionBuilder factory) {
-        Optional<String> cacheRef = parseCacheRef(element, SQLParserRuleBeanDefinitionTag.SQL_STATEMENT_CACHE_REF);
-        cacheRef.ifPresent(optional -> factory.addPropertyReference("sqlStatementCache", optional));
-    }
-    
-    private void setParseTreeCacheOption(final Element element, final BeanDefinitionBuilder factory) {
-        Optional<String> cacheRef = parseCacheRef(element, SQLParserRuleBeanDefinitionTag.PARSE_TREE_CACHE_REF);
-        cacheRef.ifPresent(optional -> factory.addPropertyReference("parseTreeCache", optional));
-    }
-    
-    private boolean parseSQLCommentParserEnableConfiguration(final Element element) {
-        String sqlCommentParserEnable = element.getAttribute(SQLParserRuleBeanDefinitionTag.SQL_COMMENT_PARSER_ENABLE);
-        return Boolean.parseBoolean(sqlCommentParserEnable);
-    }
-    
-    private Optional<String> parseCacheRef(final Element element, final String tagName) {
-        String result = element.getAttribute(tagName);
-        return Strings.isNullOrEmpty(result) ? Optional.empty() : Optional.of(result);
-    }
 }
diff --git a/shardingsphere-kernel/shardingsphere-parser/shardingsphere-parser-spring/shardingsphere-parser-spring-namespace/src/test/java/org/apache/shardingsphere/parser/spring/namespace/SQLParserSpringNamespaceTest.java b/shardingsphere-kernel/shardingsphere-parser/shardingsphere-parser-spring/shardingsphere-parser-spring-namespace/src/test/java/org/apache/shardingsphere/parser/spring/namespace/SQLParserSpringNamespaceTest.java
index 12e6760db95..762ef10f22a 100644
--- a/shardingsphere-kernel/shardingsphere-parser/shardingsphere-parser-spring/shardingsphere-parser-spring-namespace/src/test/java/org/apache/shardingsphere/parser/spring/namespace/SQLParserSpringNamespaceTest.java
+++ b/shardingsphere-kernel/shardingsphere-parser/shardingsphere-parser-spring/shardingsphere-parser-spring-namespace/src/test/java/org/apache/shardingsphere/parser/spring/namespace/SQLParserSpringNamespaceTest.java
@@ -33,13 +33,13 @@ import static org.junit.Assert.assertTrue;
 public final class SQLParserSpringNamespaceTest extends AbstractJUnit4SpringContextTests {
     
     @Resource
-    private SQLParserRuleConfiguration sqlParserRuleConfiguration;
+    private SQLParserRuleConfiguration sqlParserRuleConfig;
     
     @Test
     public void assertSQLParserRule() {
-        assertTrue(sqlParserRuleConfiguration.isSqlCommentParseEnabled());
-        assertCacheOption(sqlParserRuleConfiguration.getSqlStatementCache());
-        assertCacheOption(sqlParserRuleConfiguration.getParseTreeCache());
+        assertTrue(sqlParserRuleConfig.isSqlCommentParseEnabled());
+        assertCacheOption(sqlParserRuleConfig.getSqlStatementCache());
+        assertCacheOption(sqlParserRuleConfig.getParseTreeCache());
     }
     
     private void assertCacheOption(final CacheOption cacheOption) {
diff --git a/shardingsphere-kernel/shardingsphere-parser/shardingsphere-parser-spring/shardingsphere-parser-spring-namespace/src/test/resources/META-INF/spring/sql-parser-application-context.xml b/shardingsphere-kernel/shardingsphere-parser/shardingsphere-parser-spring/shardingsphere-parser-spring-namespace/src/test/resources/META-INF/spring/sql-parser-application-context.xml
index fb307b190db..d2a06a86ab5 100644
--- a/shardingsphere-kernel/shardingsphere-parser/shardingsphere-parser-spring/shardingsphere-parser-spring-namespace/src/test/resources/META-INF/spring/sql-parser-application-context.xml
+++ b/shardingsphere-kernel/shardingsphere-parser/shardingsphere-parser-spring/shardingsphere-parser-spring-namespace/src/test/resources/META-INF/spring/sql-parser-application-context.xml
@@ -24,10 +24,8 @@
                            http://shardingsphere.apache.org/schema/shardingsphere/sql-parser 
                            http://shardingsphere.apache.org/schema/shardingsphere/sql-parser/sql-parser.xsd
                            ">
-    
     <sql-parser:rule id="sqlParseRule" sql-comment-parse-enable="true" parse-tree-cache-ref="parseTreeCache" sql-statement-cache-ref="sqlStatementCache" />
     
-    <sql-parser:cache-option id="sqlStatementCache" initial-capacity="1024" maximum-size="1024"/>
-
-    <sql-parser:cache-option id="parseTreeCache" initial-capacity="1024" maximum-size="1024"/>
+    <sql-parser:cache-option id="sqlStatementCache" initial-capacity="1024" maximum-size="1024" />
+    <sql-parser:cache-option id="parseTreeCache" initial-capacity="1024" maximum-size="1024" />
 </beans>