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 <[email protected]>
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));
     }
     

Reply via email to