On Fri, 21 May 2021 17:21:15 GMT, Roger Riggs <rri...@openjdk.org> wrote:

>> src/java.base/share/classes/java/io/ObjectInputFilter.java line 107:
>> 
>>> 105:  *     Note that the filter may be used directly or combined with 
>>> other filters by the
>>> 106:  *     {@linkplain Config#setSerialFilterFactory(BinaryOperator) 
>>> JVM-wide filter factory}.
>>> 107:  * </ul>
>> 
>> This list is a little confusing to me, but could be that I don't fully grok 
>> it yet. getSerialFilterFactory returns THE JVM-wide factory, whether that be 
>> the built-in factory implementation or not is somewhat irrelevant. No need 
>> to treat them differently - one either sets a factory (in which case that is 
>> the JVM-wide factory), or one does not set the factory (in which case the 
>> built-in factory is the JVM-wide factory).
>
> In previous versions, calling OIS.setObjectInputFilter determined exactly the 
> filter used for the stream.
> With the filter factory enhancement, the current filter factory determines 
> how the argument to OIS.setObjectInputFilter is used. There are plenty of 
> cases where the filter factory will combine it with other filters and the 
> composite will becomes the filter for the stream.

Here is the source of my confusion. The bulleted list is enumerating how a 
stream-specific filter is determined, but I see an extra step in that which 
should be unnecessary. It is currently:

1. Check JVM-wide filter factory
2. If no JVM-wide, check built-in factory
3. setSerialFilterFactory

, but 1 and 2 are not separate and distinct cases - there is always a JVM-wide 
deserialization filter factory. The JVM-wide deserialization filter factory is 
either i) set through a property, or ii) set explicitly by an API call, or iii) 
the built-in implementation.

If the initialisation of the JVM-wide deserialization filter factory is 
separated out from how the stream-specific factory is determined, then I 
believe that it will be easier to follow.

-------------

PR: https://git.openjdk.java.net/jdk/pull/3996

Reply via email to