diff --git a/java/fury-core/src/main/java/org/apache/fury/AbstractThreadSafeFury.java b/java/fury-core/src/main/java/org/apache/fury/AbstractThreadSafeFury.java index 656f3b9d84..23a6aa407e 100644 --- a/java/fury-core/src/main/java/org/apache/fury/AbstractThreadSafeFury.java +++ b/java/fury-core/src/main/java/org/apache/fury/AbstractThreadSafeFury.java @@ -21,6 +21,7 @@ import java.util.function.Consumer; import java.util.function.Function; +import org.apache.fury.annotation.Internal; import org.apache.fury.resolver.ClassChecker; import org.apache.fury.serializer.Serializer; import org.apache.fury.serializer.SerializerFactory; @@ -28,48 +29,49 @@ public abstract class AbstractThreadSafeFury implements ThreadSafeFury { @Override public void register(Class clz) { - processCallback(fury -> fury.register(clz)); + registerCallback(fury -> fury.register(clz)); } @Override public void register(Class cls, boolean createSerializer) { - processCallback(fury -> fury.register(cls, createSerializer)); + registerCallback(fury -> fury.register(cls, createSerializer)); } @Override public void register(Class cls, Short id) { - processCallback(fury -> fury.register(cls, id)); + registerCallback(fury -> fury.register(cls, id)); } @Override public void register(Class cls, Short id, boolean createSerializer) { - processCallback(fury -> fury.register(cls, id, createSerializer)); + registerCallback(fury -> fury.register(cls, id, createSerializer)); } @Override public void registerSerializer(Class type, Class serializerClass) { - processCallback(fury -> fury.registerSerializer(type, serializerClass)); + registerCallback(fury -> fury.registerSerializer(type, serializerClass)); } @Override public void registerSerializer(Class type, Serializer serializer) { - processCallback(fury -> fury.registerSerializer(type, serializer)); + registerCallback(fury -> fury.registerSerializer(type, serializer)); } @Override public void registerSerializer(Class type, Function> serializerCreator) { - processCallback(fury -> fury.registerSerializer(type, serializerCreator.apply(fury))); + registerCallback(fury -> fury.registerSerializer(type, serializerCreator.apply(fury))); } @Override public void setSerializerFactory(SerializerFactory serializerFactory) { - processCallback(fury -> fury.setSerializerFactory(serializerFactory)); + registerCallback(fury -> fury.setSerializerFactory(serializerFactory)); } @Override public void setClassChecker(ClassChecker classChecker) { - processCallback(fury -> fury.getClassResolver().setClassChecker(classChecker)); + registerCallback(fury -> fury.getClassResolver().setClassChecker(classChecker)); } - protected abstract void processCallback(Consumer callback); + @Internal + public abstract void registerCallback(Consumer callback); } diff --git a/java/fury-core/src/main/java/org/apache/fury/ThreadLocalFury.java b/java/fury-core/src/main/java/org/apache/fury/ThreadLocalFury.java index e45453bb42..3e2abb866c 100644 --- a/java/fury-core/src/main/java/org/apache/fury/ThreadLocalFury.java +++ b/java/fury-core/src/main/java/org/apache/fury/ThreadLocalFury.java @@ -27,6 +27,7 @@ import java.util.function.Consumer; import java.util.function.Function; import javax.annotation.concurrent.ThreadSafe; +import org.apache.fury.annotation.Internal; import org.apache.fury.io.FuryInputStream; import org.apache.fury.io.FuryReadableChannel; import org.apache.fury.memory.MemoryBuffer; @@ -68,8 +69,9 @@ public ThreadLocalFury(Function furyFactory) { Fury fury = bindingThreadLocal.get().get(); } + @Internal @Override - protected void processCallback(Consumer callback) { + public void registerCallback(Consumer callback) { factoryCallback = factoryCallback.andThen(callback); for (LoaderBinding binding : allFury.keySet()) { binding.visitAllFury(callback); diff --git a/java/fury-core/src/main/java/org/apache/fury/pool/ThreadPoolFury.java b/java/fury-core/src/main/java/org/apache/fury/pool/ThreadPoolFury.java index 8afcdbd134..ff701e0c06 100644 --- a/java/fury-core/src/main/java/org/apache/fury/pool/ThreadPoolFury.java +++ b/java/fury-core/src/main/java/org/apache/fury/pool/ThreadPoolFury.java @@ -27,6 +27,7 @@ import javax.annotation.concurrent.ThreadSafe; import org.apache.fury.AbstractThreadSafeFury; import org.apache.fury.Fury; +import org.apache.fury.annotation.Internal; import org.apache.fury.io.FuryInputStream; import org.apache.fury.io.FuryReadableChannel; import org.apache.fury.logging.Logger; @@ -61,8 +62,9 @@ public ThreadPoolFury( fury -> factoryCallback.accept(fury)); } + @Internal @Override - protected void processCallback(Consumer callback) { + public void registerCallback(Consumer callback) { factoryCallback = factoryCallback.andThen(callback); for (ClassLoaderFuryPooled furyPooled : furyPooledObjectFactory.classLoaderFuryPooledCache.asMap().values()) { diff --git a/kotlin/pom.xml b/kotlin/pom.xml index 24bccb9516..f31c8dccf2 100644 --- a/kotlin/pom.xml +++ b/kotlin/pom.xml @@ -29,7 +29,9 @@ 4.0.0 - UTF-8 + 1.8 + 1.8 + UTF-8 official 1.8 diff --git a/kotlin/src/main/java/org/apache/fury/serializer/kotlin/KotlinSerializers.java b/kotlin/src/main/java/org/apache/fury/serializer/kotlin/KotlinSerializers.java index e1e0b7c056..f87f14760a 100644 --- a/kotlin/src/main/java/org/apache/fury/serializer/kotlin/KotlinSerializers.java +++ b/kotlin/src/main/java/org/apache/fury/serializer/kotlin/KotlinSerializers.java @@ -23,7 +23,9 @@ import kotlin.UIntArray; import kotlin.ULongArray; import kotlin.UShortArray; +import org.apache.fury.AbstractThreadSafeFury; import org.apache.fury.Fury; +import org.apache.fury.ThreadSafeFury; import org.apache.fury.resolver.ClassResolver; import org.apache.fury.serializer.collection.CollectionSerializers; import org.apache.fury.serializer.collection.MapSerializers; @@ -34,6 +36,12 @@ */ @SuppressWarnings({"rawtypes", "unchecked"}) public class KotlinSerializers { + + public static void registerSerializers(ThreadSafeFury fury) { + AbstractThreadSafeFury threadSafeFury = (AbstractThreadSafeFury) fury; + threadSafeFury.registerCallback(KotlinSerializers::registerSerializers); + } + public static void registerSerializers(Fury fury) { ClassResolver resolver = fury.getClassResolver(); diff --git a/scala/src/main/java/org/apache/fury/serializer/scala/ScalaSerializers.java b/scala/src/main/java/org/apache/fury/serializer/scala/ScalaSerializers.java index 5cfdcd8903..41d56b5d6c 100644 --- a/scala/src/main/java/org/apache/fury/serializer/scala/ScalaSerializers.java +++ b/scala/src/main/java/org/apache/fury/serializer/scala/ScalaSerializers.java @@ -19,7 +19,9 @@ package org.apache.fury.serializer.scala; +import org.apache.fury.AbstractThreadSafeFury; import org.apache.fury.Fury; +import org.apache.fury.ThreadSafeFury; import org.apache.fury.resolver.ClassResolver; import org.apache.fury.serializer.Serializer; import org.apache.fury.serializer.SerializerFactory; @@ -31,6 +33,11 @@ public class ScalaSerializers { + public static void registerSerializers(ThreadSafeFury fury) { + AbstractThreadSafeFury threadSafeFury = (AbstractThreadSafeFury) fury; + threadSafeFury.registerCallback(ScalaSerializers::registerSerializers); + } + public static void registerSerializers(Fury fury) { ClassResolver resolver = setSerializerFactory(fury);