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 2020/12/17 10:37:08 UTC
[shardingsphere] branch master updated: Refactor
RDLBackendHandlerFactory (#8673)
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 b0305ae Refactor RDLBackendHandlerFactory (#8673)
b0305ae is described below
commit b0305aee264f0bc0ded644583eb1def696a7134b
Author: Liang Zhang <te...@163.com>
AuthorDate: Thu Dec 17 18:36:48 2020 +0800
Refactor RDLBackendHandlerFactory (#8673)
---
.../text/distsql/DistSQLBackendHandlerFactory.java | 2 +-
.../text/distsql/rdl/RDLBackendHandlerFactory.java | 17 +++++++++--------
.../text/distsql/RDLBackendHandlerFactoryTest.java | 19 +++++++++++++++----
3 files changed, 25 insertions(+), 13 deletions(-)
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/DistSQLBackendHandlerFactory.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/DistSQLBackendHandlerFactory.java
index 13baf7d..13ecf4d 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/DistSQLBackendHandlerFactory.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/DistSQLBackendHandlerFactory.java
@@ -56,7 +56,7 @@ public final class DistSQLBackendHandlerFactory {
return Optional.of(new DataSourcesQueryBackendHandler((ShowResourcesStatement) sqlStatement, backendConnection));
}
if (sqlStatement instanceof RDLStatement || sqlStatement instanceof CreateDatabaseStatement || sqlStatement instanceof DropDatabaseStatement) {
- return Optional.of(RDLBackendHandlerFactory.newInstance(sqlStatement, backendConnection));
+ return RDLBackendHandlerFactory.newInstance(sqlStatement, backendConnection);
}
return Optional.empty();
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/RDLBackendHandlerFactory.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/RDLBackendHandlerFactory.java
index 14de2d6..af9aad9 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/RDLBackendHandlerFactory.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/RDLBackendHandlerFactory.java
@@ -37,6 +37,7 @@ import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateDatab
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropDatabaseStatement;
import java.sql.SQLException;
+import java.util.Optional;
/**
* RDL backend handler factory.
@@ -52,7 +53,7 @@ public final class RDLBackendHandlerFactory {
* @return RDL backend handler
* @throws SQLException SQL exception
*/
- public static TextProtocolBackendHandler newInstance(final SQLStatement sqlStatement, final BackendConnection backendConnection) throws SQLException {
+ public static Optional<TextProtocolBackendHandler> newInstance(final SQLStatement sqlStatement, final BackendConnection backendConnection) throws SQLException {
checkRegistryCenterExisted(sqlStatement);
return createRDLBackendHandler(sqlStatement, backendConnection);
}
@@ -63,23 +64,23 @@ public final class RDLBackendHandlerFactory {
}
}
- private static TextProtocolBackendHandler createRDLBackendHandler(final SQLStatement sqlStatement, final BackendConnection backendConnection) {
+ private static Optional<TextProtocolBackendHandler> createRDLBackendHandler(final SQLStatement sqlStatement, final BackendConnection backendConnection) {
DatabaseType databaseType = ProxyContext.getInstance().getMetaDataContexts().getMetaData(backendConnection.getSchemaName()).getResource().getDatabaseType();
if (sqlStatement instanceof AddResourceStatement) {
- return new AddResourceBackendHandler(databaseType, (AddResourceStatement) sqlStatement, backendConnection);
+ return Optional.of(new AddResourceBackendHandler(databaseType, (AddResourceStatement) sqlStatement, backendConnection));
}
if (sqlStatement instanceof CreateDatabaseStatement) {
- return new CreateDatabaseBackendHandler((CreateDatabaseStatement) sqlStatement);
+ return Optional.of(new CreateDatabaseBackendHandler((CreateDatabaseStatement) sqlStatement));
}
if (sqlStatement instanceof CreateShardingRuleStatement) {
- return new CreateShardingRuleBackendHandler((CreateShardingRuleStatement) sqlStatement, backendConnection);
+ return Optional.of(new CreateShardingRuleBackendHandler((CreateShardingRuleStatement) sqlStatement, backendConnection));
}
if (sqlStatement instanceof DropDatabaseStatement) {
- return new DropDatabaseBackendHandler((DropDatabaseStatement) sqlStatement);
+ return Optional.of(new DropDatabaseBackendHandler((DropDatabaseStatement) sqlStatement));
}
if (sqlStatement instanceof DropShardingRuleStatement) {
- return new DropShardingRuleBackendHandler((DropShardingRuleStatement) sqlStatement, backendConnection);
+ return Optional.of(new DropShardingRuleBackendHandler((DropShardingRuleStatement) sqlStatement, backendConnection));
}
- throw new UnsupportedOperationException(sqlStatement.getClass().getName());
+ return Optional.empty();
}
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/RDLBackendHandlerFactoryTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/RDLBackendHandlerFactoryTest.java
index 758040f..95a6482 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/RDLBackendHandlerFactoryTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/RDLBackendHandlerFactoryTest.java
@@ -32,6 +32,7 @@ import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.exception.DBCreateExistsException;
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.TextProtocolBackendHandler;
import org.apache.shardingsphere.proxy.backend.text.distsql.rdl.RDLBackendHandlerFactory;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateDatabaseStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropDatabaseStatement;
@@ -47,12 +48,14 @@ import java.lang.reflect.Field;
import java.sql.SQLException;
import java.util.Collections;
import java.util.Map;
+import java.util.Optional;
import java.util.Properties;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -87,7 +90,9 @@ public final class RDLBackendHandlerFactoryTest {
assertThat(ex.getMessage(), is(String.format("No Registry center to execute `%s` SQL", sqlStatement.getClass().getSimpleName())));
}
setGovernanceMetaDataContexts(true);
- ResponseHeader response = RDLBackendHandlerFactory.newInstance(sqlStatement, connection).execute();
+ Optional<TextProtocolBackendHandler> rdlBackendHandler = RDLBackendHandlerFactory.newInstance(sqlStatement, connection);
+ assertTrue(rdlBackendHandler.isPresent());
+ ResponseHeader response = rdlBackendHandler.get().execute();
assertThat(response, instanceOf(UpdateResponseHeader.class));
}
@@ -111,7 +116,9 @@ public final class RDLBackendHandlerFactoryTest {
assertThat(ex.getMessage(), is(String.format("No Registry center to execute `%s` SQL", sqlStatement.getClass().getSimpleName())));
}
setGovernanceMetaDataContexts(true);
- ResponseHeader response = RDLBackendHandlerFactory.newInstance(sqlStatement, connection).execute();
+ Optional<TextProtocolBackendHandler> rdlBackendHandler = RDLBackendHandlerFactory.newInstance(sqlStatement, connection);
+ assertTrue(rdlBackendHandler.isPresent());
+ ResponseHeader response = rdlBackendHandler.get().execute();
assertThat(response, instanceOf(UpdateResponseHeader.class));
}
@@ -158,7 +165,9 @@ public final class RDLBackendHandlerFactoryTest {
assertThat(ex.getMessage(), is("No Registry center to execute `AddResourceStatement` SQL"));
}
setGovernanceMetaDataContexts(true);
- ResponseHeader response = RDLBackendHandlerFactory.newInstance(mock(AddResourceStatement.class), connection).execute();
+ Optional<TextProtocolBackendHandler> rdlBackendHandler = RDLBackendHandlerFactory.newInstance(mock(AddResourceStatement.class), connection);
+ assertTrue(rdlBackendHandler.isPresent());
+ ResponseHeader response = rdlBackendHandler.get().execute();
assertThat(response, instanceOf(UpdateResponseHeader.class));
}
@@ -172,7 +181,9 @@ public final class RDLBackendHandlerFactoryTest {
assertThat(ex.getMessage(), is("No Registry center to execute `CreateShardingRuleStatement` SQL"));
}
setGovernanceMetaDataContexts(true);
- ResponseHeader response = RDLBackendHandlerFactory.newInstance(mock(CreateShardingRuleStatement.class), connection).execute();
+ Optional<TextProtocolBackendHandler> rdlBackendHandler = RDLBackendHandlerFactory.newInstance(mock(CreateShardingRuleStatement.class), connection);
+ assertTrue(rdlBackendHandler.isPresent());
+ ResponseHeader response = rdlBackendHandler.get().execute();
assertThat(response, instanceOf(UpdateResponseHeader.class));
}