in java/fury-core/src/main/java/org/apache/fury/config/FuryBuilder.java [370:442]
private void finish() {
if (classLoader == null) {
classLoader = Thread.currentThread().getContextClassLoader();
if (classLoader == null) {
classLoader = Fury.class.getClassLoader();
}
}
if (language != Language.JAVA) {
stringRefIgnored = true;
longEncoding = LongEncoding.PVL;
compressInt = true;
}
if (ENABLE_CLASS_REGISTRATION_FORCIBLY) {
if (!requireClassRegistration) {
LOG.warn("Class registration is enabled forcibly.");
requireClassRegistration = true;
}
}
if (defaultJDKStreamSerializerType == JavaSerializer.class) {
LOG.warn(
"JDK serialization is used for types which customized java serialization by "
+ "implementing methods such as writeObject/readObject. This is not secure, try to "
+ "use {} instead, or implement a custom {}.",
ObjectStreamSerializer.class,
Serializer.class);
}
if (writeNumUtf16BytesForUtf8Encoding == null) {
writeNumUtf16BytesForUtf8Encoding = language == Language.JAVA;
}
if (compatibleMode == CompatibleMode.COMPATIBLE) {
checkClassVersion = false;
if (deserializeNonexistentClass == null) {
deserializeNonexistentClass = true;
}
if (scopedMetaShareEnabled == null) {
if (metaShareEnabled == null) {
metaShareEnabled = true;
scopedMetaShareEnabled = true;
} else {
scopedMetaShareEnabled = false;
}
} else {
if (metaShareEnabled == null) {
metaShareEnabled = scopedMetaShareEnabled;
}
}
} else {
if (deserializeNonexistentClass == null) {
deserializeNonexistentClass = false;
}
if (scopedMetaShareEnabled != null && scopedMetaShareEnabled) {
LOG.warn("Scoped meta share is for CompatibleMode only, disable it for {}", compatibleMode);
}
scopedMetaShareEnabled = false;
if (metaShareEnabled == null) {
metaShareEnabled = false;
}
if (language != Language.JAVA) {
checkClassVersion = true;
}
}
if (!requireClassRegistration) {
LOG.warn(
"Class registration isn't forced, unknown classes can be deserialized. "
+ "If the environment isn't secure, please enable class registration by "
+ "`FuryBuilder#requireClassRegistration(true)` or configure ClassChecker by "
+ "`ClassResolver#setClassChecker`");
}
if (GraalvmSupport.IN_GRAALVM_NATIVE_IMAGE && asyncCompilationEnabled) {
LOG.info("Use sync compilation for graalvm native image since it doesn't support JIT.");
asyncCompilationEnabled = false;
}
}