lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael McCandless (JIRA)" <>
Subject [jira] Commented: (LUCENE-1636) TokenFilters with a null value in the constructor fail
Date Fri, 22 May 2009 09:52:45 GMT


Michael McCandless commented on LUCENE-1636:

Good questions Uwe!

I tested the back-compat by adding this to TestAnalyzers temporarily
in my local checkout:

private class TestFilter extends TokenFilter {
  public TestFilter() {
    super(new WhitespaceTokenizer(null));

public void testChangeTokenFilterInput() {
  TokenFilter tf = new TestFilter();
  System.out.println("tf.input = " + tf.input);
  tf.input = null;

Then, {{ant test-tag -Dtestcase=TestAnalyzers}} results in:
[junit] ------------- Standard Output ---------------
[junit] tf.input = (start=0,end=0,term=)
[junit] ------------- ---------------- ---------------
[junit] Testcase: testChangeTokenFilterInput(org.apache.lucene.analysis.TestAnalyzers):	Caused
[junit] null
[junit] java.lang.IllegalAccessError
[junit] 	at org.apache.lucene.analysis.TestAnalyzers.testChangeTokenFilterInput(

So, 1) it doesn't break JAR drop-in-abilility when one references
input, and 2) indeed at runtime final-ness is enforced by the JRE.  So
I think we should proceed with the change?  It is a back-compat break
for those users who change input after creating a TokenFilter, but
such a use case was not legal usage of the API, and will specifically
not work like it did in the past (so back-compat was already broken,
just in a much more sneaky manner).

> TokenFilters with a null value in the constructor fail
> ------------------------------------------------------
>                 Key: LUCENE-1636
>                 URL:
>             Project: Lucene - Java
>          Issue Type: Bug
>    Affects Versions: 2.9
>            Reporter: Wouter Heijke
>            Assignee: Michael McCandless
>             Fix For: 2.9
>         Attachments: LUCENE-1636.patch
> While migrating from 2.4.x to 2.9-dev I found a lot of failing unittests.
> One problem is with TokenFilters that do a super(null) in the constructor.
> I fixed it by changing the constructor to super(new EmptyTokenStream())
> This will cause problems and frustration to others while migrating to 2.9.

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:
For additional commands, e-mail:

View raw message