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

zhonghongsheng 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 6be64dbef63 Refactor ErrorPacketFactory (#28137)
6be64dbef63 is described below

commit 6be64dbef63bb17fe28d8923bb4ddaaf5d405e99
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Aug 17 13:40:45 2023 +0800

    Refactor ErrorPacketFactory (#28137)
---
 .../proxy/frontend/mysql/err/MySQLErrorPacketFactory.java        | 4 +++-
 .../frontend/opengauss/err/OpenGaussErrorPacketFactory.java      | 8 +++-----
 .../frontend/postgresql/err/PostgreSQLErrorPacketFactory.java    | 9 ++++-----
 3 files changed, 10 insertions(+), 11 deletions(-)

diff --git 
a/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/err/MySQLErrorPacketFactory.java
 
b/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/err/MySQLErrorPacketFactory.java
index ba938d756c9..e7b76b99714 100644
--- 
a/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/err/MySQLErrorPacketFactory.java
+++ 
b/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/err/MySQLErrorPacketFactory.java
@@ -34,6 +34,8 @@ import java.sql.SQLException;
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 public final class MySQLErrorPacketFactory {
     
+    private static final DatabaseType DATABASE_TYPE = 
TypedSPILoader.getService(DatabaseType.class, "MySQL");
+    
     /**
      * Create new instance of MySQL error packet.
      *
@@ -41,7 +43,7 @@ public final class MySQLErrorPacketFactory {
      * @return created instance
      */
     public static MySQLErrPacket newInstance(final Exception cause) {
-        SQLException sqlException = 
SQLExceptionTransformEngine.toSQLException(cause, 
TypedSPILoader.getService(DatabaseType.class, "MySQL"));
+        SQLException sqlException = 
SQLExceptionTransformEngine.toSQLException(cause, DATABASE_TYPE);
         return null == sqlException.getSQLState() ? new 
MySQLErrPacket(MySQLVendorError.ER_INTERNAL_ERROR, 
getErrorMessage(sqlException)) : new MySQLErrPacket(sqlException);
     }
     
diff --git 
a/proxy/frontend/type/opengauss/src/main/java/org/apache/shardingsphere/proxy/frontend/opengauss/err/OpenGaussErrorPacketFactory.java
 
b/proxy/frontend/type/opengauss/src/main/java/org/apache/shardingsphere/proxy/frontend/opengauss/err/OpenGaussErrorPacketFactory.java
index 400ed58d9f2..cce64c7e172 100644
--- 
a/proxy/frontend/type/opengauss/src/main/java/org/apache/shardingsphere/proxy/frontend/opengauss/err/OpenGaussErrorPacketFactory.java
+++ 
b/proxy/frontend/type/opengauss/src/main/java/org/apache/shardingsphere/proxy/frontend/opengauss/err/OpenGaussErrorPacketFactory.java
@@ -39,6 +39,8 @@ import java.util.Optional;
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 public final class OpenGaussErrorPacketFactory {
     
+    private static final DatabaseType DATABASE_TYPE = 
TypedSPILoader.getService(DatabaseType.class, "PostgreSQL");
+    
     /**
      * Create new instance of openGauss error packet.
      *
@@ -47,11 +49,7 @@ public final class OpenGaussErrorPacketFactory {
      */
     public static OpenGaussErrorResponsePacket newInstance(final Exception 
cause) {
         Optional<ServerErrorMessage> serverErrorMessage = 
findServerErrorMessage(cause);
-        if (serverErrorMessage.isPresent()) {
-            return new OpenGaussErrorResponsePacket(serverErrorMessage.get());
-        }
-        SQLException sqlException = 
SQLExceptionTransformEngine.toSQLException(cause, 
TypedSPILoader.getService(DatabaseType.class, "PostgreSQL"));
-        return createErrorResponsePacket(sqlException);
+        return 
serverErrorMessage.map(OpenGaussErrorResponsePacket::new).orElseGet(() -> 
createErrorResponsePacket(SQLExceptionTransformEngine.toSQLException(cause, 
DATABASE_TYPE)));
     }
     
     private static Optional<ServerErrorMessage> findServerErrorMessage(final 
Exception cause) {
diff --git 
a/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/err/PostgreSQLErrorPacketFactory.java
 
b/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/err/PostgreSQLErrorPacketFactory.java
index 26605e10b3d..3815e41526e 100644
--- 
a/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/err/PostgreSQLErrorPacketFactory.java
+++ 
b/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/err/PostgreSQLErrorPacketFactory.java
@@ -40,6 +40,8 @@ import java.util.Optional;
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 public final class PostgreSQLErrorPacketFactory {
     
+    private static final DatabaseType DATABASE_TYPE = 
TypedSPILoader.getService(DatabaseType.class, "PostgreSQL");
+    
     /**
      * Create new instance of PostgreSQL error packet.
      * 
@@ -48,11 +50,8 @@ public final class PostgreSQLErrorPacketFactory {
      */
     public static PostgreSQLErrorResponsePacket newInstance(final Exception 
cause) {
         Optional<ServerErrorMessage> serverErrorMessage = 
findServerErrorMessage(cause);
-        if (serverErrorMessage.isPresent()) {
-            return createErrorResponsePacket(serverErrorMessage.get());
-        }
-        SQLException sqlException = 
SQLExceptionTransformEngine.toSQLException(cause, 
TypedSPILoader.getService(DatabaseType.class, "PostgreSQL"));
-        return createErrorResponsePacket(sqlException);
+        return 
serverErrorMessage.map(PostgreSQLErrorPacketFactory::createErrorResponsePacket)
+                .orElseGet(() -> 
createErrorResponsePacket(SQLExceptionTransformEngine.toSQLException(cause, 
DATABASE_TYPE)));
     }
     
     private static Optional<ServerErrorMessage> findServerErrorMessage(final 
Exception cause) {

Reply via email to