[ 
https://issues.apache.org/jira/browse/COLLECTIONS-728?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17001053#comment-17001053
 ] 

Gilles Sadowski commented on COLLECTIONS-728:
---------------------------------------------

{quote}When Shapes or BloomFilters that were created with MyHash are serialized 
by the application (application responsibility) the HashFunctionIdentity will 
be serialized. The application deserializing the HashFunctionIdentity will 
either need to have the MyHash class or another implementation of the same 
function.
{quote}
Then, the question is: What does the Bloom filter functionality (that 
constitutes your code contribution to [Collections]) need beyond a 
{{HashFunction}} interface that defines a method {{isCompatible(HashFunction 
other)}}?
 In effect, my issue is still the same (I think) as several comments ago: How 
to ensure that some instance of {{HashFunctionIdentity}} will *really* be 
compatible with another (whether within the same JVM or after serialization)? 
It seems to me that whatever check is done in a "composed" way with 
{{isIterative()}}, {{isUnsigned()}}, {{getName()}}, ... can be achieved in a 
simple (and more robust, at the implementor's discretion) way with 
{{isCompatible(HashFunction)}}.
 Furthermore, in order to call {{isIterative()}}, etc. you obviously need a JVM 
at the other end of the serialization/deserialization pipeline.
 Now, if distributed processing is an integral feature (?) of using the 
{{BloomFilter}} class, perhaps that we must define as
{code:java}
interface HashFunction extends Serializable {
    // ...
}
{code}
Note that what Sebb and others pointed out is that o.a. things, "it's difficult 
to code Serializable classes properly" but the rest of the quote ("We should 
not promise what we likely cannot continue to deliver") does not apply here, 
because the burden will be on implementors. And _they_ will choose how robust 
and future-proof their handling of {{Serializable}} needs to be (for their 
purpose).
 However, is it actually true that {{BloomFilter}} usage only makes sense in 
distributed applications? If not, I'd be wary of the above definition (since it 
will impose an unnecessary burden, or could provide a false sense of security 
if {{Serializable}} is not properly implemented).

> BloomFilter contribution
> ------------------------
>
>                 Key: COLLECTIONS-728
>                 URL: https://issues.apache.org/jira/browse/COLLECTIONS-728
>             Project: Commons Collections
>          Issue Type: Task
>            Reporter: Claude Warren
>            Priority: Minor
>         Attachments: BF_Func.md, BloomFilter.java, BloomFilterI2.java, 
> Usage.md
>
>
> Contribution of BloomFilter library comprising base implementation and gated 
> collections.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to