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 390425aeafd Refactor MySQLBinlogUnsignedNumberHandler (#32553)
390425aeafd is described below

commit 390425aeafdbe05ec6a3a38548c9beb202a88cc5
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Aug 16 13:03:52 2024 +0800

    Refactor MySQLBinlogUnsignedNumberHandler (#32553)
    
    * Refactor MySQLBinlogBinaryStringHandler
    
    * Refactor MySQLBinlogUnsignedNumberHandler
---
 .../mysql/ingest/dumper/type/MySQLBinlogDataHandler.java         | 2 +-
 .../dumper/type/binary/MySQLBinlogBinaryStringHandler.java       | 4 ++--
 .../dumper/type/unsigned/MySQLBinlogUnsignedNumberHandler.java   | 6 ++++--
 .../type/unsigned/MySQLBinlogUnsignedNumberHandlerEngine.java    | 2 ++
 .../type/unsigned/impl/MySQLBinlogUnsignedBigintHandler.java     | 8 +++-----
 .../dumper/type/unsigned/impl/MySQLBinlogUnsignedIntHandler.java | 9 +++------
 .../type/unsigned/impl/MySQLBinlogUnsignedMediumintHandler.java  | 9 +++------
 .../type/unsigned/impl/MySQLBinlogUnsignedSmallintHandler.java   | 9 +++------
 .../type/unsigned/impl/MySQLBinlogUnsignedTinyintHandler.java    | 9 +++------
 9 files changed, 24 insertions(+), 34 deletions(-)

diff --git 
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/MySQLBinlogDataHandler.java
 
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/MySQLBinlogDataHandler.java
index b2c986a4253..d88384d4e25 100644
--- 
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/MySQLBinlogDataHandler.java
+++ 
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/MySQLBinlogDataHandler.java
@@ -44,7 +44,7 @@ public final class MySQLBinlogDataHandler {
             return null;
         }
         if (value instanceof MySQLBinaryString) {
-            return MySQLBinlogBinaryStringHandler.handle(columnMetaData, 
value);
+            return MySQLBinlogBinaryStringHandler.handle(columnMetaData, 
(MySQLBinaryString) value);
         }
         Optional<Serializable> result = 
MySQLBinlogUnsignedNumberHandlerEngine.handle(columnMetaData, value);
         return result.orElse(value);
diff --git 
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/binary/MySQLBinlogBinaryStringHandler.java
 
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/binary/MySQLBinlogBinaryStringHandler.java
index 83d16e2c692..d06f5b3e439 100644
--- 
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/binary/MySQLBinlogBinaryStringHandler.java
+++ 
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/binary/MySQLBinlogBinaryStringHandler.java
@@ -38,7 +38,7 @@ public final class MySQLBinlogBinaryStringHandler {
      * @param value to be handled value
      * @return handled value
      */
-    public static Serializable handle(final PipelineColumnMetaData 
columnMetaData, final Serializable value) {
-        return PipelineJdbcUtils.isBinaryColumn(columnMetaData.getDataType()) 
? ((MySQLBinaryString) value).getBytes() : new String(((MySQLBinaryString) 
value).getBytes(), Charset.defaultCharset());
+    public static Serializable handle(final PipelineColumnMetaData 
columnMetaData, final MySQLBinaryString value) {
+        return PipelineJdbcUtils.isBinaryColumn(columnMetaData.getDataType()) 
? value.getBytes() : new String(value.getBytes(), Charset.defaultCharset());
     }
 }
diff --git 
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/MySQLBinlogUnsignedNumberHandler.java
 
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/MySQLBinlogUnsignedNumberHandler.java
index c730195d568..4c9590f4f72 100644
--- 
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/MySQLBinlogUnsignedNumberHandler.java
+++ 
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/MySQLBinlogUnsignedNumberHandler.java
@@ -21,8 +21,10 @@ import java.io.Serializable;
 
 /**
  * MySQL binlog unsigned number handler.
+ * 
+ * @param <T> type of value
  */
-public interface MySQLBinlogUnsignedNumberHandler {
+public interface MySQLBinlogUnsignedNumberHandler<T extends Serializable> {
     
     /**
      * Handle unsigned number value.
@@ -30,5 +32,5 @@ public interface MySQLBinlogUnsignedNumberHandler {
      * @param value to be handled value
      * @return handled value
      */
-    Serializable handle(Serializable value);
+    Number handle(T value);
 }
diff --git 
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/MySQLBinlogUnsignedNumberHandlerEngine.java
 
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/MySQLBinlogUnsignedNumberHandlerEngine.java
index 29ef481f239..62628a6e3ad 100644
--- 
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/MySQLBinlogUnsignedNumberHandlerEngine.java
+++ 
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/MySQLBinlogUnsignedNumberHandlerEngine.java
@@ -36,6 +36,7 @@ import java.util.Optional;
 @NoArgsConstructor(access = lombok.AccessLevel.PRIVATE)
 public final class MySQLBinlogUnsignedNumberHandlerEngine {
     
+    @SuppressWarnings("rawtypes")
     private static final Map<String, MySQLBinlogUnsignedNumberHandler> 
HANDLERS = new HashMap<>();
     
     static {
@@ -53,6 +54,7 @@ public final class MySQLBinlogUnsignedNumberHandlerEngine {
      * @param value column value
      * @return handled column value
      */
+    @SuppressWarnings("unchecked")
     public static Optional<Serializable> handle(final PipelineColumnMetaData 
columnMetaData, final Serializable value) {
         String dataTypeName = columnMetaData.getDataTypeName();
         return HANDLERS.containsKey(dataTypeName) ? 
Optional.of(HANDLERS.get(dataTypeName).handle(value)) : Optional.empty();
diff --git 
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedBigintHandler.java
 
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedBigintHandler.java
index 2872c476ac0..0c39bef3070 100644
--- 
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedBigintHandler.java
+++ 
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedBigintHandler.java
@@ -19,19 +19,17 @@ package 
org.apache.shardingsphere.data.pipeline.mysql.ingest.dumper.type.unsigne
 
 import 
org.apache.shardingsphere.data.pipeline.mysql.ingest.dumper.type.unsigned.MySQLBinlogUnsignedNumberHandler;
 
-import java.io.Serializable;
 import java.math.BigInteger;
 
 /**
  * MySQL binlog unsigned bigint handler.
  */
-public final class MySQLBinlogUnsignedBigintHandler implements 
MySQLBinlogUnsignedNumberHandler {
+public final class MySQLBinlogUnsignedBigintHandler implements 
MySQLBinlogUnsignedNumberHandler<Long> {
     
     private static final BigInteger BIGINT_MODULO = new 
BigInteger("18446744073709551616");
     
     @Override
-    public Serializable handle(final Serializable value) {
-        long longValue = (long) value;
-        return longValue < 0L ? 
BIGINT_MODULO.add(BigInteger.valueOf(longValue)) : longValue;
+    public Number handle(final Long value) {
+        return value < 0L ? BIGINT_MODULO.add(BigInteger.valueOf(value)) : 
value;
     }
 }
diff --git 
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedIntHandler.java
 
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedIntHandler.java
index 991f02606ce..8f810fac443 100644
--- 
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedIntHandler.java
+++ 
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedIntHandler.java
@@ -19,18 +19,15 @@ package 
org.apache.shardingsphere.data.pipeline.mysql.ingest.dumper.type.unsigne
 
 import 
org.apache.shardingsphere.data.pipeline.mysql.ingest.dumper.type.unsigned.MySQLBinlogUnsignedNumberHandler;
 
-import java.io.Serializable;
-
 /**
  * MySQL binlog unsigned int handler.
  */
-public final class MySQLBinlogUnsignedIntHandler implements 
MySQLBinlogUnsignedNumberHandler {
+public final class MySQLBinlogUnsignedIntHandler implements 
MySQLBinlogUnsignedNumberHandler<Integer> {
     
     private static final long INT_MODULO = 4294967296L;
     
     @Override
-    public Serializable handle(final Serializable value) {
-        int intValue = (int) value;
-        return intValue < 0 ? INT_MODULO + intValue : intValue;
+    public Number handle(final Integer value) {
+        return value < 0 ? INT_MODULO + value : value;
     }
 }
diff --git 
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedMediumintHandler.java
 
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedMediumintHandler.java
index 674e308613e..bdf8eaabbe7 100644
--- 
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedMediumintHandler.java
+++ 
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedMediumintHandler.java
@@ -19,18 +19,15 @@ package 
org.apache.shardingsphere.data.pipeline.mysql.ingest.dumper.type.unsigne
 
 import 
org.apache.shardingsphere.data.pipeline.mysql.ingest.dumper.type.unsigned.MySQLBinlogUnsignedNumberHandler;
 
-import java.io.Serializable;
-
 /**
  * MySQL binlog unsigned mediumint handler.
  */
-public final class MySQLBinlogUnsignedMediumintHandler implements 
MySQLBinlogUnsignedNumberHandler {
+public final class MySQLBinlogUnsignedMediumintHandler implements 
MySQLBinlogUnsignedNumberHandler<Integer> {
     
     private static final int MEDIUMINT_MODULO = 16777216;
     
     @Override
-    public Serializable handle(final Serializable value) {
-        int intValue = (int) value;
-        return intValue < 0 ? MEDIUMINT_MODULO + intValue : intValue;
+    public Number handle(final Integer value) {
+        return value < 0 ? MEDIUMINT_MODULO + value : value;
     }
 }
diff --git 
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedSmallintHandler.java
 
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedSmallintHandler.java
index 8f1bde0cfd0..ba9aa715cb7 100644
--- 
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedSmallintHandler.java
+++ 
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedSmallintHandler.java
@@ -19,18 +19,15 @@ package 
org.apache.shardingsphere.data.pipeline.mysql.ingest.dumper.type.unsigne
 
 import 
org.apache.shardingsphere.data.pipeline.mysql.ingest.dumper.type.unsigned.MySQLBinlogUnsignedNumberHandler;
 
-import java.io.Serializable;
-
 /**
  * MySQL binlog unsigned smallint handler.
  */
-public final class MySQLBinlogUnsignedSmallintHandler implements 
MySQLBinlogUnsignedNumberHandler {
+public final class MySQLBinlogUnsignedSmallintHandler implements 
MySQLBinlogUnsignedNumberHandler<Short> {
     
     private static final int SMALLINT_MODULO = 65536;
     
     @Override
-    public Serializable handle(final Serializable value) {
-        short shortValue = (short) value;
-        return shortValue < 0 ? SMALLINT_MODULO + shortValue : shortValue;
+    public Number handle(final Short value) {
+        return value < 0 ? SMALLINT_MODULO + value : value;
     }
 }
diff --git 
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedTinyintHandler.java
 
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedTinyintHandler.java
index 9a1ccd3291a..de3bb28e088 100644
--- 
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedTinyintHandler.java
+++ 
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedTinyintHandler.java
@@ -19,18 +19,15 @@ package 
org.apache.shardingsphere.data.pipeline.mysql.ingest.dumper.type.unsigne
 
 import 
org.apache.shardingsphere.data.pipeline.mysql.ingest.dumper.type.unsigned.MySQLBinlogUnsignedNumberHandler;
 
-import java.io.Serializable;
-
 /**
  * MySQL binlog unsigned tinyint handler.
  */
-public final class MySQLBinlogUnsignedTinyintHandler implements 
MySQLBinlogUnsignedNumberHandler {
+public final class MySQLBinlogUnsignedTinyintHandler implements 
MySQLBinlogUnsignedNumberHandler<Byte> {
     
     private static final int TINYINT_MODULO = 256;
     
     @Override
-    public Serializable handle(final Serializable value) {
-        byte byteValue = (byte) value;
-        return byteValue < 0 ? TINYINT_MODULO + byteValue : byteValue;
+    public Number handle(final Byte value) {
+        return value < 0 ? TINYINT_MODULO + value : value;
     }
 }

Reply via email to