[ 
https://issues.apache.org/jira/browse/LUCENE-2799?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12966865#action_12966865
 ] 

Earwin Burrfoot commented on LUCENE-2799:
-----------------------------------------

I think it's always best to copy-paste stuff to your project and adapt it, in 
such cases.
It's simple, it doesn't break when you upgrade, it works with clumsily-built 
code.

Designing actual classes (not API interfaces, but fullblown working code) for 
inheritance is _very_ complex. I've seen few people trying this for real, and 
even fewer succeeding.

> MMapDirectory not designed for inheritance
> ------------------------------------------
>
>                 Key: LUCENE-2799
>                 URL: https://issues.apache.org/jira/browse/LUCENE-2799
>             Project: Lucene - Java
>          Issue Type: Improvement
>          Components: Store
>    Affects Versions: 3.0.3
>            Reporter: René Treffer
>
> How to reproduce
> Try to inherit from MMapDirectory to change the openInput logic (open files 
> from different directories).
> Expected result:
> Inherit from MMapDirectory, overwrite the one method, done.
> Actual result:
> It's impossible to overwrite the method as the inner classes would be 
> missing. It's impossible to fork the inner classes as they depend on a final 
> method with default visibility (cleanMapping).
> It turns out to be the easiest option to completely for the code and replace 
> just the method in question.
> Possible fix:
> Change the visibility of most members and subtypes to be at least protected 
> and avoid the default visibility.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to