assertion derived class modifier from parent class silently breaks backward 
compatibility
-----------------------------------------------------------------------------------------

                 Key: LUCENE-3420
                 URL: https://issues.apache.org/jira/browse/LUCENE-3420
             Project: Lucene - Java
          Issue Type: Bug
          Components: core/index
    Affects Versions: 3.3
            Reporter: John Wang


after upgrading to lucene 3.1+, I see this in my log:


java.lang.AssertionError: TokenStream implementation classes or at least their 
incrementToken() implementation must be final
        at 
org.apache.lucene.analysis.TokenStream.assertFinal(TokenStream.java:117)
        at org.apache.lucene.analysis.TokenStream.<init>(TokenStream.java:92)


Turns out I derived TokenStream and my class was not declared final.

This silently breaks backward compatibility via reflection, scary...

I think doing this sort of check is fine, but throwing an 
java.lang.AssertionError in this case is too stringent. 

This is a style check against lucene clients, a error log would be fine, but 
throwing an Error is too much.

See constructor implementation for: 
http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/analysis/TokenStream.java?view=markup




--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to