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));
     }
     

Reply via email to