137. Implementing a custom method ObjectInputFilter
Let’s assume that we already have the Melon
class and the helper methods for serializing/deserializing objects to/from byte arrays from Problem 131.
An ObjectInputFilter
can be written via a dedicated method as in the following example:
public final class Filters {
private Filters() {
throw new AssertionError("Cannot be instantiated");
}
public static ObjectInputFilter.Status melonFilter(
FilterInfo info) {
Class<?> clazz = info.serialClass();
if (clazz != null) {
// or, clazz.getName().equals("modern.challenge.Melon")
return
!(clazz.getPackage().getName().equals("modern.challenge")
&& clazz.getSimpleName().equals("Melon"))
? Status.ALLOWED :Status.REJECTED;
}
return Status.UNDECIDED;
}
}
Of course, you can add more filters in this class.
We can set this filter as a stream-global filter as follows:
...