You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2020/10/31 15:49:52 UTC

[shardingsphere] branch master updated: Remove SQLStatementContextConverter (#8000)

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 a11651a  Remove SQLStatementContextConverter (#8000)
a11651a is described below

commit a11651a5f17d244a238d3a4914594fdcf841f318
Author: Liang Zhang <te...@163.com>
AuthorDate: Sat Oct 31 23:49:18 2020 +0800

    Remove SQLStatementContextConverter (#8000)
    
    * Remove SQLStatementContextConverter
    
    * Static XXXStatementContextConverter
---
 ...reateShardingRuleStatementContextConverter.java | 27 ++++++++++------
 ...eShardingRuleStatementContextConverterTest.java | 18 +++++------
 .../converter/SQLStatementContextConverter.java    | 37 ----------------------
 .../backend/text/admin/RDLBackendHandler.java      |  6 ++--
 ...CreateDataSourcesStatementContextConverter.java | 17 +++++++---
 ...teDataSourcesStatementContextConverterTest.java | 18 +++++------
 6 files changed, 50 insertions(+), 73 deletions(-)

diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/converter/CreateShardingRuleStatementContextConverter.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/converter/CreateShardingRuleStatementContextConverter.java
index 9fe6cbc..a5aa9d8 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/converter/CreateShardingRuleStatementContextConverter.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/converter/CreateShardingRuleStatementContextConverter.java
@@ -19,8 +19,9 @@ package org.apache.shardingsphere.sharding.converter;
 
 import com.google.common.base.Joiner;
 import com.google.common.base.Preconditions;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
 import org.apache.shardingsphere.distsql.parser.segment.rdl.TableRuleSegment;
-import org.apache.shardingsphere.infra.binder.converter.SQLStatementContextConverter;
 import org.apache.shardingsphere.infra.binder.statement.rdl.CreateShardingRuleStatementContext;
 import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmPropertiesAware;
 import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
@@ -40,10 +41,16 @@ import java.util.Properties;
 /**
  * Create sharding rule statement context converter.
  */
-public final class CreateShardingRuleStatementContextConverter implements SQLStatementContextConverter<CreateShardingRuleStatementContext, YamlShardingRuleConfiguration> {
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class CreateShardingRuleStatementContextConverter {
     
-    @Override
-    public YamlShardingRuleConfiguration convert(final CreateShardingRuleStatementContext sqlStatementContext) {
+    /**
+     * Convert create sharding rule statement context to YAML sharding rule configuration.
+     *
+     * @param sqlStatementContext create sharding rule statement context
+     * @return YAML sharding rule configuration
+     */
+    public static YamlShardingRuleConfiguration convert(final CreateShardingRuleStatementContext sqlStatementContext) {
         YamlShardingRuleConfiguration result = new YamlShardingRuleConfiguration();
         for (TableRuleSegment each : sqlStatementContext.getSqlStatement().getTables()) {
             result.getShardingAlgorithms().put(getAlgorithmName(each.getLogicTable(), each.getAlgorithmType()),
@@ -53,14 +60,14 @@ public final class CreateShardingRuleStatementContextConverter implements SQLSta
         return result;
     }
     
-    private YamlShardingSphereAlgorithmConfiguration createAlgorithmConfiguration(final TableRuleSegment segment, final Properties properties) {
+    private static YamlShardingSphereAlgorithmConfiguration createAlgorithmConfiguration(final TableRuleSegment segment, final Properties properties) {
         YamlShardingSphereAlgorithmConfiguration result = new YamlShardingSphereAlgorithmConfiguration();
         result.setType(segment.getAlgorithmType());
         result.setProps(properties);
         return result;
     }
     
-    private Properties getAlgorithmProperties(final String type, final Collection<String> propertyValues) {
+    private static Properties getAlgorithmProperties(final String type, final Collection<String> propertyValues) {
         Collection<String> propertyKeys = findAlgorithmPropertyKeys(type);
         Preconditions.checkArgument(propertyKeys.size() == propertyValues.size(), "%s needs %d properties, but %s properties are given.", type, propertyKeys.size(), propertyValues.size());
         Properties result = new Properties();
@@ -72,13 +79,13 @@ public final class CreateShardingRuleStatementContextConverter implements SQLSta
         return result;
     }
     
-    private Collection<String> findAlgorithmPropertyKeys(final String algorithmType) {
+    private static Collection<String> findAlgorithmPropertyKeys(final String algorithmType) {
         return ShardingSphereServiceLoader.newServiceInstances(ShardingAlgorithm.class).stream()
                 .filter(each -> each instanceof ShardingAutoTableAlgorithm && each.getType().equals(algorithmType)).findFirst()
                 .map(each -> ((ShardingSphereAlgorithmPropertiesAware) each).getAllPropertyKeys()).orElse(Collections.emptyList());
     }
     
-    private YamlShardingAutoTableRuleConfiguration createAutoTableRuleConfiguration(final TableRuleSegment segment) {
+    private static YamlShardingAutoTableRuleConfiguration createAutoTableRuleConfiguration(final TableRuleSegment segment) {
         YamlShardingAutoTableRuleConfiguration result = new YamlShardingAutoTableRuleConfiguration();
         result.setLogicTable(segment.getLogicTable());
         result.setActualDataSources(Joiner.on(",").join(segment.getDataSources()));
@@ -86,7 +93,7 @@ public final class CreateShardingRuleStatementContextConverter implements SQLSta
         return result;
     }
     
-    private YamlShardingStrategyConfiguration createStrategyConfiguration(final TableRuleSegment segment) {
+    private static YamlShardingStrategyConfiguration createStrategyConfiguration(final TableRuleSegment segment) {
         YamlShardingStrategyConfiguration result = new YamlShardingStrategyConfiguration();
         YamlStandardShardingStrategyConfiguration standard = new YamlStandardShardingStrategyConfiguration();
         standard.setShardingColumn(segment.getShardingColumn());
@@ -95,7 +102,7 @@ public final class CreateShardingRuleStatementContextConverter implements SQLSta
         return result;
     }
     
-    private String getAlgorithmName(final String tableName, final String algorithmType) {
+    private static String getAlgorithmName(final String tableName, final String algorithmType) {
         return String.format("%s_%s", tableName, algorithmType);
     }
 }
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/test/java/org/apache/shardingsphere/sharding/converter/CreateShardingRuleStatementContextConverterTest.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/test/java/org/apache/shardingsphere/sharding/converter/CreateShardingRuleStatementContextConverterTest.java
index 6833b60..4002163 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/test/java/org/apache/shardingsphere/sharding/converter/CreateShardingRuleStatementContextConverterTest.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/test/java/org/apache/shardingsphere/sharding/converter/CreateShardingRuleStatementContextConverterTest.java
@@ -52,14 +52,14 @@ public final class CreateShardingRuleStatementContextConverterTest {
     }
     
     @Test
-    public void generate() {
-        YamlShardingRuleConfiguration rule = new CreateShardingRuleStatementContextConverter().convert(context);
-        assertTrue(rule.getTables().isEmpty());
-        assertThat(rule.getAutoTables().size(), is(1));
-        assertThat(rule.getAutoTables().get(segment.getLogicTable()).getActualDataSources(), is("ds0,ds1"));
-        assertThat(rule.getAutoTables().get(segment.getLogicTable()).getShardingStrategy().getStandard().getShardingColumn(), is("order_id"));
-        assertThat(rule.getAutoTables().get(segment.getLogicTable()).getShardingStrategy().getStandard().getShardingAlgorithmName(), is("t_order_MOD"));
-        assertTrue(rule.getShardingAlgorithms().containsKey("t_order_MOD"));
-        assertThat(rule.getShardingAlgorithms().get("t_order_MOD").getType(), is("MOD"));
+    public void assertConvert() {
+        YamlShardingRuleConfiguration config = CreateShardingRuleStatementContextConverter.convert(context);
+        assertTrue(config.getTables().isEmpty());
+        assertThat(config.getAutoTables().size(), is(1));
+        assertThat(config.getAutoTables().get(segment.getLogicTable()).getActualDataSources(), is("ds0,ds1"));
+        assertThat(config.getAutoTables().get(segment.getLogicTable()).getShardingStrategy().getStandard().getShardingColumn(), is("order_id"));
+        assertThat(config.getAutoTables().get(segment.getLogicTable()).getShardingStrategy().getStandard().getShardingAlgorithmName(), is("t_order_MOD"));
+        assertTrue(config.getShardingAlgorithms().containsKey("t_order_MOD"));
+        assertThat(config.getShardingAlgorithms().get("t_order_MOD").getType(), is("MOD"));
     }
 }
diff --git a/shardingsphere-infra/shardingsphere-infra-binder/src/main/java/org/apache/shardingsphere/infra/binder/converter/SQLStatementContextConverter.java b/shardingsphere-infra/shardingsphere-infra-binder/src/main/java/org/apache/shardingsphere/infra/binder/converter/SQLStatementContextConverter.java
deleted file mode 100644
index 6d6cf60..0000000
--- a/shardingsphere-infra/shardingsphere-infra-binder/src/main/java/org/apache/shardingsphere/infra/binder/converter/SQLStatementContextConverter.java
+++ /dev/null
@@ -1,37 +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.infra.binder.converter;
-
-import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
-
-/**
- * SQL statement context converter.
- * 
- * @param <I> type of SQL statement context
- * @param <O> type of output object 
- */
-public interface SQLStatementContextConverter<I extends SQLStatementContext<?>, O> {
-    
-    /**
-     * Convert SQL statement to desired object.
-     *
-     * @param sqlStatementContext SQL statement context
-     * @return output object
-     */
-    O convert(I sqlStatementContext);
-}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/RDLBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/RDLBackendHandler.java
index f23bb75..2aa8ec7 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/RDLBackendHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/RDLBackendHandler.java
@@ -97,7 +97,7 @@ public final class RDLBackendHandler implements TextProtocolBackendHandler {
     }
     
     private BackendResponse execute(final CreateDataSourcesStatementContext context) {
-        Map<String, YamlDataSourceParameter> parameters = new CreateDataSourcesStatementContextConverter().convert(context);
+        Map<String, YamlDataSourceParameter> parameters = CreateDataSourcesStatementContextConverter.convert(context);
         Map<String, DataSourceConfiguration> dataSources = DataSourceParameterConverter.getDataSourceConfigurationMap(
                 DataSourceParameterConverter.getDataSourceParameterMapFromYamlConfiguration(parameters));
         // TODO Need to get the executed feedback from registry center for returning.
@@ -108,8 +108,8 @@ public final class RDLBackendHandler implements TextProtocolBackendHandler {
     }
     
     private BackendResponse execute(final CreateShardingRuleStatementContext context) {
-        YamlShardingRuleConfiguration configs = new CreateShardingRuleStatementContextConverter().convert(context);
-        Collection<RuleConfiguration> rules = new YamlRuleConfigurationSwapperEngine().swapToRuleConfigurations(Collections.singleton(configs));
+        YamlShardingRuleConfiguration config = CreateShardingRuleStatementContextConverter.convert(context);
+        Collection<RuleConfiguration> rules = new YamlRuleConfigurationSwapperEngine().swapToRuleConfigurations(Collections.singleton(config));
         // TODO Need to get the executed feedback from registry center for returning.
         GovernanceEventBus.getInstance().post(new RulePersistEvent(backendConnection.getSchemaName(), rules));
         UpdateResponse result = new UpdateResponse();
diff --git a/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/converter/CreateDataSourcesStatementContextConverter.java b/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/converter/CreateDataSourcesStatementContextConverter.java
index 19b0ee9..3f4c0c1 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/converter/CreateDataSourcesStatementContextConverter.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/converter/CreateDataSourcesStatementContextConverter.java
@@ -17,8 +17,9 @@
 
 package org.apache.shardingsphere.proxy.converter;
 
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
 import org.apache.shardingsphere.distsql.parser.segment.rdl.DataSourceConnectionSegment;
-import org.apache.shardingsphere.infra.binder.converter.SQLStatementContextConverter;
 import org.apache.shardingsphere.infra.binder.statement.rdl.CreateDataSourcesStatementContext;
 import org.apache.shardingsphere.infra.config.datasource.DataSourceParameter;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
@@ -30,10 +31,16 @@ import java.util.Map;
 /**
  * Create data source statement context converter.
  */
-public final class CreateDataSourcesStatementContextConverter implements SQLStatementContextConverter<CreateDataSourcesStatementContext, Map<String, YamlDataSourceParameter>> {
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class CreateDataSourcesStatementContextConverter {
     
-    @Override
-    public Map<String, YamlDataSourceParameter> convert(final CreateDataSourcesStatementContext sqlStatementContext) {
+    /**
+     * Convert create data source statement context to YAML data source parameter map.
+     *
+     * @param sqlStatementContext create data source statement context
+     * @return YAML data source parameter map
+     */
+    public static Map<String, YamlDataSourceParameter> convert(final CreateDataSourcesStatementContext sqlStatementContext) {
         Map<String, YamlDataSourceParameter> result = new LinkedHashMap<>(sqlStatementContext.getSqlStatement().getConnectionInfos().size(), 1);
         for (DataSourceConnectionSegment each : sqlStatementContext.getSqlStatement().getConnectionInfos()) {
             DataSourceParameter parameter = new DataSourceParameter();
@@ -51,7 +58,7 @@ public final class CreateDataSourcesStatementContextConverter implements SQLStat
         return result;
     }
     
-    private String getURL(final DatabaseType databaseType, final DataSourceConnectionSegment connectionSegment) {
+    private static String getURL(final DatabaseType databaseType, final DataSourceConnectionSegment connectionSegment) {
         return String.format("%s//%s:%s/%s", databaseType.getJdbcUrlPrefixes().iterator().next(), connectionSegment.getHostName(), connectionSegment.getPort(), connectionSegment.getDb());
     }
 }
diff --git a/shardingsphere-proxy/shardingsphere-proxy-common/src/test/java/org/apache/shardingsphere/proxy/converter/CreateDataSourcesStatementContextConverterTest.java b/shardingsphere-proxy/shardingsphere-proxy-common/src/test/java/org/apache/shardingsphere/proxy/converter/CreateDataSourcesStatementContextConverterTest.java
index 458540a..3dcf6f2 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-common/src/test/java/org/apache/shardingsphere/proxy/converter/CreateDataSourcesStatementContextConverterTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-common/src/test/java/org/apache/shardingsphere/proxy/converter/CreateDataSourcesStatementContextConverterTest.java
@@ -17,11 +17,11 @@
 
 package org.apache.shardingsphere.proxy.converter;
 
+import org.apache.shardingsphere.distsql.parser.segment.rdl.DataSourceConnectionSegment;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.CreateDataSourcesStatement;
+import org.apache.shardingsphere.infra.binder.statement.rdl.CreateDataSourcesStatementContext;
 import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
 import org.apache.shardingsphere.proxy.config.yaml.YamlDataSourceParameter;
-import org.apache.shardingsphere.infra.binder.statement.rdl.CreateDataSourcesStatementContext;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.CreateDataSourcesStatement;
-import org.apache.shardingsphere.distsql.parser.segment.rdl.DataSourceConnectionSegment;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -47,20 +47,20 @@ public final class CreateDataSourcesStatementContextConverterTest {
         Collection<DataSourceConnectionSegment> result = new LinkedList<>();
         for (int i = 0; i < 2; i++) {
             DataSourceConnectionSegment segment = new DataSourceConnectionSegment();
-            segment.setName("ds" + i);
+            segment.setName(String.format("ds%s", i));
             segment.setHostName("127.0.0.1");
             segment.setPassword("3306");
-            segment.setDb("demo_ds_" + i);
-            segment.setUser("root" + i);
-            segment.setPassword("root" + i);
+            segment.setDb(String.format("demo_ds_%s", i));
+            segment.setUser(String.format("root%s", i));
+            segment.setPassword(String.format("root%s", i));
             result.add(segment);
         }
         return result;
     }
     
     @Test
-    public void assertGenerate() {
-        Map<String, YamlDataSourceParameter> result = new CreateDataSourcesStatementContextConverter().convert(sqlStatement);
+    public void assertConvert() {
+        Map<String, YamlDataSourceParameter> result = CreateDataSourcesStatementContextConverter.convert(sqlStatement);
         assertThat(result.size(), is(2));
         assertTrue(result.keySet().containsAll(Arrays.asList("ds0", "ds1")));
         assertThat(result.values().iterator().next().getUsername(), is("root0"));