This is an automated email from the ASF dual-hosted git repository.
wuweijie 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 38a9175 Refactor RDLBackendHandlerFactory (#11062)
38a9175 is described below
commit 38a9175d648543c2cb47017f78dec2ed4eaa376d
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Jun 29 21:48:56 2021 +0800
Refactor RDLBackendHandlerFactory (#11062)
---
.../text/distsql/DistSQLBackendHandlerFactory.java | 2 +-
.../text/distsql/rdl/RDLBackendHandlerFactory.java | 22 +++++------
.../distsql/DistSQLBackendHandlerFactoryTest.java | 43 ++++++----------------
3 files changed, 22 insertions(+), 45 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 9efc776..622e96a 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
@@ -52,7 +52,7 @@ public final class DistSQLBackendHandlerFactory {
return
Optional.of(RQLBackendHandlerFactory.newInstance((RQLStatement) sqlStatement,
backendConnection));
}
if (sqlStatement instanceof RDLStatement) {
- return RDLBackendHandlerFactory.newInstance(databaseType,
sqlStatement, backendConnection);
+ return
Optional.of(RDLBackendHandlerFactory.newInstance(databaseType, sqlStatement,
backendConnection));
}
return RALBackendHandlerFactory.newInstance(sqlStatement);
}
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 29de5e9..377fb39 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
@@ -59,12 +59,10 @@ 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.
*/
-@SuppressWarnings("unchecked")
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class RDLBackendHandlerFactory {
@@ -77,11 +75,9 @@ public final class RDLBackendHandlerFactory {
* @return RDL backend handler
* @throws SQLException SQL exception
*/
- public static Optional<TextProtocolBackendHandler> newInstance(final
DatabaseType databaseType, final SQLStatement sqlStatement, final
BackendConnection backendConnection) throws SQLException {
- Optional<TextProtocolBackendHandler> result =
createRDLBackendHandler(databaseType, sqlStatement, backendConnection);
- if (result.isPresent()) {
- checkRegistryCenterExisted(sqlStatement);
- }
+ public static TextProtocolBackendHandler newInstance(final DatabaseType
databaseType, final SQLStatement sqlStatement, final BackendConnection
backendConnection) throws SQLException {
+ TextProtocolBackendHandler result =
createRDLBackendHandler(databaseType, sqlStatement, backendConnection);
+ checkRegistryCenterExisted(sqlStatement);
return result;
}
@@ -91,20 +87,20 @@ public final class RDLBackendHandlerFactory {
}
}
- private static Optional<TextProtocolBackendHandler>
createRDLBackendHandler(final DatabaseType databaseType, final SQLStatement
sqlStatement, final BackendConnection backendConnection) {
+ private static TextProtocolBackendHandler createRDLBackendHandler(final
DatabaseType databaseType, final SQLStatement sqlStatement, final
BackendConnection backendConnection) {
if (sqlStatement instanceof AddResourceStatement) {
- return Optional.of(new AddResourceBackendHandler(databaseType,
(AddResourceStatement) sqlStatement, backendConnection));
+ return new AddResourceBackendHandler(databaseType,
(AddResourceStatement) sqlStatement, backendConnection);
}
if (sqlStatement instanceof DropResourceStatement) {
- return Optional.of(new
DropResourceBackendHandler((DropResourceStatement) sqlStatement,
backendConnection));
+ return new DropResourceBackendHandler((DropResourceStatement)
sqlStatement, backendConnection);
}
if (sqlStatement instanceof CreateDatabaseStatement) {
- return Optional.of(new
CreateDatabaseBackendHandler((CreateDatabaseStatement) sqlStatement));
+ return new CreateDatabaseBackendHandler((CreateDatabaseStatement)
sqlStatement);
}
if (sqlStatement instanceof DropDatabaseStatement) {
- return Optional.of(new
DropDatabaseBackendHandler((DropDatabaseStatement) sqlStatement,
backendConnection));
+ return new DropDatabaseBackendHandler((DropDatabaseStatement)
sqlStatement, backendConnection);
}
- return Optional.of(new RDLBackendHandler<>(sqlStatement,
backendConnection, getRuleConfigurationClass(sqlStatement)));
+ return new RDLBackendHandler<>(sqlStatement, backendConnection,
getRuleConfigurationClass(sqlStatement));
}
private static Class<? extends RuleConfiguration>
getRuleConfigurationClass(final SQLStatement sqlStatement) {
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/DistSQLBackendHandlerFactoryTest.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/DistSQLBackendHandlerFactoryTest.java
index 5d4dd83..37cc996 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/DistSQLBackendHandlerFactoryTest.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/DistSQLBackendHandlerFactoryTest.java
@@ -18,11 +18,7 @@
package org.apache.shardingsphere.proxy.backend.text.distsql;
import lombok.SneakyThrows;
-import
org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.AlterReadwriteSplittingRuleStatement;
import
org.apache.shardingsphere.distsql.parser.statement.rdl.create.AddResourceStatement;
-import
org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.CreateReadwriteSplittingRuleStatement;
-import
org.apache.shardingsphere.sharding.distsql.parser.statement.CreateShardingTableRuleStatement;
-import
org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.DropReadwriteSplittingRuleStatement;
import
org.apache.shardingsphere.distsql.parser.statement.rdl.drop.DropResourceStatement;
import
org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowResourcesStatement;
import
org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
@@ -39,9 +35,12 @@ import
org.apache.shardingsphere.proxy.backend.exception.ReadwriteSplittingRuleN
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.update.UpdateResponseHeader;
-import org.apache.shardingsphere.proxy.backend.text.TextProtocolBackendHandler;
import
org.apache.shardingsphere.proxy.backend.text.distsql.rdl.RDLBackendHandlerFactory;
import
org.apache.shardingsphere.proxy.backend.text.distsql.rql.RQLBackendHandlerFactory;
+import
org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.AlterReadwriteSplittingRuleStatement;
+import
org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.CreateReadwriteSplittingRuleStatement;
+import
org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.DropReadwriteSplittingRuleStatement;
+import
org.apache.shardingsphere.sharding.distsql.parser.statement.CreateShardingTableRuleStatement;
import
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateDatabaseStatement;
import
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropDatabaseStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.ddl.MySQLCreateDatabaseStatement;
@@ -56,14 +55,12 @@ 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.ArgumentMatchers.any;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
@@ -99,9 +96,7 @@ public final class DistSQLBackendHandlerFactoryTest {
assertThat(ex.getMessage(), is(String.format("No Registry center
to execute `%s` SQL", sqlStatement.getClass().getSimpleName())));
}
setGovernanceMetaDataContexts(true);
- Optional<TextProtocolBackendHandler> rdlBackendHandler =
RDLBackendHandlerFactory.newInstance(new MySQLDatabaseType(), sqlStatement,
connection);
- assertTrue(rdlBackendHandler.isPresent());
- ResponseHeader response = rdlBackendHandler.get().execute();
+ ResponseHeader response = RDLBackendHandlerFactory.newInstance(new
MySQLDatabaseType(), sqlStatement, connection).execute();
assertThat(response, instanceOf(UpdateResponseHeader.class));
}
@@ -125,9 +120,7 @@ public final class DistSQLBackendHandlerFactoryTest {
assertThat(ex.getMessage(), is(String.format("No Registry center
to execute `%s` SQL", sqlStatement.getClass().getSimpleName())));
}
setGovernanceMetaDataContexts(true);
- Optional<TextProtocolBackendHandler> rdlBackendHandler =
RDLBackendHandlerFactory.newInstance(new MySQLDatabaseType(), sqlStatement,
connection);
- assertTrue(rdlBackendHandler.isPresent());
- ResponseHeader response = rdlBackendHandler.get().execute();
+ ResponseHeader response = RDLBackendHandlerFactory.newInstance(new
MySQLDatabaseType(), sqlStatement, connection).execute();
assertThat(response, instanceOf(UpdateResponseHeader.class));
}
@@ -174,9 +167,7 @@ public final class DistSQLBackendHandlerFactoryTest {
assertThat(ex.getMessage(), is("No Registry center to execute
`AddResourceStatement` SQL"));
}
setGovernanceMetaDataContexts(true);
- Optional<TextProtocolBackendHandler> rdlBackendHandler =
RDLBackendHandlerFactory.newInstance(new MySQLDatabaseType(),
mock(AddResourceStatement.class), connection);
- assertTrue(rdlBackendHandler.isPresent());
- ResponseHeader response = rdlBackendHandler.get().execute();
+ ResponseHeader response = RDLBackendHandlerFactory.newInstance(new
MySQLDatabaseType(), mock(AddResourceStatement.class), connection).execute();
assertThat(response, instanceOf(UpdateResponseHeader.class));
}
@@ -190,9 +181,7 @@ public final class DistSQLBackendHandlerFactoryTest {
assertThat(ex.getMessage(), is("No Registry center to execute
`CreateShardingTableRuleStatement` SQL"));
}
setGovernanceMetaDataContexts(true);
- Optional<TextProtocolBackendHandler> rdlBackendHandler =
RDLBackendHandlerFactory.newInstance(new MySQLDatabaseType(),
mock(CreateShardingTableRuleStatement.class), connection);
- assertTrue(rdlBackendHandler.isPresent());
- ResponseHeader response = rdlBackendHandler.get().execute();
+ ResponseHeader response = RDLBackendHandlerFactory.newInstance(new
MySQLDatabaseType(), mock(CreateShardingTableRuleStatement.class),
connection).execute();
assertThat(response, instanceOf(UpdateResponseHeader.class));
}
@@ -206,9 +195,7 @@ public final class DistSQLBackendHandlerFactoryTest {
assertThat(ex.getMessage(), is("No Registry center to execute
`DropResourceStatement` SQL"));
}
setGovernanceMetaDataContexts(true);
- Optional<TextProtocolBackendHandler> rdlBackendHandler =
RDLBackendHandlerFactory.newInstance(new MySQLDatabaseType(),
mock(DropResourceStatement.class), connection);
- assertTrue(rdlBackendHandler.isPresent());
- ResponseHeader response = rdlBackendHandler.get().execute();
+ ResponseHeader response = RDLBackendHandlerFactory.newInstance(new
MySQLDatabaseType(), mock(DropResourceStatement.class), connection).execute();
assertThat(response, instanceOf(UpdateResponseHeader.class));
}
@@ -222,9 +209,7 @@ public final class DistSQLBackendHandlerFactoryTest {
assertThat(ex.getMessage(), is("No Registry center to execute
`DropReadwriteSplittingRuleStatement` SQL"));
}
setGovernanceMetaDataContexts(true);
- Optional<TextProtocolBackendHandler> rdlBackendHandler =
RDLBackendHandlerFactory.newInstance(new MySQLDatabaseType(),
mock(DropReadwriteSplittingRuleStatement.class), connection);
- assertTrue(rdlBackendHandler.isPresent());
- ResponseHeader response = rdlBackendHandler.get().execute();
+ ResponseHeader response = RDLBackendHandlerFactory.newInstance(new
MySQLDatabaseType(), mock(DropReadwriteSplittingRuleStatement.class),
connection).execute();
assertThat(response, instanceOf(UpdateResponseHeader.class));
}
@@ -238,9 +223,7 @@ public final class DistSQLBackendHandlerFactoryTest {
assertThat(ex.getMessage(), is("No Registry center to execute
`CreateReadwriteSplittingRuleStatement` SQL"));
}
setGovernanceMetaDataContexts(true);
- Optional<TextProtocolBackendHandler> rdlBackendHandler =
RDLBackendHandlerFactory.newInstance(new MySQLDatabaseType(),
mock(CreateReadwriteSplittingRuleStatement.class), connection);
- assertTrue(rdlBackendHandler.isPresent());
- ResponseHeader response = rdlBackendHandler.get().execute();
+ ResponseHeader response = RDLBackendHandlerFactory.newInstance(new
MySQLDatabaseType(), mock(CreateReadwriteSplittingRuleStatement.class),
connection).execute();
assertThat(response, instanceOf(UpdateResponseHeader.class));
}
@@ -254,9 +237,7 @@ public final class DistSQLBackendHandlerFactoryTest {
assertThat(ex.getMessage(), is("No Registry center to execute
`AlterReadwriteSplittingRuleStatement` SQL"));
}
setGovernanceMetaDataContexts(true);
- Optional<TextProtocolBackendHandler> rdlBackendHandler =
RDLBackendHandlerFactory.newInstance(new MySQLDatabaseType(),
mock(AlterReadwriteSplittingRuleStatement.class), connection);
- assertTrue(rdlBackendHandler.isPresent());
- ResponseHeader response = rdlBackendHandler.get().execute();
+ ResponseHeader response = RDLBackendHandlerFactory.newInstance(new
MySQLDatabaseType(), mock(AlterReadwriteSplittingRuleStatement.class),
connection).execute();
assertThat(response, instanceOf(UpdateResponseHeader.class));
}