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

chaokunyang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-fury.git


The following commit(s) were added to refs/heads/main by this push:
     new 33e5dadf chore(java): rename deserializeUnexistentEnumValueAsNull to 
deserializeNonexistentAsNull (#1634)
33e5dadf is described below

commit 33e5dadfd42ff5cabca1495343342cf4fc3a9725
Author: Shawn Yang <[email protected]>
AuthorDate: Wed May 15 15:18:40 2024 +0800

    chore(java): rename deserializeUnexistentEnumValueAsNull to 
deserializeNonexistentAsNull (#1634)
    
    ## What does this PR do?
    
    rename deserializeUnexistentEnumValueAsNull to
    deserializeNonexistentAsNull
    
    ## Related issues
    
    
    ## Does this PR introduce any user-facing change?
    
    <!--
    If any user-facing interface changes, please [open an
    issue](https://github.com/apache/incubator-fury/issues/new/choose)
    describing the need to do so and update the document if necessary.
    -->
    
    - [ ] Does this PR introduce any public API change?
    - [ ] Does this PR introduce any binary protocol compatibility change?
    
    
    ## Benchmark
    
    <!--
    When the PR has an impact on performance (if you don't know whether the
    PR will have an impact on performance, you can submit the PR first, and
    if it will have impact on performance, the code reviewer will explain
    it), be sure to attach a benchmark data here.
    -->
---
 .../src/main/java/org/apache/fury/config/Config.java       |  8 ++++----
 .../src/main/java/org/apache/fury/config/FuryBuilder.java  |  8 ++++----
 .../java/org/apache/fury/serializer/EnumSerializer.java    | 14 ++++++++++++--
 .../org/apache/fury/serializer/EnumSerializerTest.java     |  2 +-
 4 files changed, 21 insertions(+), 11 deletions(-)

diff --git a/java/fury-core/src/main/java/org/apache/fury/config/Config.java 
b/java/fury-core/src/main/java/org/apache/fury/config/Config.java
index 5fc79e93..2e7deb60 100644
--- a/java/fury-core/src/main/java/org/apache/fury/config/Config.java
+++ b/java/fury-core/src/main/java/org/apache/fury/config/Config.java
@@ -54,7 +54,7 @@ public class Config implements Serializable {
   private final boolean deserializeUnexistedClass;
   private final boolean scalaOptimizationEnabled;
   private transient int configHash;
-  private final boolean deserializeUnexistentEnumValueAsNull;
+  private final boolean deserializeNonexistentEnumValueAsNull;
 
   public Config(FuryBuilder builder) {
     language = builder.language;
@@ -83,7 +83,7 @@ public class Config implements Serializable {
     }
     asyncCompilationEnabled = builder.asyncCompilationEnabled;
     scalaOptimizationEnabled = builder.scalaOptimizationEnabled;
-    deserializeUnexistentEnumValueAsNull = 
builder.deserializeUnexistentEnumValueAsNull;
+    deserializeNonexistentEnumValueAsNull = 
builder.deserializeNonexistentEnumValueAsNull;
   }
 
   public Language getLanguage() {
@@ -103,8 +103,8 @@ public class Config implements Serializable {
   }
 
   /** ignore Enum Deserialize array out of bounds return null. */
-  public boolean deserializeUnexistentEnumValueAsNull() {
-    return deserializeUnexistentEnumValueAsNull;
+  public boolean deserializeNonexistentEnumValueAsNull() {
+    return deserializeNonexistentEnumValueAsNull;
   }
 
   /**
diff --git 
a/java/fury-core/src/main/java/org/apache/fury/config/FuryBuilder.java 
b/java/fury-core/src/main/java/org/apache/fury/config/FuryBuilder.java
index 3fe85695..9df183a9 100644
--- a/java/fury-core/src/main/java/org/apache/fury/config/FuryBuilder.java
+++ b/java/fury-core/src/main/java/org/apache/fury/config/FuryBuilder.java
@@ -75,7 +75,7 @@ public final class FuryBuilder {
   boolean registerGuavaTypes = true;
   boolean scalaOptimizationEnabled = false;
   boolean suppressClassRegistrationWarnings = true;
-  boolean deserializeUnexistentEnumValueAsNull = false;
+  boolean deserializeNonexistentEnumValueAsNull = false;
 
   public FuryBuilder() {}
 
@@ -107,9 +107,9 @@ public final class FuryBuilder {
   }
 
   /** ignore Enum Deserialize array out of bounds. */
-  public FuryBuilder deserializeUnexistentEnumValueAsNull(
-      boolean deserializeUnexistentEnumValueAsNull) {
-    this.deserializeUnexistentEnumValueAsNull = 
deserializeUnexistentEnumValueAsNull;
+  public FuryBuilder deserializeNonexistentEnumValueAsNull(
+      boolean deserializeNonexistentEnumValueAsNull) {
+    this.deserializeNonexistentEnumValueAsNull = 
deserializeNonexistentEnumValueAsNull;
     return this;
   }
 
diff --git 
a/java/fury-core/src/main/java/org/apache/fury/serializer/EnumSerializer.java 
b/java/fury-core/src/main/java/org/apache/fury/serializer/EnumSerializer.java
index 24bbcdfb..f03db52f 100644
--- 
a/java/fury-core/src/main/java/org/apache/fury/serializer/EnumSerializer.java
+++ 
b/java/fury-core/src/main/java/org/apache/fury/serializer/EnumSerializer.java
@@ -19,6 +19,7 @@
 
 package org.apache.fury.serializer;
 
+import java.util.Arrays;
 import org.apache.fury.Fury;
 import org.apache.fury.memory.MemoryBuffer;
 import org.apache.fury.util.Preconditions;
@@ -49,9 +50,18 @@ public final class EnumSerializer extends Serializer<Enum> {
   @Override
   public Enum read(MemoryBuffer buffer) {
     int value = buffer.readVarUint32Small7();
-    if (fury.getConfig().deserializeUnexistentEnumValueAsNull() && value >= 
enumConstants.length) {
-      return null;
+    if (value >= enumConstants.length) {
+      return handleNonexistentEnumValue(value);
     }
     return enumConstants[value];
   }
+
+  private Enum handleNonexistentEnumValue(int value) {
+    if (fury.getConfig().deserializeNonexistentEnumValueAsNull()) {
+      return null;
+    } else {
+      throw new IllegalArgumentException(
+          String.format("Enum ordinal %s not in %s", value, 
Arrays.toString(enumConstants)));
+    }
+  }
 }
diff --git 
a/java/fury-core/src/test/java/org/apache/fury/serializer/EnumSerializerTest.java
 
b/java/fury-core/src/test/java/org/apache/fury/serializer/EnumSerializerTest.java
index 63ceef1f..270817af 100644
--- 
a/java/fury-core/src/test/java/org/apache/fury/serializer/EnumSerializerTest.java
+++ 
b/java/fury-core/src/test/java/org/apache/fury/serializer/EnumSerializerTest.java
@@ -86,7 +86,7 @@ public class EnumSerializerTest extends FuryTestBase {
             .withLanguage(Language.JAVA)
             .withRefTracking(true)
             .requireClassRegistration(false)
-            .deserializeUnexistentEnumValueAsNull(true)
+            .deserializeNonexistentEnumValueAsNull(true)
             .withClassLoader(cls2.getClassLoader());
     Fury furyDeserialize = builderDeserialize.build();
     Fury furySerialization = builderSerialization.build();


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to