[ 
https://issues.apache.org/jira/browse/LUCENE-4199?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Uwe Schindler updated LUCENE-4199:
----------------------------------

    Attachment: LUCENE-4199.patch

Very rough patch for testing and it already found 75 errors: 

{noformat}
validate2:
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\analysis\common\classes\java\org\apache\lucene\analysis\br\BrazilianStemmer.class,
 source line 246
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\analysis\common\classes\java\org\apache\lucene\analysis\de\GermanStemmer.class,
 source line 50
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\analysis\common\classes\test\org\apache\lucene\analysis\sinks\TestTeeSinkTokenFilter.class,
 source line 167
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toUpperCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\analysis\common\classes\test\org\apache\lucene\analysis\sinks\TestTeeSinkTokenFilter.class,
 source line 183
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toUpperCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\analysis\common\classes\test\org\apache\lucene\analysis\util\TestCharArraySet.class,
 source line 261
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toUpperCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\analysis\common\classes\test\org\apache\lucene\analysis\util\TestCharArraySet.class,
 source line 308
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toUpperCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\analysis\common\classes\test\org\apache\lucene\analysis\util\TestCharArraySet.class,
 source line 354
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\analysis\common\classes\test\org\apache\lucene\analysis\util\TestCharTokenizers.class,
 source line 56
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\analysis\common\classes\test\org\apache\lucene\analysis\util\TestCharTokenizers.class,
 source line 73
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\analysis\common\classes\test\org\apache\lucene\analysis\util\TestCharTokenizers.class,
 source line 87
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\analysis\common\classes\test\org\apache\lucene\analysis\util\TestCharTokenizers.class,
 source line 87
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\analysis\common\classes\test\org\apache\lucene\analysis\util\TestCharTokenizers.class,
 source line 101
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\analysis\common\classes\test\org\apache\lucene\analysis\util\TestCharTokenizers.class,
 source line 101
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toUpperCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\analysis\stempel\classes\java\org\egothor\stemmer\Compile.class,
 source line 92
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\analysis\stempel\classes\java\org\egothor\stemmer\Compile.class,
 source line 130
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\analysis\stempel\classes\java\org\egothor\stemmer\DiffIt.class,
 source line 101
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toUpperCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\analysis\stempel\classes\test\org\egothor\stemmer\TestCompile.class,
 source line 110
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\analysis\stempel\classes\test\org\egothor\stemmer\TestCompile.class,
 source line 127
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\analysis\stempel\classes\test\org\egothor\stemmer\TestCompile.class,
 source line 135
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\analysis\stempel\classes\test\org\egothor\stemmer\TestCompile.class,
 source line 135
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\analysis\stempel\classes\test\org\egothor\stemmer\TestCompile.class,
 source line 146
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\analysis\stempel\classes\test\org\egothor\stemmer\TestCompile.class,
 source line 146
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\benchmark\classes\java\org\apache\lucene\benchmark\byTask\feeds\EnwikiContentSource$Parser.class,
 source line 149
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\benchmark\classes\java\org\apache\lucene\benchmark\byTask\tasks\TaskSequence.class,
 source line 490
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\benchmark\classes\java\org\apache\lucene\benchmark\byTask\utils\Algorithm.class,
 source line 162
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#getBytes()[B
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\core\classes\test\org\apache\lucene\document\TestBinaryDocument.class,
 source line 40
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#<init>([BII)V
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\core\classes\test\org\apache\lucene\document\TestBinaryDocument.class,
 source line 65
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#getBytes()[B
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\core\classes\test\org\apache\lucene\document\TestBinaryDocument.class,
 source line 78
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#<init>([B)V
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\core\classes\test\org\apache\lucene\document\TestBinaryDocument.class,
 source line 97
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#getBytes()[B
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\core\classes\test\org\apache\lucene\index\TestPayloads.class,
 source line 46
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#getBytes()[B
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\core\classes\test\org\apache\lucene\index\TestPayloads.class,
 source line 76
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#getBytes()[B
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\core\classes\test\org\apache\lucene\index\TestPayloads.class,
 source line 99
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#getBytes()[B
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\core\classes\test\org\apache\lucene\index\TestPayloads.class,
 source line 100
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#getBytes()[B
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\core\classes\test\org\apache\lucene\search\spans\TestBasics$SimplePayloadFilter.class,
 source line 84
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#getBytes()[B
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\core\classes\test\org\apache\lucene\search\spans\TestBasics.class,
 source line 414
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#getBytes()[B
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\core\classes\test\org\apache\lucene\search\spans\TestBasics.class,
 source line 429
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#getBytes()[B
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\core\classes\test\org\apache\lucene\search\spans\TestBasics.class,
 source line 430
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#getBytes()[B
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\core\classes\test\org\apache\lucene\search\spans\TestBasics.class,
 source line 442
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#getBytes()[B
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\core\classes\test\org\apache\lucene\search\spans\TestBasics.class,
 source line 443
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#getBytes()[B
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\core\classes\test\org\apache\lucene\search\spans\TestBasics.class,
 source line 444
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#getBytes()[B
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\core\classes\test\org\apache\lucene\search\spans\TestBasics.class,
 source line 473
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#getBytes()[B
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\core\classes\test\org\apache\lucene\search\spans\TestBasics.class,
 source line 474
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#getBytes()[B
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\core\classes\test\org\apache\lucene\search\spans\TestBasics.class,
 source line 475
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#getBytes()[B
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\core\classes\test\org\apache\lucene\search\spans\TestBasics.class,
 source line 476
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#getBytes()[B
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\core\classes\test\org\apache\lucene\search\spans\TestPayloadSpans$PayloadFilter.class,
 source line 508
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#getBytes()[B
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\core\classes\test\org\apache\lucene\search\spans\TestPayloadSpans$PayloadFilter.class,
 source line 510
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#<init>([B)V
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\core\classes\test\org\apache\lucene\search\spans\TestPayloadSpans.class,
 source line 279
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#<init>([B)V
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\core\classes\test\org\apache\lucene\search\spans\TestPayloadSpans.class,
 source line 314
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#<init>([B)V
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\core\classes\test\org\apache\lucene\search\spans\TestPayloadSpans.class,
 source line 350
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#<init>([B)V
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\core\classes\test\org\apache\lucene\search\spans\TestPayloadSpans.class,
 source line 386
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#<init>([B)V
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\core\classes\test\org\apache\lucene\search\spans\TestPayloadSpans.class,
 source line 458
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#<init>([BII)V
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\facet\classes\test\org\apache\lucene\facet\taxonomy\writercache\cl2o\TestCharBlockArray.class,
 source line 45
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#<init>([BII)V
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\facet\classes\test\org\apache\lucene\facet\taxonomy\writercache\cl2o\TestCharBlockArray.class,
 source line 54
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#<init>([BII)V
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\facet\classes\test\org\apache\lucene\facet\taxonomy\writercache\cl2o\TestCharBlockArray.class,
 source line 63
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#<init>([BII)V
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\facet\classes\test\org\apache\lucene\facet\taxonomy\writercache\cl2o\TestCompactLabelToOrdinal.class,
 source line 49
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\queryparser\classes\java\org\apache\lucene\queryparser\classic\QueryParserBase.class,
 source line 661
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\queryparser\classes\java\org\apache\lucene\queryparser\classic\QueryParserBase.class,
 source line 662
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\queryparser\classes\java\org\apache\lucene\queryparser\classic\QueryParserBase.class,
 source line 938
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\queryparser\classes\java\org\apache\lucene\queryparser\classic\QueryParserBase.class,
 source line 967
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\queryparser\classes\java\org\apache\lucene\queryparser\classic\QueryParserBase.class,
 source line 1001
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\queryparser\classes\java\org\apache\lucene\queryparser\classic\QueryParserBase.class,
 source line 1021
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\queryparser\classes\java\org\apache\lucene\queryparser\flexible\core\nodes\QueryNodeImpl.class,
 source line 154
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\queryparser\classes\java\org\apache\lucene\queryparser\flexible\core\nodes\QueryNodeImpl.class,
 source line 158
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\queryparser\classes\java\org\apache\lucene\queryparser\flexible\core\nodes\QueryNodeImpl.class,
 source line 163
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\queryparser\classes\java\org\apache\lucene\queryparser\flexible\core\nodes\QueryNodeImpl.class,
 source line 167
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\queryparser\classes\java\org\apache\lucene\queryparser\flexible\core\util\UnescapedCharSequence.class,
 source line 151
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\queryparser\classes\java\org\apache\lucene\queryparser\flexible\core\util\UnescapedCharSequence.class,
 source line 155
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\queryparser\classes\java\org\apache\lucene\queryparser\flexible\standard\parser\EscapeQuerySyntaxImpl.class,
 source line 53
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\queryparser\classes\java\org\apache\lucene\queryparser\flexible\standard\parser\EscapeQuerySyntaxImpl.class,
 source line 76
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\queryparser\classes\java\org\apache\lucene\queryparser\flexible\standard\parser\EscapeQuerySyntaxImpl.class,
 source line 181
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#getBytes()[B
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\queryparser\classes\test\org\apache\lucene\queryparser\xml\builders\TestNumericRangeFilterBuilder.class,
 source line 206
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\suggest\classes\java\org\apache\lucene\search\suggest\jaspell\JaspellTernarySearchTrie.class,
 source line 215
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\suggest\classes\java\org\apache\lucene\search\suggest\jaspell\JaspellTernarySearchTrie.class,
 source line 245
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\suggest\classes\java\org\apache\lucene\search\suggest\jaspell\JaspellTernarySearchTrie.class,
 source line 385
[forbidden-method-calls] Forbidden method invocation: 
java/lang/String#toLowerCase()Ljava/lang/String;
[forbidden-method-calls]   in C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\build\suggest\classes\java\org\apache\lucene\search\suggest\jaspell\JaspellTernarySearchTrie.class,
 source line 766
[forbidden-method-calls] Scanned 4959 class file(s) for forbidden method 
invocations (in 2.45s.), 75 error(s).

BUILD FAILED
C:\Users\Uwe Schindler\Projects\lucene\trunk-lusolr0\lucene\build.xml:179: The 
following error occurred while executing this line:
C:\Users\Uwe 
Schindler\Projects\lucene\trunk-lusolr0\lucene\tools\custom-tasks.xml:70: Check 
for forbidden method calls failed, see log.
{noformat}

for this simple list of methods:

{code:java}
addConstructor(String.class, byte[].class);
addConstructor(String.class, byte[].class, int.class);
addConstructor(String.class, byte[].class, int.class, int.class);
addConstructor(String.class, byte[].class, int.class, int.class, int.class);
addMethod(String.class, "getBytes");
addMethod(String.class, "toLowerCase");
addMethod(String.class, "toUpperCase");
{code}

Further improvements coming:

I prefer to make the method declarations type safe, so the TASK needs all 
classes with illegal methods in classpath. For Lucene this is no problem, as it 
only uses JDK classes.
In Solr, we should also add commons.io to this classpath, as lots of tests and 
core classes use the horrible IOUtils methods to converty binary files to 
strings or copy InputStreams to Strings. I will think about a more dynamic 
syntax to declare method invocations, than the above hardcoded java code.

The task is simply called on a FileSet of .class files, currently like all 
other linters from top-level only.
                
> Add ANT tool to track/disallow "forbidden" method invocations
> -------------------------------------------------------------
>
>                 Key: LUCENE-4199
>                 URL: https://issues.apache.org/jira/browse/LUCENE-4199
>             Project: Lucene - Java
>          Issue Type: Improvement
>    Affects Versions: 4.0-ALPHA
>            Reporter: Uwe Schindler
>            Assignee: Uwe Schindler
>             Fix For: 4.0
>
>         Attachments: LUCENE-4199.patch
>
>
> In LUCENE-3877 Greg Bowyer has some asm.jar-based code to inspe ct class 
> files for System.out/err class. I wanted to modify this code to run it in a 
> jar-linter task on ant, so all compiled class files are parsed and 
> method/ctor calls to e.g. new String(byte[]) without charset are forbidden. 
> We would add a list of method signatures that we dont want to have (new 
> FileReader(File), commons.IOUtils.loadFileToString()) and this linter will 
> throw BuildException after static inspection, if any class file in 
> Lucene/Solr (including line numbers) uses any method call.
> Greg's code would be changed to use visitMethodInsn visitor, very easy.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

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

Reply via email to