This is an automated email from the ASF dual-hosted git repository.

zhangliang 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 10b32a5d34e Refactor TCLProxyBackendHandlerFactory (#36794)
10b32a5d34e is described below

commit 10b32a5d34e8b2c9d92f24daf36c9506b05cf2d6
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Oct 5 21:14:58 2025 +0800

    Refactor TCLProxyBackendHandlerFactory (#36794)
---
 .../handler/tcl/TCLProxyBackendHandlerFactory.java | 81 ++--------------------
 .../LocalTCLProxyBackendHandlerFactory.java}       | 51 ++++----------
 .../BeginTransactionProxyBackendHandler.java       |  2 +-
 .../{ => type}/CommitProxyBackendHandler.java      |  2 +-
 .../ReleaseSavepointProxyBackendHandler.java       |  2 +-
 .../{ => type}/RollbackProxyBackendHandler.java    |  2 +-
 .../RollbackSavepointProxyBackendHandler.java      |  2 +-
 .../SetAutoCommitProxyBackendHandler.java          |  2 +-
 .../SetSavepointProxyBackendHandler.java           |  2 +-
 .../SetTransactionProxyBackendHandler.java         |  2 +-
 .../tcl/xa/XATCLProxyBackendHandlerFactory.java    | 76 ++++++++++++++++++++
 .../xa/{ => type}/XABeginProxyBackendHandler.java  |  2 +-
 .../xa/{ => type}/XACommitProxyBackendHandler.java |  2 +-
 .../XAOtherOperationProxyBackendHandler.java       |  2 +-
 .../{ => type}/XARecoveryProxyBackendHandler.java  |  2 +-
 .../{ => type}/XARollbackProxyBackendHandler.java  |  2 +-
 .../handler/ProxyBackendHandlerFactoryTest.java    | 16 ++---
 .../tcl/TCLProxyBackendHandlerFactoryTest.java     |  4 +-
 18 files changed, 116 insertions(+), 138 deletions(-)

diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLProxyBackendHandlerFactory.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLProxyBackendHandlerFactory.java
index 5a75dccbacb..2ee7f2cc383 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLProxyBackendHandlerFactory.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLProxyBackendHandlerFactory.java
@@ -20,43 +20,12 @@ package org.apache.shardingsphere.proxy.backend.handler.tcl;
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
-import org.apache.shardingsphere.infra.hint.HintValueContext;
-import org.apache.shardingsphere.infra.session.query.QueryContext;
-import org.apache.shardingsphere.proxy.backend.connector.DatabaseConnector;
-import 
org.apache.shardingsphere.proxy.backend.connector.DatabaseConnectorFactory;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
 import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.BeginTransactionProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.CommitProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.ReleaseSavepointProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.RollbackProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.RollbackSavepointProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.SetAutoCommitProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.SetSavepointProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.SetTransactionProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.XABeginProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.XACommitProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.XAOtherOperationProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.XARecoveryProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.XARollbackProxyBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.LocalTCLProxyBackendHandlerFactory;
+import 
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.XATCLProxyBackendHandlerFactory;
 import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
-import 
org.apache.shardingsphere.sql.parser.statement.core.enums.OperationScope;
-import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.BeginTransactionStatement;
-import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.CommitStatement;
-import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.ReleaseSavepointStatement;
-import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.RollbackStatement;
-import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.SavepointStatement;
-import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.SetAutoCommitStatement;
-import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.SetTransactionStatement;
-import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.TCLStatement;
-import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa.XABeginStatement;
-import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa.XACommitStatement;
-import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa.XARecoveryStatement;
-import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa.XARollbackStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa.XAStatement;
 
-import java.util.Collections;
-
 /**
  * TCL proxy backend handler factory.
  */
@@ -72,48 +41,8 @@ public final class TCLProxyBackendHandlerFactory {
      * @return created instance
      */
     public static ProxyBackendHandler newInstance(final SQLStatementContext 
sqlStatementContext, final String sql, final ConnectionSession 
connectionSession) {
-        TCLStatement sqlStatement = (TCLStatement) 
sqlStatementContext.getSqlStatement();
-        if (sqlStatement instanceof BeginTransactionStatement) {
-            return new BeginTransactionProxyBackendHandler(sqlStatement, 
connectionSession);
-        }
-        if (sqlStatement instanceof SetAutoCommitStatement) {
-            return new SetAutoCommitProxyBackendHandler(sqlStatement, 
connectionSession);
-        }
-        if (sqlStatement instanceof CommitStatement) {
-            return new CommitProxyBackendHandler(sqlStatement, 
connectionSession);
-        }
-        if (sqlStatement instanceof RollbackStatement) {
-            return ((RollbackStatement) 
sqlStatement).getSavepointName().isPresent()
-                    ? new RollbackSavepointProxyBackendHandler(sqlStatement, 
connectionSession)
-                    : new RollbackProxyBackendHandler(sqlStatement, 
connectionSession);
-        }
-        if (sqlStatement instanceof SavepointStatement) {
-            return new SetSavepointProxyBackendHandler(sqlStatement, 
connectionSession);
-        }
-        if (sqlStatement instanceof ReleaseSavepointStatement) {
-            return new ReleaseSavepointProxyBackendHandler(sqlStatement, 
connectionSession);
-        }
-        if (sqlStatement instanceof SetTransactionStatement && 
!((SetTransactionStatement) 
sqlStatement).isDesiredScope(OperationScope.GLOBAL)) {
-            return new 
SetTransactionProxyBackendHandler((SetTransactionStatement) sqlStatement, 
connectionSession);
-        }
-        QueryContext queryContext = new QueryContext(sqlStatementContext, sql,
-                Collections.emptyList(), new HintValueContext(), 
connectionSession.getConnectionContext(), 
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData());
-        DatabaseConnector databaseConnector = 
DatabaseConnectorFactory.getInstance().newInstance(queryContext, 
connectionSession.getDatabaseConnectionManager(), false);
-        if (sqlStatement instanceof XARecoveryStatement) {
-            return new XARecoveryProxyBackendHandler(databaseConnector);
-        }
-        if (sqlStatement instanceof XABeginStatement) {
-            return new XABeginProxyBackendHandler(connectionSession, 
databaseConnector);
-        }
-        if (sqlStatement instanceof XACommitStatement) {
-            return new XACommitProxyBackendHandler(connectionSession, 
databaseConnector);
-        }
-        if (sqlStatement instanceof XARollbackStatement) {
-            return new XARollbackProxyBackendHandler(connectionSession, 
databaseConnector);
-        }
-        if (sqlStatement instanceof XAStatement) {
-            return new XAOtherOperationProxyBackendHandler(databaseConnector);
-        }
-        return 
DatabaseConnectorFactory.getInstance().newInstance(queryContext, 
connectionSession.getDatabaseConnectionManager(), false);
+        return sqlStatementContext.getSqlStatement() instanceof XAStatement
+                ? 
XATCLProxyBackendHandlerFactory.newInstance(sqlStatementContext, sql, 
connectionSession)
+                : 
LocalTCLProxyBackendHandlerFactory.newInstance(sqlStatementContext, sql, 
connectionSession);
     }
 }
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLProxyBackendHandlerFactory.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/LocalTCLProxyBackendHandlerFactory.java
similarity index 67%
copy from 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLProxyBackendHandlerFactory.java
copy to 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/LocalTCLProxyBackendHandlerFactory.java
index 5a75dccbacb..217f5c0c989 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLProxyBackendHandlerFactory.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/LocalTCLProxyBackendHandlerFactory.java
@@ -15,30 +15,24 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.handler.tcl;
+package org.apache.shardingsphere.proxy.backend.handler.tcl.local;
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
 import org.apache.shardingsphere.infra.hint.HintValueContext;
 import org.apache.shardingsphere.infra.session.query.QueryContext;
-import org.apache.shardingsphere.proxy.backend.connector.DatabaseConnector;
 import 
org.apache.shardingsphere.proxy.backend.connector.DatabaseConnectorFactory;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
 import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.BeginTransactionProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.CommitProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.ReleaseSavepointProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.RollbackProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.RollbackSavepointProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.SetAutoCommitProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.SetSavepointProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.SetTransactionProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.XABeginProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.XACommitProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.XAOtherOperationProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.XARecoveryProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.XARollbackProxyBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.BeginTransactionProxyBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.CommitProxyBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.ReleaseSavepointProxyBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.RollbackProxyBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.RollbackSavepointProxyBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.SetAutoCommitProxyBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.SetSavepointProxyBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.SetTransactionProxyBackendHandler;
 import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
 import 
org.apache.shardingsphere.sql.parser.statement.core.enums.OperationScope;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.BeginTransactionStatement;
@@ -49,22 +43,17 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.Sa
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.SetAutoCommitStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.SetTransactionStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.TCLStatement;
-import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa.XABeginStatement;
-import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa.XACommitStatement;
-import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa.XARecoveryStatement;
-import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa.XARollbackStatement;
-import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa.XAStatement;
 
 import java.util.Collections;
 
 /**
- * TCL proxy backend handler factory.
+ * Local TCL proxy backend handler factory.
  */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class TCLProxyBackendHandlerFactory {
+public final class LocalTCLProxyBackendHandlerFactory {
     
     /**
-     * New instance of TCL proxy backend handler.
+     * New instance of local TCL proxy backend handler.
      *
      * @param sqlStatementContext SQL statement context
      * @param sql SQL
@@ -98,22 +87,6 @@ public final class TCLProxyBackendHandlerFactory {
         }
         QueryContext queryContext = new QueryContext(sqlStatementContext, sql,
                 Collections.emptyList(), new HintValueContext(), 
connectionSession.getConnectionContext(), 
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData());
-        DatabaseConnector databaseConnector = 
DatabaseConnectorFactory.getInstance().newInstance(queryContext, 
connectionSession.getDatabaseConnectionManager(), false);
-        if (sqlStatement instanceof XARecoveryStatement) {
-            return new XARecoveryProxyBackendHandler(databaseConnector);
-        }
-        if (sqlStatement instanceof XABeginStatement) {
-            return new XABeginProxyBackendHandler(connectionSession, 
databaseConnector);
-        }
-        if (sqlStatement instanceof XACommitStatement) {
-            return new XACommitProxyBackendHandler(connectionSession, 
databaseConnector);
-        }
-        if (sqlStatement instanceof XARollbackStatement) {
-            return new XARollbackProxyBackendHandler(connectionSession, 
databaseConnector);
-        }
-        if (sqlStatement instanceof XAStatement) {
-            return new XAOtherOperationProxyBackendHandler(databaseConnector);
-        }
         return 
DatabaseConnectorFactory.getInstance().newInstance(queryContext, 
connectionSession.getDatabaseConnectionManager(), false);
     }
 }
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/BeginTransactionProxyBackendHandler.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/BeginTransactionProxyBackendHandler.java
similarity index 99%
rename from 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/BeginTransactionProxyBackendHandler.java
rename to 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/BeginTransactionProxyBackendHandler.java
index 0c898c0adf2..eae52653b7f 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/BeginTransactionProxyBackendHandler.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/BeginTransactionProxyBackendHandler.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.handler.tcl.local;
+package org.apache.shardingsphere.proxy.backend.handler.tcl.local.type;
 
 import 
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
 import 
org.apache.shardingsphere.database.connector.core.type.DatabaseTypeRegistry;
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/CommitProxyBackendHandler.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/CommitProxyBackendHandler.java
similarity index 99%
rename from 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/CommitProxyBackendHandler.java
rename to 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/CommitProxyBackendHandler.java
index 6cf2e0ff70c..ed48fe972e5 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/CommitProxyBackendHandler.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/CommitProxyBackendHandler.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.handler.tcl.local;
+package org.apache.shardingsphere.proxy.backend.handler.tcl.local.type;
 
 import 
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
 import 
org.apache.shardingsphere.database.connector.core.type.DatabaseTypeRegistry;
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/ReleaseSavepointProxyBackendHandler.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/ReleaseSavepointProxyBackendHandler.java
similarity index 99%
rename from 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/ReleaseSavepointProxyBackendHandler.java
rename to 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/ReleaseSavepointProxyBackendHandler.java
index 27e97f84a5e..1d24f3b48c5 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/ReleaseSavepointProxyBackendHandler.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/ReleaseSavepointProxyBackendHandler.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.handler.tcl.local;
+package org.apache.shardingsphere.proxy.backend.handler.tcl.local.type;
 
 import 
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
 import 
org.apache.shardingsphere.database.connector.core.type.DatabaseTypeRegistry;
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/RollbackProxyBackendHandler.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/RollbackProxyBackendHandler.java
similarity index 99%
rename from 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/RollbackProxyBackendHandler.java
rename to 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/RollbackProxyBackendHandler.java
index 3a664dc1ca8..08995730e6b 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/RollbackProxyBackendHandler.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/RollbackProxyBackendHandler.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.handler.tcl.local;
+package org.apache.shardingsphere.proxy.backend.handler.tcl.local.type;
 
 import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.ProxyBackendTransactionManager;
 import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/RollbackSavepointProxyBackendHandler.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/RollbackSavepointProxyBackendHandler.java
similarity index 99%
rename from 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/RollbackSavepointProxyBackendHandler.java
rename to 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/RollbackSavepointProxyBackendHandler.java
index 538bd3a335c..8516f1c6fb9 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/RollbackSavepointProxyBackendHandler.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/RollbackSavepointProxyBackendHandler.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.handler.tcl.local;
+package org.apache.shardingsphere.proxy.backend.handler.tcl.local.type;
 
 import 
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
 import 
org.apache.shardingsphere.database.connector.core.type.DatabaseTypeRegistry;
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/SetAutoCommitProxyBackendHandler.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/SetAutoCommitProxyBackendHandler.java
similarity index 99%
rename from 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/SetAutoCommitProxyBackendHandler.java
rename to 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/SetAutoCommitProxyBackendHandler.java
index 592e329b517..7a438ec8008 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/SetAutoCommitProxyBackendHandler.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/SetAutoCommitProxyBackendHandler.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.handler.tcl.local;
+package org.apache.shardingsphere.proxy.backend.handler.tcl.local.type;
 
 import 
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
 import 
org.apache.shardingsphere.database.connector.core.type.DatabaseTypeRegistry;
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/SetSavepointProxyBackendHandler.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/SetSavepointProxyBackendHandler.java
similarity index 99%
rename from 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/SetSavepointProxyBackendHandler.java
rename to 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/SetSavepointProxyBackendHandler.java
index 64e8990507c..fb5ae6e9c55 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/SetSavepointProxyBackendHandler.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/SetSavepointProxyBackendHandler.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.handler.tcl.local;
+package org.apache.shardingsphere.proxy.backend.handler.tcl.local.type;
 
 import 
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
 import 
org.apache.shardingsphere.database.connector.core.type.DatabaseTypeRegistry;
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/SetTransactionProxyBackendHandler.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/SetTransactionProxyBackendHandler.java
similarity index 99%
rename from 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/SetTransactionProxyBackendHandler.java
rename to 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/SetTransactionProxyBackendHandler.java
index 278bf43489b..4d9be1298a4 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/SetTransactionProxyBackendHandler.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/SetTransactionProxyBackendHandler.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.handler.tcl.local;
+package org.apache.shardingsphere.proxy.backend.handler.tcl.local.type;
 
 import 
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
 import 
org.apache.shardingsphere.database.connector.core.type.DatabaseTypeRegistry;
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XATCLProxyBackendHandlerFactory.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XATCLProxyBackendHandlerFactory.java
new file mode 100644
index 00000000000..69d2be8bad4
--- /dev/null
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XATCLProxyBackendHandlerFactory.java
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.proxy.backend.handler.tcl.xa;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
+import org.apache.shardingsphere.infra.hint.HintValueContext;
+import org.apache.shardingsphere.infra.session.query.QueryContext;
+import org.apache.shardingsphere.proxy.backend.connector.DatabaseConnector;
+import 
org.apache.shardingsphere.proxy.backend.connector.DatabaseConnectorFactory;
+import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
+import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.type.XABeginProxyBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.type.XACommitProxyBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.type.XAOtherOperationProxyBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.type.XARecoveryProxyBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.type.XARollbackProxyBackendHandler;
+import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
+import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa.XABeginStatement;
+import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa.XACommitStatement;
+import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa.XARecoveryStatement;
+import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa.XARollbackStatement;
+import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa.XAStatement;
+
+import java.util.Collections;
+
+/**
+ * XA TCL proxy backend handler factory.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class XATCLProxyBackendHandlerFactory {
+    
+    /**
+     * New instance of XA TCL proxy backend handler.
+     *
+     * @param sqlStatementContext SQL statement context
+     * @param sql SQL
+     * @param connectionSession connection session
+     * @return created instance
+     */
+    public static ProxyBackendHandler newInstance(final SQLStatementContext 
sqlStatementContext, final String sql, final ConnectionSession 
connectionSession) {
+        XAStatement sqlStatement = (XAStatement) 
sqlStatementContext.getSqlStatement();
+        QueryContext queryContext = new QueryContext(sqlStatementContext, sql,
+                Collections.emptyList(), new HintValueContext(), 
connectionSession.getConnectionContext(), 
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData());
+        DatabaseConnector databaseConnector = 
DatabaseConnectorFactory.getInstance().newInstance(queryContext, 
connectionSession.getDatabaseConnectionManager(), false);
+        if (sqlStatement instanceof XARecoveryStatement) {
+            return new XARecoveryProxyBackendHandler(databaseConnector);
+        }
+        if (sqlStatement instanceof XABeginStatement) {
+            return new XABeginProxyBackendHandler(connectionSession, 
databaseConnector);
+        }
+        if (sqlStatement instanceof XACommitStatement) {
+            return new XACommitProxyBackendHandler(connectionSession, 
databaseConnector);
+        }
+        if (sqlStatement instanceof XARollbackStatement) {
+            return new XARollbackProxyBackendHandler(connectionSession, 
databaseConnector);
+        }
+        return new XAOtherOperationProxyBackendHandler(databaseConnector);
+    }
+}
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XABeginProxyBackendHandler.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XABeginProxyBackendHandler.java
similarity index 97%
rename from 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XABeginProxyBackendHandler.java
rename to 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XABeginProxyBackendHandler.java
index 48d10afcba9..261ea7f52a9 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XABeginProxyBackendHandler.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XABeginProxyBackendHandler.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.handler.tcl.xa;
+package org.apache.shardingsphere.proxy.backend.handler.tcl.xa.type;
 
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.exception.ShardingSpherePreconditions;
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XACommitProxyBackendHandler.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XACommitProxyBackendHandler.java
similarity index 96%
rename from 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XACommitProxyBackendHandler.java
rename to 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XACommitProxyBackendHandler.java
index ca31f2fb18f..19592508342 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XACommitProxyBackendHandler.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XACommitProxyBackendHandler.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.handler.tcl.xa;
+package org.apache.shardingsphere.proxy.backend.handler.tcl.xa.type;
 
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.proxy.backend.connector.DatabaseConnector;
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XAOtherOperationProxyBackendHandler.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XAOtherOperationProxyBackendHandler.java
similarity index 95%
rename from 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XAOtherOperationProxyBackendHandler.java
rename to 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XAOtherOperationProxyBackendHandler.java
index f531ce14681..97a8fd0780e 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XAOtherOperationProxyBackendHandler.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XAOtherOperationProxyBackendHandler.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.handler.tcl.xa;
+package org.apache.shardingsphere.proxy.backend.handler.tcl.xa.type;
 
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.proxy.backend.connector.DatabaseConnector;
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XARecoveryProxyBackendHandler.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XARecoveryProxyBackendHandler.java
similarity index 96%
rename from 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XARecoveryProxyBackendHandler.java
rename to 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XARecoveryProxyBackendHandler.java
index eec8178d535..5fd2ca99220 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XARecoveryProxyBackendHandler.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XARecoveryProxyBackendHandler.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.handler.tcl.xa;
+package org.apache.shardingsphere.proxy.backend.handler.tcl.xa.type;
 
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.proxy.backend.connector.DatabaseConnector;
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XARollbackProxyBackendHandler.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XARollbackProxyBackendHandler.java
similarity index 96%
rename from 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XARollbackProxyBackendHandler.java
rename to 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XARollbackProxyBackendHandler.java
index f43ae271368..c53bbf7d86b 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XARollbackProxyBackendHandler.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XARollbackProxyBackendHandler.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.handler.tcl.xa;
+package org.apache.shardingsphere.proxy.backend.handler.tcl.xa.type;
 
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.proxy.backend.connector.DatabaseConnector;
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java
index d77c42c41fe..c8a81c74ea4 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java
@@ -43,14 +43,14 @@ import 
org.apache.shardingsphere.proxy.backend.handler.data.impl.UnicastDatabase
 import 
org.apache.shardingsphere.proxy.backend.handler.distsql.DistSQLQueryBackendHandler;
 import 
org.apache.shardingsphere.proxy.backend.handler.distsql.DistSQLUpdateBackendHandler;
 import org.apache.shardingsphere.proxy.backend.handler.skip.SkipBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.BeginTransactionProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.CommitProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.ReleaseSavepointProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.RollbackProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.RollbackSavepointProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.SetAutoCommitProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.SetSavepointProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.SetTransactionProxyBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.BeginTransactionProxyBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.CommitProxyBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.ReleaseSavepointProxyBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.RollbackProxyBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.RollbackSavepointProxyBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.SetAutoCommitProxyBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.SetSavepointProxyBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.SetTransactionProxyBackendHandler;
 import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dal.EmptyStatement;
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLProxyBackendHandlerFactoryTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLProxyBackendHandlerFactoryTest.java
index 1c95c3df31b..83f754aecce 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLProxyBackendHandlerFactoryTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLProxyBackendHandlerFactoryTest.java
@@ -34,8 +34,8 @@ import 
org.apache.shardingsphere.proxy.backend.connector.ProxyDatabaseConnection
 import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.ProxyBackendTransactionManager;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
 import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.CommitProxyBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.RollbackProxyBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.CommitProxyBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.RollbackProxyBackendHandler;
 import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.CommitStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.RollbackStatement;


Reply via email to