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:
parent
7d2a71fdaa
commit
906517149b
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue