138. Implementing a custom lambda 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 lambda and set as a stream-global filter as follows:
ObjectInputFilter.Config
.setSerialFilter(f -> ((f.serialClass() != null)
// or, filter.serialClass().getName().equals(
// "modern.challenge.Melon")
&& f.serialClass().getPackage()
.getName().equals("modern.challenge")
&& f.serialClass().getSimpleName().equals("Melon"))
? Status.REJECTED : Status.UNDECIDED);
Or, as a stream-specific filter as follows:
Melon melonDeser = (Melon) Converters.bytesToObject(melonSer,
f -> ((f.serialClass() != null)
// or, filter.serialClass().getName().equals(
// "modern.challenge.Melon")
&& f.serialClass()...