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]