Index: contrib/analyzers/common/src/java/org/apache/lucene/analysis/compound/CompoundWordTokenFilterBase.java =================================================================== --- contrib/analyzers/common/src/java/org/apache/lucene/analysis/compound/CompoundWordTokenFilterBase.java (revision 821446) +++ contrib/analyzers/common/src/java/org/apache/lucene/analysis/compound/CompoundWordTokenFilterBase.java (working copy) @@ -164,18 +164,6 @@ } } - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next(final Token reusableToken) throws java.io.IOException { - return super.next(reusableToken); - } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next() throws java.io.IOException { - return super.next(); - } - protected static final void addAllLowerCase(Set target, Collection col) { Iterator iter=col.iterator(); Index: contrib/analyzers/common/src/java/org/apache/lucene/analysis/fr/ElisionFilter.java =================================================================== --- contrib/analyzers/common/src/java/org/apache/lucene/analysis/fr/ElisionFilter.java (revision 821446) +++ contrib/analyzers/common/src/java/org/apache/lucene/analysis/fr/ElisionFilter.java (working copy) @@ -36,7 +36,7 @@ * * @see Elision in Wikipedia */ -public class ElisionFilter extends TokenFilter { +public final class ElisionFilter extends TokenFilter { private Set articles = null; private TermAttribute termAtt; @@ -109,16 +109,4 @@ return false; } } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next(final Token reusableToken) throws java.io.IOException { - return super.next(reusableToken); - } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next() throws java.io.IOException { - return super.next(); - } } Index: contrib/analyzers/common/src/java/org/apache/lucene/analysis/miscellaneous/EmptyTokenStream.java =================================================================== --- contrib/analyzers/common/src/java/org/apache/lucene/analysis/miscellaneous/EmptyTokenStream.java (revision 821446) +++ contrib/analyzers/common/src/java/org/apache/lucene/analysis/miscellaneous/EmptyTokenStream.java (working copy) @@ -25,21 +25,10 @@ /** * An always exhausted token stream. */ -public class EmptyTokenStream extends TokenStream { +public final class EmptyTokenStream extends TokenStream { public final boolean incrementToken() throws IOException { return false; } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next(final Token reusableToken) throws java.io.IOException { - return super.next(reusableToken); - } - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next() throws java.io.IOException { - return super.next(); - } } Index: contrib/analyzers/common/src/java/org/apache/lucene/analysis/miscellaneous/PrefixAndSuffixAwareTokenFilter.java =================================================================== --- contrib/analyzers/common/src/java/org/apache/lucene/analysis/miscellaneous/PrefixAndSuffixAwareTokenFilter.java (revision 821446) +++ contrib/analyzers/common/src/java/org/apache/lucene/analysis/miscellaneous/PrefixAndSuffixAwareTokenFilter.java (working copy) @@ -62,19 +62,7 @@ public final boolean incrementToken() throws IOException { return suffix.incrementToken(); } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next(final Token reusableToken) throws java.io.IOException { - return super.next(reusableToken); - } - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next() throws java.io.IOException { - return super.next(); - } - public void reset() throws IOException { suffix.reset(); } Index: contrib/analyzers/common/src/java/org/apache/lucene/analysis/miscellaneous/PrefixAwareTokenFilter.java =================================================================== --- contrib/analyzers/common/src/java/org/apache/lucene/analysis/miscellaneous/PrefixAwareTokenFilter.java (revision 821446) +++ contrib/analyzers/common/src/java/org/apache/lucene/analysis/miscellaneous/PrefixAwareTokenFilter.java (working copy) @@ -111,18 +111,6 @@ return true; } - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next(final Token reusableToken) throws java.io.IOException { - return super.next(reusableToken); - } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next() throws java.io.IOException { - return super.next(); - } - private void setCurrentToken(Token token) { if (token == null) return; termAtt.setTermBuffer(token.termBuffer(), 0, token.termLength()); Index: contrib/analyzers/common/src/java/org/apache/lucene/analysis/miscellaneous/SingleTokenTokenStream.java =================================================================== --- contrib/analyzers/common/src/java/org/apache/lucene/analysis/miscellaneous/SingleTokenTokenStream.java (revision 821446) +++ contrib/analyzers/common/src/java/org/apache/lucene/analysis/miscellaneous/SingleTokenTokenStream.java (working copy) @@ -27,7 +27,7 @@ /** * A {@link TokenStream} containing a single token. */ -public class SingleTokenTokenStream extends TokenStream { +public final class SingleTokenTokenStream extends TokenStream { private boolean exhausted = false; @@ -42,7 +42,7 @@ this.singleToken = (Token) token.clone(); tokenAtt = (AttributeImpl) addAttribute(TermAttribute.class); - assert (tokenAtt instanceof Token || tokenAtt.getClass().getName().equals("org.apache.lucene.analysis.TokenWrapper")); + assert (tokenAtt instanceof Token); } public final boolean incrementToken() throws IOException { @@ -55,19 +55,7 @@ return true; } } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next(final Token reusableToken) throws java.io.IOException { - return super.next(reusableToken); - } - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next() throws java.io.IOException { - return super.next(); - } - public void reset() throws IOException { exhausted = false; } Index: contrib/analyzers/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenFilter.java =================================================================== --- contrib/analyzers/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenFilter.java (revision 821446) +++ contrib/analyzers/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenFilter.java (working copy) @@ -31,7 +31,7 @@ * This {@link TokenFilter} create n-grams from the beginning edge or ending edge of a input token. *

*/ -public class EdgeNGramTokenFilter extends TokenFilter { +public final class EdgeNGramTokenFilter extends TokenFilter { public static final Side DEFAULT_SIDE = Side.FRONT; public static final int DEFAULT_MAX_GRAM_SIZE = 1; public static final int DEFAULT_MIN_GRAM_SIZE = 1; @@ -149,19 +149,7 @@ curTermBuffer = null; } } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next(final Token reusableToken) throws java.io.IOException { - return super.next(reusableToken); - } - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next() throws java.io.IOException { - return super.next(); - } - public void reset() throws IOException { super.reset(); curTermBuffer = null; Index: contrib/analyzers/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenizer.java =================================================================== --- contrib/analyzers/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenizer.java (revision 821446) +++ contrib/analyzers/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenizer.java (working copy) @@ -33,7 +33,7 @@ * MaxGram can't be larger than 1024 because of limitation. *

*/ -public class EdgeNGramTokenizer extends Tokenizer { +public final class EdgeNGramTokenizer extends Tokenizer { public static final Side DEFAULT_SIDE = Side.FRONT; public static final int DEFAULT_MAX_GRAM_SIZE = 1; public static final int DEFAULT_MIN_GRAM_SIZE = 1; @@ -217,19 +217,7 @@ final int finalOffset = inLen; this.offsetAtt.setOffset(finalOffset, finalOffset); } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next(final Token reusableToken) throws java.io.IOException { - return super.next(reusableToken); - } - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next() throws java.io.IOException { - return super.next(); - } - public void reset(Reader input) throws IOException { super.reset(input); reset(); Index: contrib/analyzers/common/src/java/org/apache/lucene/analysis/ngram/NGramTokenFilter.java =================================================================== --- contrib/analyzers/common/src/java/org/apache/lucene/analysis/ngram/NGramTokenFilter.java (revision 821446) +++ contrib/analyzers/common/src/java/org/apache/lucene/analysis/ngram/NGramTokenFilter.java (working copy) @@ -28,7 +28,7 @@ /** * Tokenizes the input into n-grams of the given size(s). */ -public class NGramTokenFilter extends TokenFilter { +public final class NGramTokenFilter extends TokenFilter { public static final int DEFAULT_MIN_NGRAM_SIZE = 1; public static final int DEFAULT_MAX_NGRAM_SIZE = 2; @@ -97,19 +97,7 @@ curTermBuffer = null; } } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next(final Token reusableToken) throws java.io.IOException { - return super.next(reusableToken); - } - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next() throws java.io.IOException { - return super.next(); - } - public void reset() throws IOException { super.reset(); curTermBuffer = null; Index: contrib/analyzers/common/src/java/org/apache/lucene/analysis/ngram/NGramTokenizer.java =================================================================== --- contrib/analyzers/common/src/java/org/apache/lucene/analysis/ngram/NGramTokenizer.java (revision 821446) +++ contrib/analyzers/common/src/java/org/apache/lucene/analysis/ngram/NGramTokenizer.java (working copy) @@ -29,7 +29,7 @@ /** * Tokenizes the input into n-grams of the given size(s). */ -public class NGramTokenizer extends Tokenizer { +public final class NGramTokenizer extends Tokenizer { public static final int DEFAULT_MIN_NGRAM_SIZE = 1; public static final int DEFAULT_MAX_NGRAM_SIZE = 2; @@ -134,18 +134,6 @@ this.offsetAtt.setOffset(finalOffset, finalOffset); } - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next(final Token reusableToken) throws java.io.IOException { - return super.next(reusableToken); - } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next() throws java.io.IOException { - return super.next(); - } - public void reset(Reader input) throws IOException { super.reset(input); reset(); Index: contrib/analyzers/common/src/java/org/apache/lucene/analysis/payloads/NumericPayloadTokenFilter.java =================================================================== --- contrib/analyzers/common/src/java/org/apache/lucene/analysis/payloads/NumericPayloadTokenFilter.java (revision 821446) +++ contrib/analyzers/common/src/java/org/apache/lucene/analysis/payloads/NumericPayloadTokenFilter.java (working copy) @@ -57,16 +57,4 @@ return false; } } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next(final Token reusableToken) throws java.io.IOException { - return super.next(reusableToken); - } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next() throws java.io.IOException { - return super.next(); - } } Index: contrib/analyzers/common/src/java/org/apache/lucene/analysis/payloads/TokenOffsetPayloadTokenFilter.java =================================================================== --- contrib/analyzers/common/src/java/org/apache/lucene/analysis/payloads/TokenOffsetPayloadTokenFilter.java (revision 821446) +++ contrib/analyzers/common/src/java/org/apache/lucene/analysis/payloads/TokenOffsetPayloadTokenFilter.java (working copy) @@ -55,16 +55,4 @@ return false; } } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next(final Token reusableToken) throws java.io.IOException { - return super.next(reusableToken); - } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next() throws java.io.IOException { - return super.next(); - } } \ No newline at end of file Index: contrib/analyzers/common/src/java/org/apache/lucene/analysis/payloads/TypeAsPayloadTokenFilter.java =================================================================== --- contrib/analyzers/common/src/java/org/apache/lucene/analysis/payloads/TypeAsPayloadTokenFilter.java (revision 821446) +++ contrib/analyzers/common/src/java/org/apache/lucene/analysis/payloads/TypeAsPayloadTokenFilter.java (working copy) @@ -55,16 +55,4 @@ return false; } } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next(final Token reusableToken) throws java.io.IOException { - return super.next(reusableToken); - } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next() throws java.io.IOException { - return super.next(); - } } \ No newline at end of file Index: contrib/analyzers/common/src/java/org/apache/lucene/analysis/position/PositionFilter.java =================================================================== --- contrib/analyzers/common/src/java/org/apache/lucene/analysis/position/PositionFilter.java (revision 821446) +++ contrib/analyzers/common/src/java/org/apache/lucene/analysis/position/PositionFilter.java (working copy) @@ -28,7 +28,7 @@ * except the first return token which retains its original positionIncrement value. * The default positionIncrement value is zero. */ -public class PositionFilter extends TokenFilter { +public final class PositionFilter extends TokenFilter { /** Position increment to assign to all but the first token - default = 0 */ private int positionIncrement = 0; @@ -75,18 +75,6 @@ } } - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next(final Token reusableToken) throws java.io.IOException { - return super.next(reusableToken); - } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next() throws java.io.IOException { - return super.next(); - } - public void reset() throws IOException { super.reset(); firstTokenPositioned = false; Index: contrib/analyzers/common/src/java/org/apache/lucene/analysis/shingle/ShingleFilter.java =================================================================== --- contrib/analyzers/common/src/java/org/apache/lucene/analysis/shingle/ShingleFilter.java (revision 821446) +++ contrib/analyzers/common/src/java/org/apache/lucene/analysis/shingle/ShingleFilter.java (working copy) @@ -41,7 +41,7 @@ *

This filter handles position increments > 1 by inserting filler tokens * (tokens with termtext "_"). It does not handle a position increment of 0. */ -public class ShingleFilter extends TokenFilter { +public final class ShingleFilter extends TokenFilter { private LinkedList shingleBuf = new LinkedList(); private StringBuilder[] shingles; @@ -327,19 +327,7 @@ return true; } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next(final Token reusableToken) throws java.io.IOException { - return super.next(reusableToken); - } - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next() throws java.io.IOException { - return super.next(); - } - public void reset() throws IOException { super.reset(); nextToken = null; Index: contrib/analyzers/common/src/java/org/apache/lucene/analysis/shingle/ShingleMatrixFilter.java =================================================================== --- contrib/analyzers/common/src/java/org/apache/lucene/analysis/shingle/ShingleMatrixFilter.java (revision 821446) +++ contrib/analyzers/common/src/java/org/apache/lucene/analysis/shingle/ShingleMatrixFilter.java (working copy) @@ -114,7 +114,7 @@ * NOTE: This filter might not behave correctly if used with custom Attributes, i.e. Attributes other than * the ones located in org.apache.lucene.analysis.tokenattributes. */ -public class ShingleMatrixFilter extends TokenStream { +public final class ShingleMatrixFilter extends TokenStream { public static Character defaultSpacerCharacter = new Character('_'); public static TokenSettingsCodec defaultSettingsCodec = new OneDimensionalNonWeightedTokenSettingsCodec(); @@ -393,18 +393,17 @@ return token; } - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next(final Token reusableToken) throws java.io.IOException { - return super.next(reusableToken); + private Token getNextToken(Token token) throws IOException { + if (!this.incrementToken()) return null; + token.setTermBuffer(termAtt.termBuffer(), 0, termAtt.termLength()); + token.setPositionIncrement(posIncrAtt.getPositionIncrement()); + token.setFlags(flagsAtt.getFlags()); + token.setOffset(offsetAtt.startOffset(), offsetAtt.endOffset()); + token.setType(typeAtt.type()); + token.setPayload(payloadAtt.getPayload()); + return token; } - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next() throws java.io.IOException { - return super.next(); - } - private static final Token request_next_token = new Token(); /** @@ -429,7 +428,7 @@ if (ignoringSinglePrefixOrSuffixShingle && currentShingleLength == 1 && ((currentPermutationRows.get(currentPermutationTokensStartOffset)).getColumn().isFirst() || (currentPermutationRows.get(currentPermutationTokensStartOffset)).getColumn().isLast())) { - return next(reusableToken); + return getNextToken(reusableToken); } int termLength = 0; Index: contrib/analyzers/common/src/java/org/apache/lucene/analysis/sinks/DateRecognizerSinkTokenizer.java =================================================================== --- contrib/analyzers/common/src/java/org/apache/lucene/analysis/sinks/DateRecognizerSinkTokenizer.java (revision 821446) +++ contrib/analyzers/common/src/java/org/apache/lucene/analysis/sinks/DateRecognizerSinkTokenizer.java (working copy) @@ -1,88 +0,0 @@ -package org.apache.lucene.analysis.sinks; -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import org.apache.lucene.analysis.SinkTokenizer; -import org.apache.lucene.analysis.TeeSinkTokenFilter; -import org.apache.lucene.analysis.Token; - -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.text.ParseException; -import java.util.List; -import java.util.Date; - - -/** - * Attempts to parse the {@link org.apache.lucene.analysis.Token#termBuffer()} as a Date using a {@link java.text.DateFormat}. - * If the value is a Date, it will add it to the sink. - *

- * Also marks the sink token with {@link org.apache.lucene.analysis.Token#type()} equal to {@link #DATE_TYPE} - * - * @deprecated Use {@link DateRecognizerSinkFilter} and {@link TeeSinkTokenFilter} instead. - **/ -public class DateRecognizerSinkTokenizer extends SinkTokenizer { - public static final String DATE_TYPE = "date"; - - protected DateFormat dateFormat; - - /** - * Uses {@link java.text.SimpleDateFormat#getDateInstance()} as the {@link java.text.DateFormat} object. - */ - public DateRecognizerSinkTokenizer() { - this(null, SimpleDateFormat.getDateInstance()); - } - - public DateRecognizerSinkTokenizer(DateFormat dateFormat) { - this(null, dateFormat); - } - - /** - * Uses {@link java.text.SimpleDateFormat#getDateInstance()} as the {@link java.text.DateFormat} object. - * @param input The input list of Tokens that are already Dates. They should be marked as type {@link #DATE_TYPE} for completeness - */ - public DateRecognizerSinkTokenizer(List/**/ input) { - this(input, SimpleDateFormat.getDateInstance()); - } - - /** - * - * @param input - * @param dateFormat The date format to use to try and parse the date. Note, this SinkTokenizer makes no attempt to synchronize the DateFormat object - */ - public DateRecognizerSinkTokenizer(List/**/ input, DateFormat dateFormat) { - super(input); - this.dateFormat = dateFormat; - } - - - public void add(Token t) { - //Check to see if this token is a date - if (t != null) { - try { - Date date = dateFormat.parse(t.term());//We don't care about the date, just that we can parse it as a date - if (date != null) { - t.setType(DATE_TYPE); - super.add(t); - } - } catch (ParseException e) { - - } - } - - } -} Index: contrib/analyzers/common/src/java/org/apache/lucene/analysis/sinks/TokenRangeSinkTokenizer.java =================================================================== --- contrib/analyzers/common/src/java/org/apache/lucene/analysis/sinks/TokenRangeSinkTokenizer.java (revision 821446) +++ contrib/analyzers/common/src/java/org/apache/lucene/analysis/sinks/TokenRangeSinkTokenizer.java (working copy) @@ -1,56 +0,0 @@ -package org.apache.lucene.analysis.sinks; - -import org.apache.lucene.analysis.SinkTokenizer; -import org.apache.lucene.analysis.TeeSinkTokenFilter; -import org.apache.lucene.analysis.Token; - -import java.io.IOException; -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -/** - * Counts the tokens as they go by and saves to the internal list those between the range of lower and upper, exclusive of upper - * @deprecated Use {@link TokenRangeSinkFilter} and {@link TeeSinkTokenFilter} instead. - **/ -public class TokenRangeSinkTokenizer extends SinkTokenizer { - private int lower; - private int upper; - private int count; - - public TokenRangeSinkTokenizer(int lower, int upper) { - this.lower = lower; - this.upper = upper; - } - - public TokenRangeSinkTokenizer(int initCap, int lower, int upper) { - super(initCap); - this.lower = lower; - this.upper = upper; - } - - public void add(Token t) { - if (count >= lower && count < upper){ - super.add(t); - } - count++; - } - - public void reset() throws IOException { - count = 0; - } -} Index: contrib/analyzers/common/src/java/org/apache/lucene/analysis/sinks/TokenTypeSinkTokenizer.java =================================================================== --- contrib/analyzers/common/src/java/org/apache/lucene/analysis/sinks/TokenTypeSinkTokenizer.java (revision 821446) +++ contrib/analyzers/common/src/java/org/apache/lucene/analysis/sinks/TokenTypeSinkTokenizer.java (working copy) @@ -1,56 +0,0 @@ -package org.apache.lucene.analysis.sinks; -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import org.apache.lucene.analysis.SinkTokenizer; -import org.apache.lucene.analysis.TeeSinkTokenFilter; -import org.apache.lucene.analysis.Token; - -import java.util.List; - - -/** - * If the {@link org.apache.lucene.analysis.Token#type()} matches the passed in typeToMatch then - * add it to the sink - * - * @deprecated Use {@link TokenTypeSinkFilter} and {@link TeeSinkTokenFilter} instead. - **/ -public class TokenTypeSinkTokenizer extends SinkTokenizer { - - private String typeToMatch; - - public TokenTypeSinkTokenizer(String typeToMatch) { - this.typeToMatch = typeToMatch; - } - - public TokenTypeSinkTokenizer(int initCap, String typeToMatch) { - super(initCap); - this.typeToMatch = typeToMatch; - } - - public TokenTypeSinkTokenizer(List/**/ input, String typeToMatch) { - super(input); - this.typeToMatch = typeToMatch; - } - - public void add(Token t) { - //check to see if this is a Category - if (t != null && typeToMatch.equals(t.type())){ - super.add(t); - } - } -} Index: contrib/analyzers/common/src/java/org/apache/lucene/analysis/th/ThaiWordFilter.java =================================================================== --- contrib/analyzers/common/src/java/org/apache/lucene/analysis/th/ThaiWordFilter.java (revision 821446) +++ contrib/analyzers/common/src/java/org/apache/lucene/analysis/th/ThaiWordFilter.java (working copy) @@ -32,7 +32,7 @@ * Token that is Thai into separate Token(s) for each Thai word. * @version 0.2 */ -public class ThaiWordFilter extends TokenFilter { +public final class ThaiWordFilter extends TokenFilter { private BreakIterator breaker = null; @@ -82,18 +82,6 @@ return false; } - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next(final Token reusableToken) throws java.io.IOException { - return super.next(reusableToken); - } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next() throws java.io.IOException { - return super.next(); - } - public void reset() throws IOException { super.reset(); thaiState = null; Index: contrib/analyzers/common/src/test/org/apache/lucene/analysis/miscellaneous/TestSingleTokenTokenFilter.java =================================================================== --- contrib/analyzers/common/src/test/org/apache/lucene/analysis/miscellaneous/TestSingleTokenTokenFilter.java (revision 821446) +++ contrib/analyzers/common/src/test/org/apache/lucene/analysis/miscellaneous/TestSingleTokenTokenFilter.java (working copy) @@ -20,25 +20,29 @@ import java.io.IOException; import org.apache.lucene.util.LuceneTestCase; +import org.apache.lucene.util.AttributeImpl; import org.apache.lucene.analysis.Token; +import org.apache.lucene.analysis.tokenattributes.TermAttribute; public class TestSingleTokenTokenFilter extends LuceneTestCase { public void test() throws IOException { - final Token reusableToken = new Token(); - Token token = new Token(); SingleTokenTokenStream ts = new SingleTokenTokenStream(token); + AttributeImpl tokenAtt = (AttributeImpl) ts.addAttribute(TermAttribute.class); + assertTrue(tokenAtt instanceof Token); ts.reset(); - assertEquals(token, ts.next(reusableToken)); - assertNull(ts.next(reusableToken)); + assertTrue(ts.incrementToken()); + assertEquals(token, tokenAtt); + assertFalse(ts.incrementToken()); token = new Token("hallo", 10, 20, "someType"); ts.setToken(token); ts.reset(); - assertEquals(token, ts.next(reusableToken)); - assertNull(ts.next(reusableToken)); + assertTrue(ts.incrementToken()); + assertEquals(token, tokenAtt); + assertFalse(ts.incrementToken()); } } Index: contrib/queryparser/src/test/org/apache/lucene/queryParser/standard/TestMultiAnalyzerQPHelper.java =================================================================== --- contrib/queryparser/src/test/org/apache/lucene/queryParser/standard/TestMultiAnalyzerQPHelper.java (revision 821446) +++ contrib/queryparser/src/test/org/apache/lucene/queryParser/standard/TestMultiAnalyzerQPHelper.java (working copy) @@ -181,48 +181,6 @@ } - /* - * (non-Javadoc) - * - * @see - * org.apache.lucene.analysis.TokenStream#next(org.apache.lucene.analysis - * .Token) - */ - @Override - public Token next(Token reusableToken) throws IOException { - - if (multiToken > 0) { - reusableToken.setTermBuffer("multi" + (multiToken + 1)); - reusableToken.setStartOffset(prevStartOffset); - reusableToken.setEndOffset(prevEndOffset); - reusableToken.setType(prevType); - reusableToken.setPositionIncrement(0); - multiToken--; - return reusableToken; - } else { - boolean next = (reusableToken = input.next(token)) != null; - if (next == false) { - return null; - } - prevType = reusableToken.type(); - prevStartOffset = reusableToken.startOffset(); - prevEndOffset = reusableToken.endOffset(); - String text = reusableToken.term(); - if (text.equals("triplemulti")) { - multiToken = 2; - return reusableToken; - } else if (text.equals("multi")) { - multiToken = 1; - return reusableToken; - } else { - return reusableToken; - } - } - - } - - private Token token = new Token(); - public final boolean incrementToken() throws java.io.IOException { if (multiToken > 0) { termAtt.setTermBuffer("multi" + (multiToken + 1)); @@ -282,30 +240,6 @@ posIncrAtt = addAttribute(PositionIncrementAttribute.class); } - private Token token = new Token(); - - /* - * (non-Javadoc) - * - * @see org.apache.lucene.analysis.TokenStream#next() - */ - @Override - public Token next(Token reusableToken) throws IOException { - while (null != (reusableToken = input.next(token))) { - String term = reusableToken.term(); - if (term.equals("the")) { - // stopword, do nothing - } else if (term.equals("quick")) { - reusableToken.setPositionIncrement(2); - return reusableToken; - } else { - reusableToken.setPositionIncrement(1); - return reusableToken; - } - } - return null; - } - public final boolean incrementToken() throws java.io.IOException { while (input.incrementToken()) { if (termAtt.term().equals("the")) { Index: contrib/queryparser/src/test/org/apache/lucene/queryParser/standard/TestMultiAnalyzerWrapper.java =================================================================== --- contrib/queryparser/src/test/org/apache/lucene/queryParser/standard/TestMultiAnalyzerWrapper.java (revision 821446) +++ contrib/queryparser/src/test/org/apache/lucene/queryParser/standard/TestMultiAnalyzerWrapper.java (working copy) @@ -175,48 +175,6 @@ } - /* - * (non-Javadoc) - * - * @see - * org.apache.lucene.analysis.TokenStream#next(org.apache.lucene.analysis - * .Token) - */ - @Override - public Token next(Token reusableToken) throws IOException { - - if (multiToken > 0) { - reusableToken.setTermBuffer("multi" + (multiToken + 1)); - reusableToken.setStartOffset(prevStartOffset); - reusableToken.setEndOffset(prevEndOffset); - reusableToken.setType(prevType); - reusableToken.setPositionIncrement(0); - multiToken--; - return reusableToken; - } else { - boolean next = (reusableToken = input.next(token)) != null; - if (next == false) { - return null; - } - prevType = reusableToken.type(); - prevStartOffset = reusableToken.startOffset(); - prevEndOffset = reusableToken.endOffset(); - String text = reusableToken.term(); - if (text.equals("triplemulti")) { - multiToken = 2; - return reusableToken; - } else if (text.equals("multi")) { - multiToken = 1; - return reusableToken; - } else { - return reusableToken; - } - } - - } - - private Token token = new Token(); - public final boolean incrementToken() throws java.io.IOException { if (multiToken > 0) { termAtt.setTermBuffer("multi" + (multiToken + 1)); @@ -276,30 +234,6 @@ posIncrAtt = addAttribute(PositionIncrementAttribute.class); } - private Token token = new Token(); - - /* - * (non-Javadoc) - * - * @see org.apache.lucene.analysis.TokenStream#next() - */ - @Override - public Token next(Token reusableToken) throws IOException { - while (null != (reusableToken = input.next(token))) { - String term = reusableToken.term(); - if (term.equals("the")) { - // stopword, do nothing - } else if (term.equals("quick")) { - reusableToken.setPositionIncrement(2); - return reusableToken; - } else { - reusableToken.setPositionIncrement(1); - return reusableToken; - } - } - return null; - } - public final boolean incrementToken() throws java.io.IOException { while (input.incrementToken()) { if (termAtt.term().equals("the")) { Index: contrib/queryparser/src/test/org/apache/lucene/queryParser/standard/TestMultiFieldQPHelper.java =================================================================== --- contrib/queryparser/src/test/org/apache/lucene/queryParser/standard/TestMultiFieldQPHelper.java (revision 821446) +++ contrib/queryparser/src/test/org/apache/lucene/queryParser/standard/TestMultiFieldQPHelper.java (working copy) @@ -359,8 +359,8 @@ } private static class EmptyTokenStream extends TokenStream { - public Token next(final Token reusableToken) { - return null; + public boolean incrementToken() { + return false; } } } Index: contrib/queryparser/src/test/org/apache/lucene/queryParser/standard/TestMultiFieldQueryParserWrapper.java =================================================================== --- contrib/queryparser/src/test/org/apache/lucene/queryParser/standard/TestMultiFieldQueryParserWrapper.java (revision 821446) +++ contrib/queryparser/src/test/org/apache/lucene/queryParser/standard/TestMultiFieldQueryParserWrapper.java (working copy) @@ -357,8 +357,8 @@ } private static class EmptyTokenStream extends TokenStream { - public Token next(final Token reusableToken) { - return null; + public boolean incrementToken() { + return false; } } } Index: contrib/queryparser/src/test/org/apache/lucene/queryParser/standard/TestQPHelper.java =================================================================== --- contrib/queryparser/src/test/org/apache/lucene/queryParser/standard/TestQPHelper.java (revision 821446) +++ contrib/queryparser/src/test/org/apache/lucene/queryParser/standard/TestQPHelper.java (working copy) @@ -113,33 +113,6 @@ boolean inPhrase = false; int savedStart = 0, savedEnd = 0; - public Token next(Token reusableToken) throws IOException { - Token token = reusableToken; - - if (inPhrase) { - inPhrase = false; - token.setTermBuffer("phrase2"); - token.setStartOffset(savedStart); - token.setEndOffset(savedEnd); - return reusableToken; - } else - while ((token = this.input.next(reusableToken)) != null) { - if (token.term().equals("phrase")) { - inPhrase = true; - savedStart = token.startOffset(); - savedEnd = token.endOffset(); - token.setTermBuffer("phrase1"); - token.setStartOffset(savedStart); - token.setEndOffset(savedEnd); - return token; - } else if (!token.term().equals("stop")) - return token; - } - - return null; - - } - public boolean incrementToken() throws IOException { if (inPhrase) { inPhrase = false; Index: contrib/queryparser/src/test/org/apache/lucene/queryParser/standard/TestQueryParserWrapper.java =================================================================== --- contrib/queryparser/src/test/org/apache/lucene/queryParser/standard/TestQueryParserWrapper.java (revision 821446) +++ contrib/queryparser/src/test/org/apache/lucene/queryParser/standard/TestQueryParserWrapper.java (working copy) @@ -108,33 +108,6 @@ boolean inPhrase = false; int savedStart = 0, savedEnd = 0; - public Token next(Token reusableToken) throws IOException { - Token token = reusableToken; - - if (inPhrase) { - inPhrase = false; - token.setTermBuffer("phrase2"); - token.setStartOffset(savedStart); - token.setEndOffset(savedEnd); - return reusableToken; - } else - while ((token = this.input.next(reusableToken)) != null) { - if (token.term().equals("phrase")) { - inPhrase = true; - savedStart = token.startOffset(); - savedEnd = token.endOffset(); - token.setTermBuffer("phrase1"); - token.setStartOffset(savedStart); - token.setEndOffset(savedEnd); - return token; - } else if (!token.term().equals("stop")) - return token; - } - - return null; - - } - public boolean incrementToken() throws IOException { if (inPhrase) { inPhrase = false; Index: contrib/snowball/src/java/org/apache/lucene/analysis/snowball/SnowballFilter.java =================================================================== --- contrib/snowball/src/java/org/apache/lucene/analysis/snowball/SnowballFilter.java (revision 821446) +++ contrib/snowball/src/java/org/apache/lucene/analysis/snowball/SnowballFilter.java (working copy) @@ -30,7 +30,7 @@ * * Available stemmers are listed in {@link org.tartarus.snowball.ext}. */ -public class SnowballFilter extends TokenFilter { +public final class SnowballFilter extends TokenFilter { private SnowballProgram stemmer; @@ -78,16 +78,4 @@ return false; } } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next(final Token reusableToken) throws java.io.IOException { - return super.next(reusableToken); - } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next() throws java.io.IOException { - return super.next(); - } } Index: contrib/wikipedia/src/java/org/apache/lucene/wikipedia/analysis/WikipediaTokenizer.java =================================================================== --- contrib/wikipedia/src/java/org/apache/lucene/wikipedia/analysis/WikipediaTokenizer.java (revision 821446) +++ contrib/wikipedia/src/java/org/apache/lucene/wikipedia/analysis/WikipediaTokenizer.java (working copy) @@ -39,7 +39,7 @@ * EXPERIMENTAL !!!!!!!!! * NOTE: This Tokenizer is considered experimental and the grammar is subject to change in the trunk and in follow up releases. */ -public class WikipediaTokenizer extends Tokenizer { +public final class WikipediaTokenizer extends Tokenizer { public static final String INTERNAL_LINK = "il"; public static final String EXTERNAL_LINK = "el"; //The URL part of the link, i.e. the first token @@ -187,18 +187,6 @@ this.termAtt = addAttribute(TermAttribute.class); this.flagsAtt = addAttribute(FlagsAttribute.class); } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next(final Token reusableToken) throws java.io.IOException { - return super.next(reusableToken); - } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next() throws java.io.IOException { - return super.next(); - } /* * (non-Javadoc) Index: src/java/org/apache/lucene/analysis/ASCIIFoldingFilter.java =================================================================== --- src/java/org/apache/lucene/analysis/ASCIIFoldingFilter.java (revision 821446) +++ src/java/org/apache/lucene/analysis/ASCIIFoldingFilter.java (working copy) @@ -50,11 +50,6 @@ * * * See: http://en.wikipedia.org/wiki/Latin_characters_in_Unicode - * - * The set of character conversions supported by this class is a superset of - * those supported by Lucene's {@link ISOLatin1AccentFilter} which strips - * accents from Latin1 characters. For example, 'à' will be replaced by - * 'a'. */ public final class ASCIIFoldingFilter extends TokenFilter { public ASCIIFoldingFilter(TokenStream input) Index: src/java/org/apache/lucene/analysis/CachingTokenFilter.java =================================================================== --- src/java/org/apache/lucene/analysis/CachingTokenFilter.java (revision 821446) +++ src/java/org/apache/lucene/analysis/CachingTokenFilter.java (working copy) @@ -33,7 +33,7 @@ * {@link TokenStream#reset()}, which repositions the * stream to the first Token. */ -public class CachingTokenFilter extends TokenFilter { +public final class CachingTokenFilter extends TokenFilter { private List cache = null; private Iterator iterator = null; private AttributeSource.State finalState; @@ -41,18 +41,6 @@ public CachingTokenFilter(TokenStream input) { super(input); } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next(final Token reusableToken) throws IOException { - return super.next(reusableToken); - } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next() throws IOException { - return super.next(); - } public final boolean incrementToken() throws IOException { if (cache == null) { Index: src/java/org/apache/lucene/analysis/CharTokenizer.java =================================================================== --- src/java/org/apache/lucene/analysis/CharTokenizer.java (revision 821446) +++ src/java/org/apache/lucene/analysis/CharTokenizer.java (working copy) @@ -114,18 +114,6 @@ offsetAtt.setOffset(finalOffset, finalOffset); } - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next(final Token reusableToken) throws IOException { - return super.next(reusableToken); - } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next() throws IOException { - return super.next(); - } - public void reset(Reader input) throws IOException { super.reset(input); bufferIndex = 0; Index: src/java/org/apache/lucene/analysis/ISOLatin1AccentFilter.java =================================================================== --- src/java/org/apache/lucene/analysis/ISOLatin1AccentFilter.java (revision 821446) +++ src/java/org/apache/lucene/analysis/ISOLatin1AccentFilter.java (working copy) @@ -1,269 +0,0 @@ -package org.apache.lucene.analysis; - -import org.apache.lucene.analysis.tokenattributes.TermAttribute; - -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * A filter that replaces accented characters in the ISO Latin 1 character set - * (ISO-8859-1) by their unaccented equivalent. The case will not be altered. - *

- * For instance, 'à' will be replaced by 'a'. - *

- * - * @deprecated in favor of {@link ASCIIFoldingFilter} which covers a superset - * of Latin 1. This class will be removed in Lucene 3.0. - */ -public class ISOLatin1AccentFilter extends TokenFilter { - public ISOLatin1AccentFilter(TokenStream input) { - super(input); - termAtt = addAttribute(TermAttribute.class); - } - - private char[] output = new char[256]; - private int outputPos; - private TermAttribute termAtt; - - public final boolean incrementToken() throws java.io.IOException { - if (input.incrementToken()) { - final char[] buffer = termAtt.termBuffer(); - final int length = termAtt.termLength(); - // If no characters actually require rewriting then we - // just return token as-is: - for(int i=0;i= '\u00c0' && c <= '\uFB06') { - removeAccents(buffer, length); - termAtt.setTermBuffer(output, 0, outputPos); - break; - } - } - return true; - } else - return false; - } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next(final Token reusableToken) throws java.io.IOException { - return super.next(reusableToken); - } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next() throws java.io.IOException { - return super.next(); - } - - /** - * To replace accented characters in a String by unaccented equivalents. - */ - public final void removeAccents(char[] input, int length) { - - // Worst-case length required: - final int maxSizeNeeded = 2*length; - - int size = output.length; - while (size < maxSizeNeeded) - size *= 2; - - if (size != output.length) - output = new char[size]; - - outputPos = 0; - - int pos = 0; - - for (int i=0; i '\uFB06') - output[outputPos++] = c; - else { - switch (c) { - case '\u00C0' : // À - case '\u00C1' : // Á - case '\u00C2' : //  - case '\u00C3' : // à - case '\u00C4' : // Ä - case '\u00C5' : // Å - output[outputPos++] = 'A'; - break; - case '\u00C6' : // Æ - output[outputPos++] = 'A'; - output[outputPos++] = 'E'; - break; - case '\u00C7' : // Ç - output[outputPos++] = 'C'; - break; - case '\u00C8' : // È - case '\u00C9' : // É - case '\u00CA' : // Ê - case '\u00CB' : // Ë - output[outputPos++] = 'E'; - break; - case '\u00CC' : // Ì - case '\u00CD' : // Í - case '\u00CE' : // Î - case '\u00CF' : // Ï - output[outputPos++] = 'I'; - break; - case '\u0132' : // IJ - output[outputPos++] = 'I'; - output[outputPos++] = 'J'; - break; - case '\u00D0' : // Ð - output[outputPos++] = 'D'; - break; - case '\u00D1' : // Ñ - output[outputPos++] = 'N'; - break; - case '\u00D2' : // Ò - case '\u00D3' : // Ó - case '\u00D4' : // Ô - case '\u00D5' : // Õ - case '\u00D6' : // Ö - case '\u00D8' : // Ø - output[outputPos++] = 'O'; - break; - case '\u0152' : // Œ - output[outputPos++] = 'O'; - output[outputPos++] = 'E'; - break; - case '\u00DE' : // Þ - output[outputPos++] = 'T'; - output[outputPos++] = 'H'; - break; - case '\u00D9' : // Ù - case '\u00DA' : // Ú - case '\u00DB' : // Û - case '\u00DC' : // Ü - output[outputPos++] = 'U'; - break; - case '\u00DD' : // Ý - case '\u0178' : // Ÿ - output[outputPos++] = 'Y'; - break; - case '\u00E0' : // à - case '\u00E1' : // á - case '\u00E2' : // â - case '\u00E3' : // ã - case '\u00E4' : // ä - case '\u00E5' : // å - output[outputPos++] = 'a'; - break; - case '\u00E6' : // æ - output[outputPos++] = 'a'; - output[outputPos++] = 'e'; - break; - case '\u00E7' : // ç - output[outputPos++] = 'c'; - break; - case '\u00E8' : // è - case '\u00E9' : // é - case '\u00EA' : // ê - case '\u00EB' : // ë - output[outputPos++] = 'e'; - break; - case '\u00EC' : // ì - case '\u00ED' : // í - case '\u00EE' : // î - case '\u00EF' : // ï - output[outputPos++] = 'i'; - break; - case '\u0133' : // ij - output[outputPos++] = 'i'; - output[outputPos++] = 'j'; - break; - case '\u00F0' : // ð - output[outputPos++] = 'd'; - break; - case '\u00F1' : // ñ - output[outputPos++] = 'n'; - break; - case '\u00F2' : // ò - case '\u00F3' : // ó - case '\u00F4' : // ô - case '\u00F5' : // õ - case '\u00F6' : // ö - case '\u00F8' : // ø - output[outputPos++] = 'o'; - break; - case '\u0153' : // œ - output[outputPos++] = 'o'; - output[outputPos++] = 'e'; - break; - case '\u00DF' : // ß - output[outputPos++] = 's'; - output[outputPos++] = 's'; - break; - case '\u00FE' : // þ - output[outputPos++] = 't'; - output[outputPos++] = 'h'; - break; - case '\u00F9' : // ù - case '\u00FA' : // ú - case '\u00FB' : // û - case '\u00FC' : // ü - output[outputPos++] = 'u'; - break; - case '\u00FD' : // ý - case '\u00FF' : // ÿ - output[outputPos++] = 'y'; - break; - case '\uFB00': // ff - output[outputPos++] = 'f'; - output[outputPos++] = 'f'; - break; - case '\uFB01': // fi - output[outputPos++] = 'f'; - output[outputPos++] = 'i'; - break; - case '\uFB02': // fl - output[outputPos++] = 'f'; - output[outputPos++] = 'l'; - break; - // following 2 are commented as they can break the maxSizeNeeded (and doing *3 could be expensive) -// case '\uFB03': // ffi -// output[outputPos++] = 'f'; -// output[outputPos++] = 'f'; -// output[outputPos++] = 'i'; -// break; -// case '\uFB04': // ffl -// output[outputPos++] = 'f'; -// output[outputPos++] = 'f'; -// output[outputPos++] = 'l'; -// break; - case '\uFB05': // ſt - output[outputPos++] = 'f'; - output[outputPos++] = 't'; - break; - case '\uFB06': // st - output[outputPos++] = 's'; - output[outputPos++] = 't'; - break; - default : - output[outputPos++] = c; - break; - } - } - } - } -} Index: src/java/org/apache/lucene/analysis/KeywordTokenizer.java =================================================================== --- src/java/org/apache/lucene/analysis/KeywordTokenizer.java (revision 821446) +++ src/java/org/apache/lucene/analysis/KeywordTokenizer.java (working copy) @@ -27,7 +27,7 @@ /** * Emits the entire input as a single token. */ -public class KeywordTokenizer extends Tokenizer { +public final class KeywordTokenizer extends Tokenizer { private static final int DEFAULT_BUFFER_SIZE = 256; @@ -88,18 +88,6 @@ offsetAtt.setOffset(finalOffset, finalOffset); } - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next(final Token reusableToken) throws IOException { - return super.next(reusableToken); - } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next() throws IOException { - return super.next(); - } - public void reset(Reader input) throws IOException { super.reset(input); this.done = false; Index: src/java/org/apache/lucene/analysis/SinkTokenizer.java =================================================================== --- src/java/org/apache/lucene/analysis/SinkTokenizer.java (revision 821446) +++ src/java/org/apache/lucene/analysis/SinkTokenizer.java (working copy) @@ -1,110 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.lucene.analysis; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - - -/** - * A SinkTokenizer can be used to cache Tokens for use in an Analyzer - *

- * WARNING: {@link TeeTokenFilter} and {@link SinkTokenizer} only work with the old TokenStream API. - * If you switch to the new API, you need to use {@link TeeSinkTokenFilter} instead, which offers - * the same functionality. - * @see TeeTokenFilter - * @deprecated Use {@link TeeSinkTokenFilter} instead - * - **/ -public class SinkTokenizer extends Tokenizer { - protected List/**/ lst = new ArrayList/**/(); - protected Iterator/**/ iter; - - public SinkTokenizer(List/**/ input) { - this.lst = input; - if (this.lst == null) this.lst = new ArrayList/**/(); - } - - public SinkTokenizer() { - this.lst = new ArrayList/**/(); - } - - public SinkTokenizer(int initCap){ - this.lst = new ArrayList/**/(initCap); - } - - /** - * Get the tokens in the internal List. - *

- * WARNING: Adding tokens to this list requires the {@link #reset()} method to be called in order for them - * to be made available. Also, this Tokenizer does nothing to protect against {@link java.util.ConcurrentModificationException}s - * in the case of adds happening while {@link #next(org.apache.lucene.analysis.Token)} is being called. - *

- * WARNING: Since this SinkTokenizer can be reset and the cached tokens made available again, do not modify them. Modify clones instead. - * - * @return A List of {@link org.apache.lucene.analysis.Token}s - */ - public List/**/ getTokens() { - return lst; - } - - /** - * Returns the next token out of the list of cached tokens - * @return The next {@link org.apache.lucene.analysis.Token} in the Sink. - * @throws IOException - */ - public Token next(final Token reusableToken) throws IOException { - assert reusableToken != null; - if (iter == null) iter = lst.iterator(); - // Since this TokenStream can be reset we have to maintain the tokens as immutable - if (iter.hasNext()) { - Token nextToken = (Token) iter.next(); - return (Token) nextToken.clone(); - } - return null; - } - - /** - * Override this method to cache only certain tokens, or new tokens based - * on the old tokens. - * - * @param t The {@link org.apache.lucene.analysis.Token} to add to the sink - */ - public void add(Token t) { - if (t == null) return; - lst.add((Token) t.clone()); - } - - public void close() throws IOException { - //nothing to close - input = null; - lst = null; - } - - /** - * Reset the internal data structures to the start at the front of the list of tokens. Should be called - * if tokens were added to the list after an invocation of {@link #next(Token)} - * @throws IOException - */ - public void reset() throws IOException { - iter = lst.iterator(); - } -} - Index: src/java/org/apache/lucene/analysis/standard/StandardTokenizer.java =================================================================== --- src/java/org/apache/lucene/analysis/standard/StandardTokenizer.java (revision 821446) +++ src/java/org/apache/lucene/analysis/standard/StandardTokenizer.java (working copy) @@ -45,7 +45,7 @@ * directory to your project and maintaining your own grammar-based tokenizer. */ -public class StandardTokenizer extends Tokenizer { +public final class StandardTokenizer extends Tokenizer { /** A private instance of the JFlex-constructed scanner */ private final StandardTokenizerImpl scanner; @@ -209,18 +209,6 @@ offsetAtt.setOffset(finalOffset, finalOffset); } - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next(final Token reusableToken) throws IOException { - return super.next(reusableToken); - } - - /** @deprecated Will be removed in Lucene 3.0. This method is final, as it should - * not be overridden. Delegates to the backwards compatibility layer. */ - public final Token next() throws IOException { - return super.next(); - } - /* * (non-Javadoc) * Index: src/java/org/apache/lucene/analysis/TeeTokenFilter.java =================================================================== --- src/java/org/apache/lucene/analysis/TeeTokenFilter.java (revision 821446) +++ src/java/org/apache/lucene/analysis/TeeTokenFilter.java (working copy) @@ -1,80 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.lucene.analysis; - -import java.io.IOException; - - -/** - * Works in conjunction with the SinkTokenizer to provide the ability to set aside tokens - * that have already been analyzed. This is useful in situations where multiple fields share - * many common analysis steps and then go their separate ways. - *

- * It is also useful for doing things like entity extraction or proper noun analysis as - * part of the analysis workflow and saving off those tokens for use in another field. - * - *

-SinkTokenizer sink1 = new SinkTokenizer();
-SinkTokenizer sink2 = new SinkTokenizer();
-
-TokenStream source1 = new TeeTokenFilter(new TeeTokenFilter(new WhitespaceTokenizer(reader1), sink1), sink2);
-TokenStream source2 = new TeeTokenFilter(new TeeTokenFilter(new WhitespaceTokenizer(reader2), sink1), sink2);
-
-TokenStream final1 = new LowerCaseFilter(source1);
-TokenStream final2 = source2;
-TokenStream final3 = new EntityDetect(sink1);
-TokenStream final4 = new URLDetect(sink2);
-
-d.add(new Field("f1", final1));
-d.add(new Field("f2", final2));
-d.add(new Field("f3", final3));
-d.add(new Field("f4", final4));
- * 
- * In this example, sink1 and sink2 will both get tokens from both - * reader1 and reader2 after whitespace tokenizer - * and now we can further wrap any of these in extra analysis, and more "sources" can be inserted if desired. - * It is important, that tees are consumed before sinks (in the above example, the field names must be - * less the sink's field names). - * Note, the EntityDetect and URLDetect TokenStreams are for the example and do not currently exist in Lucene -

- * - * See LUCENE-1058. - *

- * WARNING: {@link TeeTokenFilter} and {@link SinkTokenizer} only work with the old TokenStream API. - * If you switch to the new API, you need to use {@link TeeSinkTokenFilter} instead, which offers - * the same functionality. - - * @see SinkTokenizer - * @deprecated Use {@link TeeSinkTokenFilter} instead - **/ -public class TeeTokenFilter extends TokenFilter { - SinkTokenizer sink; - - public TeeTokenFilter(TokenStream input, SinkTokenizer sink) { - super(input); - this.sink = sink; - } - - public Token next(final Token reusableToken) throws IOException { - assert reusableToken != null; - Token nextToken = input.next(reusableToken); - sink.add(nextToken); - return nextToken; - } - -} Index: src/java/org/apache/lucene/analysis/Token.java =================================================================== --- src/java/org/apache/lucene/analysis/Token.java (revision 821446) +++ src/java/org/apache/lucene/analysis/Token.java (working copy) @@ -867,9 +867,6 @@ if (payload !=null) { to.payload = (Payload) payload.clone(); } - // remove the following optimization in 3.0 when old TokenStream API removed: - } else if (target instanceof TokenWrapper) { - ((TokenWrapper) target).delegate = (Token) this.clone(); } else { initTermBuffer(); ((TermAttribute) target).setTermBuffer(termBuffer, 0, termLength); Index: src/java/org/apache/lucene/analysis/TokenStream.java =================================================================== --- src/java/org/apache/lucene/analysis/TokenStream.java (revision 821446) +++ src/java/org/apache/lucene/analysis/TokenStream.java (working copy) @@ -18,18 +18,10 @@ */ import java.io.IOException; -import java.util.IdentityHashMap; -import org.apache.lucene.analysis.tokenattributes.FlagsAttribute; -import org.apache.lucene.analysis.tokenattributes.OffsetAttribute; -import org.apache.lucene.analysis.tokenattributes.PayloadAttribute; -import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute; -import org.apache.lucene.analysis.tokenattributes.TermAttribute; -import org.apache.lucene.analysis.tokenattributes.TypeAttribute; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.index.IndexWriter; -import org.apache.lucene.index.Payload; import org.apache.lucene.util.Attribute; import org.apache.lucene.util.AttributeImpl; import org.apache.lucene.util.AttributeSource; @@ -86,95 +78,11 @@ */ public abstract class TokenStream extends AttributeSource { - /** @deprecated Remove this when old API is removed! */ - private static final AttributeFactory DEFAULT_TOKEN_WRAPPER_ATTRIBUTE_FACTORY - = new TokenWrapperAttributeFactory(AttributeFactory.DEFAULT_ATTRIBUTE_FACTORY); - - /** @deprecated Remove this when old API is removed! */ - private final TokenWrapper tokenWrapper; - - /** @deprecated Remove this when old API is removed! */ - private static boolean onlyUseNewAPI = false; - - /** @deprecated Remove this when old API is removed! */ - private final MethodSupport supportedMethods = getSupportedMethods(this.getClass()); - - /** @deprecated Remove this when old API is removed! */ - private static final class MethodSupport { - final boolean hasIncrementToken, hasReusableNext, hasNext; - - MethodSupport(Class clazz) { - hasIncrementToken = isMethodOverridden(clazz, "incrementToken"); - hasReusableNext = isMethodOverridden(clazz, "next", Token.class); - hasNext = isMethodOverridden(clazz, "next"); - } - - private static boolean isMethodOverridden(Class clazz, String name, Class... params) { - try { - return clazz.getMethod(name, params).getDeclaringClass() != TokenStream.class; - } catch (NoSuchMethodException e) { - // should not happen - throw new RuntimeException(e); - } - } - } - - /** @deprecated Remove this when old API is removed! */ - private static final IdentityHashMap,MethodSupport> knownMethodSupport = - new IdentityHashMap,MethodSupport>(); - - /** @deprecated Remove this when old API is removed! */ - private static MethodSupport getSupportedMethods(Class clazz) { - MethodSupport supportedMethods; - synchronized(knownMethodSupport) { - supportedMethods = knownMethodSupport.get(clazz); - if (supportedMethods == null) { - knownMethodSupport.put(clazz, supportedMethods = new MethodSupport(clazz)); - } - } - return supportedMethods; - } - - /** @deprecated Remove this when old API is removed! */ - private static final class TokenWrapperAttributeFactory extends AttributeFactory { - private final AttributeFactory delegate; - - private TokenWrapperAttributeFactory(AttributeFactory delegate) { - this.delegate = delegate; - } - - public AttributeImpl createAttributeInstance(Class attClass) { - return attClass.isAssignableFrom(TokenWrapper.class) - ? new TokenWrapper() - : delegate.createAttributeInstance(attClass); - } - - // this is needed for TeeSinkTokenStream's check for compatibility of AttributeSource, - // so two TokenStreams using old API have the same AttributeFactory wrapped by this one. - public boolean equals(Object other) { - if (this == other) return true; - if (other instanceof TokenWrapperAttributeFactory) { - final TokenWrapperAttributeFactory af = (TokenWrapperAttributeFactory) other; - return this.delegate.equals(af.delegate); - } - return false; - } - - public int hashCode() { - return delegate.hashCode() ^ 0x0a45ff31; - } - } - /** * A TokenStream using the default attribute factory. */ protected TokenStream() { - super(onlyUseNewAPI - ? AttributeFactory.DEFAULT_ATTRIBUTE_FACTORY - : TokenStream.DEFAULT_TOKEN_WRAPPER_ATTRIBUTE_FACTORY - ); - tokenWrapper = initTokenWrapper(null); - check(); + super(); } /** @@ -182,105 +90,16 @@ */ protected TokenStream(AttributeSource input) { super(input); - tokenWrapper = initTokenWrapper(input); - check(); } /** * A TokenStream using the supplied AttributeFactory for creating new {@link Attribute} instances. */ protected TokenStream(AttributeFactory factory) { - super(onlyUseNewAPI - ? factory - : new TokenWrapperAttributeFactory(factory) - ); - tokenWrapper = initTokenWrapper(null); - check(); + super(factory); } - - /** @deprecated Remove this when old API is removed! */ - private TokenWrapper initTokenWrapper(AttributeSource input) { - if (onlyUseNewAPI) { - // no wrapper needed - return null; - } else { - // if possible get the wrapper from the filter's input stream - if (input instanceof TokenStream && ((TokenStream) input).tokenWrapper != null) { - return ((TokenStream) input).tokenWrapper; - } - // check that all attributes are implemented by the same TokenWrapper instance - final Attribute att = addAttribute(TermAttribute.class); - if (att instanceof TokenWrapper && - addAttribute(TypeAttribute.class) == att && - addAttribute(PositionIncrementAttribute.class) == att && - addAttribute(FlagsAttribute.class) == att && - addAttribute(OffsetAttribute.class) == att && - addAttribute(PayloadAttribute.class) == att - ) { - return (TokenWrapper) att; - } else { - throw new UnsupportedOperationException( - "If onlyUseNewAPI is disabled, all basic Attributes must be implemented by the internal class "+ - "TokenWrapper. Please make sure, that all TokenStreams/TokenFilters in this chain have been "+ - "instantiated with this flag disabled and do not add any custom instances for the basic Attributes!" - ); - } - } - } - - /** @deprecated Remove this when old API is removed! */ - private void check() { - if (onlyUseNewAPI && !supportedMethods.hasIncrementToken) { - throw new UnsupportedOperationException(getClass().getName()+" does not implement incrementToken() which is needed for onlyUseNewAPI."); - } - - // a TokenStream subclass must at least implement one of the methods! - if (!(supportedMethods.hasIncrementToken || supportedMethods.hasNext || supportedMethods.hasReusableNext)) { - throw new UnsupportedOperationException(getClass().getName()+" does not implement any of incrementToken(), next(Token), next()."); - } - } /** - * For extra performance you can globally enable the new - * {@link #incrementToken} API using {@link Attribute}s. There will be a - * small, but in most cases negligible performance increase by enabling this, - * but it only works if all TokenStreams use the new API and - * implement {@link #incrementToken}. This setting can only be enabled - * globally. - *

- * This setting only affects TokenStreams instantiated after this - * call. All TokenStreams already created use the other setting. - *

- * All core {@link Analyzer}s are compatible with this setting, if you have - * your own TokenStreams that are also compatible, you should enable - * this. - *

- * When enabled, tokenization may throw {@link UnsupportedOperationException} - * s, if the whole tokenizer chain is not compatible eg one of the - * TokenStreams does not implement the new TokenStream API. - *

- * The default is false, so there is the fallback to the old API - * available. - * - * @deprecated This setting will no longer be needed in Lucene 3.0 as the old - * API will be removed. - */ - public static void setOnlyUseNewAPI(boolean onlyUseNewAPI) { - TokenStream.onlyUseNewAPI = onlyUseNewAPI; - } - - /** - * Returns if only the new API is used. - * - * @see #setOnlyUseNewAPI - * @deprecated This setting will no longer be needed in Lucene 3.0 as - * the old API will be removed. - */ - public static boolean getOnlyUseNewAPI() { - return onlyUseNewAPI; - } - - /** * Consumers (ie {@link IndexWriter}) use this method to advance the stream to * the next token. Implementing classes must implement this method and update * the appropriate {@link AttributeImpl}s with the attributes of the next @@ -303,25 +122,8 @@ * {@link #incrementToken()}. * * @return false for end of stream; true otherwise - * - *

- * Note that this method will be defined abstract in Lucene - * 3.0. */ - public boolean incrementToken() throws IOException { - assert tokenWrapper != null; - - final Token token; - if (supportedMethods.hasReusableNext) { - token = next(tokenWrapper.delegate); - } else { - assert supportedMethods.hasNext; - token = next(); - } - if (token == null) return false; - tokenWrapper.delegate = token; - return true; - } + public abstract boolean incrementToken() throws IOException; /** * This method is called by the consumer after the last token has been @@ -341,83 +143,6 @@ } /** - * Returns the next token in the stream, or null at EOS. When possible, the - * input Token should be used as the returned Token (this gives fastest - * tokenization performance), but this is not required and a new Token may be - * returned. Callers may re-use a single Token instance for successive calls - * to this method. - *

- * This implicitly defines a "contract" between consumers (callers of this - * method) and producers (implementations of this method that are the source - * for tokens): - *

- * Also, the producer must make no assumptions about a {@link Token} after it - * has been returned: the caller may arbitrarily change it. If the producer - * needs to hold onto the {@link Token} for subsequent calls, it must clone() - * it before storing it. Note that a {@link TokenFilter} is considered a - * consumer. - * - * @param reusableToken a {@link Token} that may or may not be used to return; - * this parameter should never be null (the callee is not required to - * check for null before using it, but it is a good idea to assert that - * it is not null.) - * @return next {@link Token} in the stream or null if end-of-stream was hit - * @deprecated The new {@link #incrementToken()} and {@link AttributeSource} - * APIs should be used instead. - */ - public Token next(final Token reusableToken) throws IOException { - assert reusableToken != null; - - if (tokenWrapper == null) - throw new UnsupportedOperationException("This TokenStream only supports the new Attributes API."); - - if (supportedMethods.hasIncrementToken) { - tokenWrapper.delegate = reusableToken; - return incrementToken() ? tokenWrapper.delegate : null; - } else { - assert supportedMethods.hasNext; - return next(); - } - } - - /** - * Returns the next {@link Token} in the stream, or null at EOS. - * - * @deprecated The returned Token is a "full private copy" (not re-used across - * calls to {@link #next()}) but will be slower than calling - * {@link #next(Token)} or using the new {@link #incrementToken()} - * method with the new {@link AttributeSource} API. - */ - public Token next() throws IOException { - if (tokenWrapper == null) - throw new UnsupportedOperationException("This TokenStream only supports the new Attributes API."); - - final Token nextToken; - if (supportedMethods.hasIncrementToken) { - final Token savedDelegate = tokenWrapper.delegate; - tokenWrapper.delegate = new Token(); - nextToken = incrementToken() ? tokenWrapper.delegate : null; - tokenWrapper.delegate = savedDelegate; - } else { - assert supportedMethods.hasReusableNext; - nextToken = next(new Token()); - } - - if (nextToken != null) { - Payload p = nextToken.getPayload(); - if (p != null) { - nextToken.setPayload((Payload) p.clone()); - } - } - return nextToken; - } - - /** * Resets this stream to the beginning. This is an optional operation, so * subclasses may or may not implement this method. {@link #reset()} is not needed for * the standard indexing process. However, if the tokens of a Index: src/java/org/apache/lucene/analysis/TokenWrapper.java =================================================================== --- src/java/org/apache/lucene/analysis/TokenWrapper.java (revision 821446) +++ src/java/org/apache/lucene/analysis/TokenWrapper.java (working copy) @@ -1,166 +0,0 @@ -package org.apache.lucene.analysis; - -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import org.apache.lucene.analysis.tokenattributes.OffsetAttribute; -import org.apache.lucene.analysis.tokenattributes.FlagsAttribute; -import org.apache.lucene.analysis.tokenattributes.PayloadAttribute; -import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute; -import org.apache.lucene.analysis.tokenattributes.TermAttribute; -import org.apache.lucene.analysis.tokenattributes.TypeAttribute; -import org.apache.lucene.index.Payload; -import org.apache.lucene.util.AttributeImpl; - -/** - * This class wraps a Token and supplies a single attribute instance - * where the delegate token can be replaced. - * @deprecated Will be removed, when old TokenStream API is removed. - */ -final class TokenWrapper extends AttributeImpl - implements Cloneable, TermAttribute, TypeAttribute, PositionIncrementAttribute, - FlagsAttribute, OffsetAttribute, PayloadAttribute { - - Token delegate; - - TokenWrapper() { - this(new Token()); - } - - TokenWrapper(Token delegate) { - this.delegate = delegate; - } - - // TermAttribute: - - public String term() { - return delegate.term(); - } - - public void setTermBuffer(char[] buffer, int offset, int length) { - delegate.setTermBuffer(buffer, offset, length); - } - - public void setTermBuffer(String buffer) { - delegate.setTermBuffer(buffer); - } - - public void setTermBuffer(String buffer, int offset, int length) { - delegate.setTermBuffer(buffer, offset, length); - } - - public char[] termBuffer() { - return delegate.termBuffer(); - } - - public char[] resizeTermBuffer(int newSize) { - return delegate.resizeTermBuffer(newSize); - } - - public int termLength() { - return delegate.termLength(); - } - - public void setTermLength(int length) { - delegate.setTermLength(length); - } - - // TypeAttribute: - - public String type() { - return delegate.type(); - } - - public void setType(String type) { - delegate.setType(type); - } - - public void setPositionIncrement(int positionIncrement) { - delegate.setPositionIncrement(positionIncrement); - } - - public int getPositionIncrement() { - return delegate.getPositionIncrement(); - } - - // FlagsAttribute - - public int getFlags() { - return delegate.getFlags(); - } - - public void setFlags(int flags) { - delegate.setFlags(flags); - } - - // OffsetAttribute - - public int startOffset() { - return delegate.startOffset(); - } - - public void setOffset(int startOffset, int endOffset) { - delegate.setOffset(startOffset, endOffset); - } - - public int endOffset() { - return delegate.endOffset(); - } - - // PayloadAttribute - - public Payload getPayload() { - return delegate.getPayload(); - } - - public void setPayload(Payload payload) { - delegate.setPayload(payload); - } - - // AttributeImpl - - public void clear() { - delegate.clear(); - } - - public String toString() { - return delegate.toString(); - } - - public int hashCode() { - return delegate.hashCode(); - } - - public boolean equals(Object other) { - if (other instanceof TokenWrapper) { - return ((TokenWrapper) other).delegate.equals(this.delegate); - } - return false; - } - - public Object clone() { - return new TokenWrapper((Token) delegate.clone()); - } - - public void copyTo(AttributeImpl target) { - if (target instanceof TokenWrapper) { - ((TokenWrapper) target).delegate = (Token) this.delegate.clone(); - } else { - this.delegate.copyTo(target); - } - } -} Index: src/test/org/apache/lucene/analysis/TestToken.java =================================================================== --- src/test/org/apache/lucene/analysis/TestToken.java (revision 821446) +++ src/test/org/apache/lucene/analysis/TestToken.java (working copy) @@ -18,9 +18,13 @@ */ import org.apache.lucene.index.Payload; -import org.apache.lucene.analysis.tokenattributes.TestSimpleAttributeImpls; +import org.apache.lucene.analysis.tokenattributes.*; import org.apache.lucene.util.LuceneTestCase; +import org.apache.lucene.util.Attribute; +import org.apache.lucene.util.AttributeImpl; +import java.io.StringReader; + public class TestToken extends LuceneTestCase { public TestToken(String name) { @@ -219,4 +223,33 @@ assertEquals(pl, copy.getPayload()); assertNotSame(pl, copy.getPayload()); } + + public interface SenselessAttribute extends Attribute {} + + public static final class SenselessAttributeImpl extends AttributeImpl implements SenselessAttribute { + public void copyTo(AttributeImpl target) {} + public void clear() {} + public boolean equals(Object o) { return (o instanceof SenselessAttributeImpl); } + public int hashCode() { return 0; } + } + + public void testTokenAttributeFactory() throws Exception { + TokenStream ts = new WhitespaceTokenizer(Token.TOKEN_ATTRIBUTE_FACTORY, new StringReader("foo bar")); + + assertTrue("TypeAttribute is not implemented by SenselessAttributeImpl", + ts.addAttribute(SenselessAttribute.class) instanceof SenselessAttributeImpl); + + assertTrue("TermAttribute is not implemented by Token", + ts.addAttribute(TermAttribute.class) instanceof Token); + assertTrue("OffsetAttribute is not implemented by Token", + ts.addAttribute(OffsetAttribute.class) instanceof Token); + assertTrue("FlagsAttribute is not implemented by Token", + ts.addAttribute(FlagsAttribute.class) instanceof Token); + assertTrue("PayloadAttribute is not implemented by Token", + ts.addAttribute(PayloadAttribute.class) instanceof Token); + assertTrue("PositionIncrementAttribute is not implemented by Token", + ts.addAttribute(PositionIncrementAttribute.class) instanceof Token); + assertTrue("TypeAttribute is not implemented by Token", + ts.addAttribute(TypeAttribute.class) instanceof Token); + } } Index: src/test/org/apache/lucene/util/TestAttributeSource.java =================================================================== --- src/test/org/apache/lucene/util/TestAttributeSource.java (revision 821446) +++ src/test/org/apache/lucene/util/TestAttributeSource.java (working copy) @@ -125,4 +125,20 @@ assertEquals("Token should only printed once", "("+tok.toString()+")", src.toString()); } + public void testDefaultAttributeFactory() throws Exception { + AttributeSource src = new AttributeSource(); + + assertTrue("TermAttribute is not implemented by TermAttributeImpl", + src.addAttribute(TermAttribute.class) instanceof TermAttributeImpl); + assertTrue("OffsetAttribute is not implemented by OffsetAttributeImpl", + src.addAttribute(OffsetAttribute.class) instanceof OffsetAttributeImpl); + assertTrue("FlagsAttribute is not implemented by FlagsAttributeImpl", + src.addAttribute(FlagsAttribute.class) instanceof FlagsAttributeImpl); + assertTrue("PayloadAttribute is not implemented by PayloadAttributeImpl", + src.addAttribute(PayloadAttribute.class) instanceof PayloadAttributeImpl); + assertTrue("PositionIncrementAttribute is not implemented by PositionIncrementAttributeImpl", + src.addAttribute(PositionIncrementAttribute.class) instanceof PositionIncrementAttributeImpl); + assertTrue("TypeAttribute is not implemented by TypeAttributeImpl", + src.addAttribute(TypeAttribute.class) instanceof TypeAttributeImpl); + } }