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()