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 c256b71  Use SchemaRequiredBackendHandler on RQLBackendHandler (#8663)
c256b71 is described below

commit c256b718ad7c6838d1de3a0501645d2963d0468c
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Dec 17 14:33:00 2020 +0800

    Use SchemaRequiredBackendHandler on RQLBackendHandler (#8663)
    
    * Revise javadoc
    
    * Move SchemaRequiredBackendHandler
    
    * Use SchemaRequiredBackendHandler on RDLBackendHandler
---
 .../rdl => }/SchemaRequiredBackendHandler.java     |  9 +++---
 .../rdl/impl/CreateShardingRuleBackendHandler.java |  2 +-
 .../rdl/impl/DropShardingRuleBackendHandler.java   |  2 +-
 .../rql/DataSourcesQueryBackendHandler.java        | 32 ++++++----------------
 .../text/distsql/rql/RuleQueryBackendHandler.java  | 32 ++++++----------------
 5 files changed, 22 insertions(+), 55 deletions(-)

diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/SchemaRequiredBackendHandler.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/SchemaRequiredBackendHandler.java
similarity index 93%
rename from 
shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/SchemaRequiredBackendHandler.java
rename to 
shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/SchemaRequiredBackendHandler.java
index 4ea8152..829440e 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/SchemaRequiredBackendHandler.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/SchemaRequiredBackendHandler.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.text.distsql.rdl;
+package org.apache.shardingsphere.proxy.backend.text;
 
 import lombok.RequiredArgsConstructor;
 import 
org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
@@ -23,7 +23,6 @@ import 
org.apache.shardingsphere.proxy.backend.context.ProxyContext;
 import 
org.apache.shardingsphere.proxy.backend.exception.NoDatabaseSelectedException;
 import 
org.apache.shardingsphere.proxy.backend.exception.UnknownDatabaseException;
 import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
-import org.apache.shardingsphere.proxy.backend.text.TextProtocolBackendHandler;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.SchemaSegment;
 import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.available.FromSchemaAvailable;
@@ -33,13 +32,13 @@ import java.util.Optional;
 /**
  * Schema required backend handler.
  * 
- * @param <T> type of SQL statement context
+ * @param <T> type of SQL statement
  */
 @RequiredArgsConstructor
 public abstract class SchemaRequiredBackendHandler<T extends SQLStatement> 
implements TextProtocolBackendHandler {
-
+    
     private final T sqlStatement;
-
+    
     private final BackendConnection backendConnection;
     
     @Override
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateShardingRuleBackendHandler.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateShardingRuleBackendHandler.java
index cc41ca1..1f76973 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateShardingRuleBackendHandler.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateShardingRuleBackendHandler.java
@@ -25,7 +25,7 @@ import 
org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapper
 import 
org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
 import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
 import 
org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
-import 
org.apache.shardingsphere.proxy.backend.text.distsql.rdl.SchemaRequiredBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.text.SchemaRequiredBackendHandler;
 import 
org.apache.shardingsphere.sharding.converter.CreateShardingRuleStatementConverter;
 import 
org.apache.shardingsphere.sharding.yaml.config.YamlShardingRuleConfiguration;
 
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropShardingRuleBackendHandler.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropShardingRuleBackendHandler.java
index 7be1ca8..19a03ad 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropShardingRuleBackendHandler.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropShardingRuleBackendHandler.java
@@ -28,7 +28,7 @@ import 
org.apache.shardingsphere.proxy.backend.exception.ShardingTableRuleNotExi
 import org.apache.shardingsphere.proxy.backend.exception.TablesInUsedException;
 import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
 import 
org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
-import 
org.apache.shardingsphere.proxy.backend.text.distsql.rdl.SchemaRequiredBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.text.SchemaRequiredBackendHandler;
 import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
 
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/DataSourcesQueryBackendHandler.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/DataSourcesQueryBackendHandler.java
index 649abf7..acbc269 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/DataSourcesQueryBackendHandler.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/DataSourcesQueryBackendHandler.java
@@ -17,19 +17,16 @@
 
 package org.apache.shardingsphere.proxy.backend.text.distsql.rql;
 
-import lombok.RequiredArgsConstructor;
 import 
org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowResourcesStatement;
 import org.apache.shardingsphere.infra.config.datasource.DataSourceConverter;
 import org.apache.shardingsphere.infra.config.datasource.DataSourceParameter;
 import org.apache.shardingsphere.infra.yaml.engine.YamlEngine;
 import 
org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import 
org.apache.shardingsphere.proxy.backend.exception.NoDatabaseSelectedException;
-import 
org.apache.shardingsphere.proxy.backend.exception.UnknownDatabaseException;
 import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
 import 
org.apache.shardingsphere.proxy.backend.response.header.query.QueryResponseHeader;
 import 
org.apache.shardingsphere.proxy.backend.response.header.query.impl.QueryHeader;
-import org.apache.shardingsphere.proxy.backend.text.TextProtocolBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.text.SchemaRequiredBackendHandler;
 import 
org.apache.shardingsphere.proxy.config.util.DataSourceParameterConverter;
 
 import java.sql.Types;
@@ -39,22 +36,20 @@ import java.util.Iterator;
 import java.util.Map;
 
 /**
- * Backend handler for data sources query.
+ * Backend handler for show resources.
  */
-@RequiredArgsConstructor
-public final class DataSourcesQueryBackendHandler implements 
TextProtocolBackendHandler {
-    
-    private final ShowResourcesStatement sqlStatement;
-    
-    private final BackendConnection backendConnection;
+public final class DataSourcesQueryBackendHandler extends 
SchemaRequiredBackendHandler<ShowResourcesStatement> {
     
     private Map<String, DataSourceParameter> dataSourceParameterMap;
     
     private Iterator<String> dataSourceNames;
     
+    public DataSourcesQueryBackendHandler(final ShowResourcesStatement 
sqlStatement, final BackendConnection backendConnection) {
+        super(sqlStatement, backendConnection);
+    }
+    
     @Override
-    public ResponseHeader execute() {
-        String schemaName = getSchemaName(sqlStatement);
+    public ResponseHeader execute(final String schemaName, final 
ShowResourcesStatement sqlStatement) {
         QueryHeader nameQueryHeader = new QueryHeader(schemaName, "", "name", 
"name", Types.CHAR, "CHAR", 255, 0, false, false, false, false);
         QueryHeader contentQueryHeader = new QueryHeader(schemaName, "", "data 
source", "data source", Types.CHAR, "CHAR", 255, 0, false, false, false, false);
         dataSourceParameterMap = 
DataSourceParameterConverter.getDataSourceParameterMap(
@@ -63,17 +58,6 @@ public final class DataSourcesQueryBackendHandler implements 
TextProtocolBackend
         return new QueryResponseHeader(Arrays.asList(nameQueryHeader, 
contentQueryHeader));
     }
     
-    private String getSchemaName(final ShowResourcesStatement sqlStatement) {
-        String result = sqlStatement.getSchema().isPresent() ? 
sqlStatement.getSchema().get().getIdentifier().getValue() : 
backendConnection.getSchemaName();
-        if (null == result) {
-            throw new NoDatabaseSelectedException();
-        }
-        if (!ProxyContext.getInstance().schemaExists(result)) {
-            throw new UnknownDatabaseException(result);
-        }
-        return result;
-    }
-    
     @Override
     public boolean next() {
         return dataSourceNames.hasNext();
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/RuleQueryBackendHandler.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/RuleQueryBackendHandler.java
index 3fbfd15..9fa799a 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/RuleQueryBackendHandler.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/RuleQueryBackendHandler.java
@@ -17,7 +17,6 @@
 
 package org.apache.shardingsphere.proxy.backend.text.distsql.rql;
 
-import lombok.RequiredArgsConstructor;
 import 
org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowRuleStatement;
 import org.apache.shardingsphere.encrypt.api.config.EncryptRuleConfiguration;
 import org.apache.shardingsphere.infra.config.RuleConfiguration;
@@ -26,12 +25,10 @@ import 
org.apache.shardingsphere.infra.yaml.engine.YamlEngine;
 import 
org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapperEngine;
 import 
org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import 
org.apache.shardingsphere.proxy.backend.exception.NoDatabaseSelectedException;
-import 
org.apache.shardingsphere.proxy.backend.exception.UnknownDatabaseException;
 import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
 import 
org.apache.shardingsphere.proxy.backend.response.header.query.QueryResponseHeader;
 import 
org.apache.shardingsphere.proxy.backend.response.header.query.impl.QueryHeader;
-import org.apache.shardingsphere.proxy.backend.text.TextProtocolBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.text.SchemaRequiredBackendHandler;
 import 
org.apache.shardingsphere.replicaquery.api.config.ReplicaQueryRuleConfiguration;
 import org.apache.shardingsphere.shadow.api.config.ShadowRuleConfiguration;
 import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
@@ -43,37 +40,24 @@ import java.util.Iterator;
 import java.util.Optional;
 
 /**
- * Backend handler for rule query.
+ * Backend handler for show rules.
  */
-@RequiredArgsConstructor
-public final class RuleQueryBackendHandler implements 
TextProtocolBackendHandler {
-    
-    private final ShowRuleStatement sqlStatement;
-    
-    private final BackendConnection backendConnection;
+public final class RuleQueryBackendHandler extends 
SchemaRequiredBackendHandler<ShowRuleStatement> {
     
     private Iterator<RuleConfiguration> data;
     
+    public RuleQueryBackendHandler(final ShowRuleStatement sqlStatement, final 
BackendConnection backendConnection) {
+        super(sqlStatement, backendConnection);
+    }
+    
     @Override
-    public ResponseHeader execute() {
-        String schemaName = getSchemaName(sqlStatement);
+    protected ResponseHeader execute(final String schemaName, final 
ShowRuleStatement sqlStatement) {
         String ruleType = sqlStatement.getRuleType();
         QueryHeader queryHeader = new QueryHeader(schemaName, "", ruleType, 
ruleType, Types.CHAR, "CHAR", 255, 0, false, false, false, false);
         data = loadRuleConfiguration(schemaName, ruleType);
         return new QueryResponseHeader(Collections.singletonList(queryHeader));
     }
     
-    private String getSchemaName(final ShowRuleStatement sqlStatement) {
-        String result = sqlStatement.getSchema().isPresent() ? 
sqlStatement.getSchema().get().getIdentifier().getValue() : 
backendConnection.getSchemaName();
-        if (null == result) {
-            throw new NoDatabaseSelectedException();
-        }
-        if (!ProxyContext.getInstance().schemaExists(result)) {
-            throw new UnknownDatabaseException(result);
-        }
-        return result;
-    }
-    
     private Iterator<RuleConfiguration> loadRuleConfiguration(final String 
schemaName, final String ruleType) {
         Class<? extends RuleConfiguration> ruleConfigurationClass = 
getRuleConfigurationClass(ruleType);
         Optional<RuleConfiguration> ruleConfig = 
ProxyContext.getInstance().getMetaData(schemaName).getRuleMetaData().getConfigurations()

Reply via email to