Fix allow non-serializable check (#12267)

* Fix allow non-serializable check

* opt code

* opt code

---------

Co-authored-by: songxiaosheng <songxiaosheng@elastic.link>
This commit is contained in:
Albumen Kevin 2023-05-16 19:01:32 +08:00 committed by GitHub
parent 7d2a71fdaa
commit 906517149b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 14 additions and 8 deletions

View File

@ -51,10 +51,7 @@ public class Hessian2SerializerFactory extends SerializerFactory {
// ignore
}
if (!Serializable.class.isAssignableFrom(cl)
&& (!isAllowNonSerializable() || defaultSerializeClassChecker.isCheckSerializable())) {
throw new IllegalStateException("Serialized class " + cl.getName() + " must implement java.io.Serializable");
}
checkSerializable(cl);
return new JavaSerializer(cl, getClassLoader());
}
@ -68,11 +65,20 @@ public class Hessian2SerializerFactory extends SerializerFactory {
// ignore
}
if (!Serializable.class.isAssignableFrom(cl)
&& (!isAllowNonSerializable() || !defaultSerializeClassChecker.isCheckSerializable())) {
throw new IllegalStateException("Serialized class " + cl.getName() + " must implement java.io.Serializable");
}
checkSerializable(cl);
return new JavaDeserializer(cl);
}
private void checkSerializable(Class<?> cl) {
// If class is Serializable => ok
// If class has not implement Serializable
// If hessian check serializable => fail
// If dubbo class checker check serializable => fail
// If both hessian and dubbo class checker allow non-serializable => ok
if (!Serializable.class.isAssignableFrom(cl)
&& (!isAllowNonSerializable() || defaultSerializeClassChecker.isCheckSerializable())) {
throw new IllegalStateException("Serialized class " + cl.getName() + " must implement java.io.Serializable");
}
}
}