Index: src/java/org/apache/lucene/analysis/ASCIIFoldingFilter.java =================================================================== --- src/java/org/apache/lucene/analysis/ASCIIFoldingFilter.java (revision 820319) +++ src/java/org/apache/lucene/analysis/ASCIIFoldingFilter.java (working copy) @@ -60,7 +60,7 @@ public ASCIIFoldingFilter(TokenStream input) { super(input); - termAtt = (TermAttribute) addAttribute(TermAttribute.class); + termAtt = addAttribute(TermAttribute.class); } private char[] output = new char[512]; Index: src/java/org/apache/lucene/analysis/CharTokenizer.java =================================================================== --- src/java/org/apache/lucene/analysis/CharTokenizer.java (revision 820319) +++ src/java/org/apache/lucene/analysis/CharTokenizer.java (working copy) @@ -28,20 +28,20 @@ public abstract class CharTokenizer extends Tokenizer { public CharTokenizer(Reader input) { super(input); - offsetAtt = (OffsetAttribute) addAttribute(OffsetAttribute.class); - termAtt = (TermAttribute) addAttribute(TermAttribute.class); + offsetAtt = addAttribute(OffsetAttribute.class); + termAtt = addAttribute(TermAttribute.class); } public CharTokenizer(AttributeSource source, Reader input) { super(source, input); - offsetAtt = (OffsetAttribute) addAttribute(OffsetAttribute.class); - termAtt = (TermAttribute) addAttribute(TermAttribute.class); + offsetAtt = addAttribute(OffsetAttribute.class); + termAtt = addAttribute(TermAttribute.class); } public CharTokenizer(AttributeFactory factory, Reader input) { super(factory, input); - offsetAtt = (OffsetAttribute) addAttribute(OffsetAttribute.class); - termAtt = (TermAttribute) addAttribute(TermAttribute.class); + offsetAtt = addAttribute(OffsetAttribute.class); + termAtt = addAttribute(TermAttribute.class); } private int offset = 0, bufferIndex = 0, dataLen = 0; Index: src/java/org/apache/lucene/analysis/ISOLatin1AccentFilter.java =================================================================== --- src/java/org/apache/lucene/analysis/ISOLatin1AccentFilter.java (revision 820319) +++ src/java/org/apache/lucene/analysis/ISOLatin1AccentFilter.java (working copy) @@ -32,7 +32,7 @@ public class ISOLatin1AccentFilter extends TokenFilter { public ISOLatin1AccentFilter(TokenStream input) { super(input); - termAtt = (TermAttribute) addAttribute(TermAttribute.class); + termAtt = addAttribute(TermAttribute.class); } private char[] output = new char[256]; Index: src/java/org/apache/lucene/analysis/KeywordTokenizer.java =================================================================== --- src/java/org/apache/lucene/analysis/KeywordTokenizer.java (revision 820319) +++ src/java/org/apache/lucene/analysis/KeywordTokenizer.java (working copy) @@ -57,8 +57,8 @@ private void init(int bufferSize) { this.done = false; - termAtt = (TermAttribute) addAttribute(TermAttribute.class); - offsetAtt = (OffsetAttribute) addAttribute(OffsetAttribute.class); + termAtt = addAttribute(TermAttribute.class); + offsetAtt = addAttribute(OffsetAttribute.class); termAtt.resizeTermBuffer(bufferSize); } Index: src/java/org/apache/lucene/analysis/LengthFilter.java =================================================================== --- src/java/org/apache/lucene/analysis/LengthFilter.java (revision 820319) +++ src/java/org/apache/lucene/analysis/LengthFilter.java (working copy) @@ -43,7 +43,7 @@ super(in); this.min = min; this.max = max; - termAtt = (TermAttribute) addAttribute(TermAttribute.class); + termAtt = addAttribute(TermAttribute.class); } /** @@ -58,7 +58,7 @@ } // note: else we ignore it but should we index each part of it? } - // reached EOS -- return null + // reached EOS -- return false return false; } } Index: src/java/org/apache/lucene/analysis/LowerCaseFilter.java =================================================================== --- src/java/org/apache/lucene/analysis/LowerCaseFilter.java (revision 820319) +++ src/java/org/apache/lucene/analysis/LowerCaseFilter.java (working copy) @@ -29,7 +29,7 @@ public final class LowerCaseFilter extends TokenFilter { public LowerCaseFilter(TokenStream in) { super(in); - termAtt = (TermAttribute) addAttribute(TermAttribute.class); + termAtt = addAttribute(TermAttribute.class); } private TermAttribute termAtt; Index: src/java/org/apache/lucene/analysis/NumericTokenStream.java =================================================================== --- src/java/org/apache/lucene/analysis/NumericTokenStream.java (revision 820319) +++ src/java/org/apache/lucene/analysis/NumericTokenStream.java (working copy) @@ -241,9 +241,9 @@ } // members - private final TermAttribute termAtt = (TermAttribute) addAttribute(TermAttribute.class); - private final TypeAttribute typeAtt = (TypeAttribute) addAttribute(TypeAttribute.class); - private final PositionIncrementAttribute posIncrAtt = (PositionIncrementAttribute) addAttribute(PositionIncrementAttribute.class); + private final TermAttribute termAtt = addAttribute(TermAttribute.class); + private final TypeAttribute typeAtt = addAttribute(TypeAttribute.class); + private final PositionIncrementAttribute posIncrAtt = addAttribute(PositionIncrementAttribute.class); private int shift = 0, valSize = 0; // valSize==0 means not initialized private final int precisionStep; Index: src/java/org/apache/lucene/analysis/package.html =================================================================== --- src/java/org/apache/lucene/analysis/package.html (revision 820319) +++ src/java/org/apache/lucene/analysis/package.html (working copy) @@ -230,8 +230,8 @@ public TokenStream tokenStream(final String fieldName, Reader reader) { final TokenStream ts = someAnalyzer.tokenStream(fieldName, reader); TokenStream res = new TokenStream() { - TermAttribute termAtt = (TermAttribute) addAttribute(TermAttribute.class); - PositionIncrementAttribute posIncrAtt = (PositionIncrementAttribute) addAttribute(PositionIncrementAttribute.class); + TermAttribute termAtt = addAttribute(TermAttribute.class); + PositionIncrementAttribute posIncrAtt = addAttribute(PositionIncrementAttribute.class); public boolean incrementToken() throws IOException { int extraIncrement = 0; @@ -319,7 +319,7 @@
  • For performance reasons a TokenStream/-Filter should add/get Attributes during instantiation; i.e., create an attribute in the constructor and store references to it in an instance variable. Using an instance variable instead of calling addAttribute()/getAttribute() -in incrementToken() will avoid expensive casting and attribute lookups for every token in the document. +in incrementToken() will avoid attribute lookups for every token in the document.

  • @@ -356,7 +356,7 @@ TokenStream stream = analyzer.tokenStream("field", new StringReader(text)); // get the TermAttribute from the TokenStream - TermAttribute termAtt = (TermAttribute) stream.addAttribute(TermAttribute.class); + TermAttribute termAtt = stream.addAttribute(TermAttribute.class); stream.reset(); @@ -421,7 +421,7 @@ super(in); this.min = min; this.max = max; - termAtt = (TermAttribute) addAttribute(TermAttribute.class); + termAtt = addAttribute(TermAttribute.class); } /** @@ -448,7 +448,7 @@ addAttribute() call in LengthFilter returns the TermAttribute that the WhitespaceTokenizer already added. The tokens are retrieved from the input stream in the incrementToken() method. By looking at the term text in the TermAttribute the length of the term can be determined and too short or too long tokens are skipped. -Note how incrementToken() can efficiently access the instance variable; no attribute lookup or downcasting +Note how incrementToken() can efficiently access the instance variable; no attribute lookup is neccessary. The same is true for the consumer, which can simply use local references to the Attributes.

    Adding a custom Attribute

    @@ -526,8 +526,8 @@ protected PartOfSpeechTaggingFilter(TokenStream input) { super(input); - posAtt = (PartOfSpeechAttribute) addAttribute(PartOfSpeechAttribute.class); - termAtt = (TermAttribute) addAttribute(TermAttribute.class); + posAtt = addAttribute(PartOfSpeechAttribute.class); + termAtt = addAttribute(TermAttribute.class); } public boolean incrementToken() throws IOException { @@ -579,10 +579,10 @@ TokenStream stream = analyzer.tokenStream("field", new StringReader(text)); // get the TermAttribute from the TokenStream - TermAttribute termAtt = (TermAttribute) stream.addAttribute(TermAttribute.class); + TermAttribute termAtt = stream.addAttribute(TermAttribute.class); // get the PartOfSpeechAttribute from the TokenStream - PartOfSpeechAttribute posAtt = (PartOfSpeechAttribute) stream.addAttribute(PartOfSpeechAttribute.class); + PartOfSpeechAttribute posAtt = stream.addAttribute(PartOfSpeechAttribute.class); stream.reset(); Index: src/java/org/apache/lucene/analysis/PorterStemFilter.java =================================================================== --- src/java/org/apache/lucene/analysis/PorterStemFilter.java (revision 820319) +++ src/java/org/apache/lucene/analysis/PorterStemFilter.java (working copy) @@ -46,7 +46,7 @@ public PorterStemFilter(TokenStream in) { super(in); stemmer = new PorterStemmer(); - termAtt = (TermAttribute) addAttribute(TermAttribute.class); + termAtt = addAttribute(TermAttribute.class); } public final boolean incrementToken() throws IOException { Index: src/java/org/apache/lucene/analysis/standard/StandardFilter.java =================================================================== --- src/java/org/apache/lucene/analysis/standard/StandardFilter.java (revision 820319) +++ src/java/org/apache/lucene/analysis/standard/StandardFilter.java (working copy) @@ -31,8 +31,8 @@ /** Construct filtering in. */ public StandardFilter(TokenStream in) { super(in); - termAtt = (TermAttribute) addAttribute(TermAttribute.class); - typeAtt = (TypeAttribute) addAttribute(TypeAttribute.class); + termAtt = addAttribute(TermAttribute.class); + typeAtt = addAttribute(TypeAttribute.class); } private static final String APOSTROPHE_TYPE = StandardTokenizerImpl.TOKEN_TYPES[StandardTokenizerImpl.APOSTROPHE]; Index: src/java/org/apache/lucene/analysis/standard/StandardTokenizer.java =================================================================== --- src/java/org/apache/lucene/analysis/standard/StandardTokenizer.java (revision 820319) +++ src/java/org/apache/lucene/analysis/standard/StandardTokenizer.java (working copy) @@ -148,10 +148,10 @@ private void init(Reader input, boolean replaceInvalidAcronym) { this.replaceInvalidAcronym = replaceInvalidAcronym; this.input = input; - termAtt = (TermAttribute) addAttribute(TermAttribute.class); - offsetAtt = (OffsetAttribute) addAttribute(OffsetAttribute.class); - posIncrAtt = (PositionIncrementAttribute) addAttribute(PositionIncrementAttribute.class); - typeAtt = (TypeAttribute) addAttribute(TypeAttribute.class); + termAtt = addAttribute(TermAttribute.class); + offsetAtt = addAttribute(OffsetAttribute.class); + posIncrAtt = addAttribute(PositionIncrementAttribute.class); + typeAtt = addAttribute(TypeAttribute.class); } // this tokenizer generates three attributes: Index: src/java/org/apache/lucene/analysis/StopFilter.java =================================================================== --- src/java/org/apache/lucene/analysis/StopFilter.java (revision 820319) +++ src/java/org/apache/lucene/analysis/StopFilter.java (working copy) @@ -163,8 +163,8 @@ } public void init() { - termAtt = (TermAttribute) addAttribute(TermAttribute.class); - posIncrAtt = (PositionIncrementAttribute) addAttribute(PositionIncrementAttribute.class); + termAtt = addAttribute(TermAttribute.class); + posIncrAtt = addAttribute(PositionIncrementAttribute.class); } /** Index: src/java/org/apache/lucene/analysis/TokenStream.java =================================================================== --- src/java/org/apache/lucene/analysis/TokenStream.java (revision 820319) +++ src/java/org/apache/lucene/analysis/TokenStream.java (working copy) @@ -103,13 +103,13 @@ private static final class MethodSupport { final boolean hasIncrementToken, hasReusableNext, hasNext; - MethodSupport(Class clazz) { - hasIncrementToken = isMethodOverridden(clazz, "incrementToken", METHOD_NO_PARAMS); - hasReusableNext = isMethodOverridden(clazz, "next", METHOD_TOKEN_PARAM); - hasNext = isMethodOverridden(clazz, "next", METHOD_NO_PARAMS); + 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) { + private static boolean isMethodOverridden(Class clazz, String name, Class... params) { try { return clazz.getMethod(name, params).getDeclaringClass() != TokenStream.class; } catch (NoSuchMethodException e) { @@ -117,19 +117,17 @@ throw new RuntimeException(e); } } - - private static final Class[] METHOD_NO_PARAMS = new Class[0]; - private static final Class[] METHOD_TOKEN_PARAM = new Class[]{Token.class}; } /** @deprecated Remove this when old API is removed! */ - private static final IdentityHashMap/*,MethodSupport>*/ knownMethodSupport = new IdentityHashMap(); + private static final IdentityHashMap,MethodSupport> knownMethodSupport = + new IdentityHashMap,MethodSupport>(); /** @deprecated Remove this when old API is removed! */ - private static MethodSupport getSupportedMethods(Class clazz) { + private static MethodSupport getSupportedMethods(Class clazz) { MethodSupport supportedMethods; synchronized(knownMethodSupport) { - supportedMethods = (MethodSupport) knownMethodSupport.get(clazz); + supportedMethods = knownMethodSupport.get(clazz); if (supportedMethods == null) { knownMethodSupport.put(clazz, supportedMethods = new MethodSupport(clazz)); } @@ -145,7 +143,7 @@ this.delegate = delegate; } - public AttributeImpl createAttributeInstance(Class attClass) { + public AttributeImpl createAttributeInstance(Class attClass) { return attClass.isAssignableFrom(TokenWrapper.class) ? new TokenWrapper() : delegate.createAttributeInstance(attClass); Index: src/java/org/apache/lucene/index/DocInverterPerField.java =================================================================== --- src/java/org/apache/lucene/index/DocInverterPerField.java (revision 820319) +++ src/java/org/apache/lucene/index/DocInverterPerField.java (working copy) @@ -139,8 +139,8 @@ fieldState.attributeSource = stream; - OffsetAttribute offsetAttribute = (OffsetAttribute) fieldState.attributeSource.addAttribute(OffsetAttribute.class); - PositionIncrementAttribute posIncrAttribute = (PositionIncrementAttribute) fieldState.attributeSource.addAttribute(PositionIncrementAttribute.class); + OffsetAttribute offsetAttribute = fieldState.attributeSource.addAttribute(OffsetAttribute.class); + PositionIncrementAttribute posIncrAttribute = fieldState.attributeSource.addAttribute(PositionIncrementAttribute.class); consumer.start(field); Index: src/java/org/apache/lucene/index/DocInverterPerThread.java =================================================================== --- src/java/org/apache/lucene/index/DocInverterPerThread.java (revision 820319) +++ src/java/org/apache/lucene/index/DocInverterPerThread.java (working copy) @@ -39,8 +39,8 @@ OffsetAttribute offsetAttribute; SingleTokenTokenStream() { - termAttribute = (TermAttribute) addAttribute(TermAttribute.class); - offsetAttribute = (OffsetAttribute) addAttribute(OffsetAttribute.class); + termAttribute = addAttribute(TermAttribute.class); + offsetAttribute = addAttribute(OffsetAttribute.class); } public void reinit(String stringValue, int startOffset, int endOffset) { Index: src/java/org/apache/lucene/index/FreqProxTermsWriterPerField.java =================================================================== --- src/java/org/apache/lucene/index/FreqProxTermsWriterPerField.java (revision 820319) +++ src/java/org/apache/lucene/index/FreqProxTermsWriterPerField.java (working copy) @@ -77,7 +77,7 @@ void start(Fieldable f) { if (fieldState.attributeSource.hasAttribute(PayloadAttribute.class)) { - payloadAttribute = (PayloadAttribute) fieldState.attributeSource.getAttribute(PayloadAttribute.class); + payloadAttribute = fieldState.attributeSource.getAttribute(PayloadAttribute.class); } else { payloadAttribute = null; } Index: src/java/org/apache/lucene/index/TermsHashPerField.java =================================================================== --- src/java/org/apache/lucene/index/TermsHashPerField.java (revision 820319) +++ src/java/org/apache/lucene/index/TermsHashPerField.java (working copy) @@ -249,7 +249,7 @@ private boolean doNextCall; void start(Fieldable f) { - termAtt = (TermAttribute) fieldState.attributeSource.addAttribute(TermAttribute.class); + termAtt = fieldState.attributeSource.addAttribute(TermAttribute.class); consumer.start(f); if (nextPerField != null) { nextPerField.start(f); Index: src/java/org/apache/lucene/index/TermVectorsTermsWriterPerField.java =================================================================== --- src/java/org/apache/lucene/index/TermVectorsTermsWriterPerField.java (revision 820319) +++ src/java/org/apache/lucene/index/TermVectorsTermsWriterPerField.java (working copy) @@ -196,7 +196,7 @@ void start(Fieldable f) { if (doVectorOffsets) { - offsetAttribute = (OffsetAttribute) fieldState.attributeSource.addAttribute(OffsetAttribute.class); + offsetAttribute = fieldState.attributeSource.addAttribute(OffsetAttribute.class); } else { offsetAttribute = null; } Index: src/java/org/apache/lucene/queryParser/QueryParser.java =================================================================== --- src/java/org/apache/lucene/queryParser/QueryParser.java (revision 820319) +++ src/java/org/apache/lucene/queryParser/QueryParser.java (working copy) @@ -559,10 +559,10 @@ } if (success) { if (buffer.hasAttribute(TermAttribute.class)) { - termAtt = (TermAttribute) buffer.getAttribute(TermAttribute.class); + termAtt = buffer.getAttribute(TermAttribute.class); } if (buffer.hasAttribute(PositionIncrementAttribute.class)) { - posIncrAtt = (PositionIncrementAttribute) buffer.getAttribute(PositionIncrementAttribute.class); + posIncrAtt = buffer.getAttribute(PositionIncrementAttribute.class); } } @@ -759,7 +759,7 @@ DateTools.Resolution resolution = getDateResolution(field); if (resolution == null) { // no default or field specific date resolution has been set, - // use deprecated DateField to maintain compatibilty with + // use deprecated DateField to maintain compatibility with // pre-1.9 Lucene versions. part1 = DateField.dateToString(d1); part2 = DateField.dateToString(d2); @@ -1591,16 +1591,6 @@ finally { jj_save(0, xla); } } - private boolean jj_3_1() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_2()) { - jj_scanpos = xsp; - if (jj_3R_3()) return true; - } - return false; - } - private boolean jj_3R_3() { if (jj_scan_token(STAR)) return true; if (jj_scan_token(COLON)) return true; @@ -1613,6 +1603,16 @@ return false; } + private boolean jj_3_1() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_2()) { + jj_scanpos = xsp; + if (jj_3R_3()) return true; + } + return false; + } + /** Generated Token Manager. */ public QueryParserTokenManager token_source; /** Current token. */ Index: src/java/org/apache/lucene/queryParser/QueryParser.jj =================================================================== --- src/java/org/apache/lucene/queryParser/QueryParser.jj (revision 820319) +++ src/java/org/apache/lucene/queryParser/QueryParser.jj (working copy) @@ -583,10 +583,10 @@ } if (success) { if (buffer.hasAttribute(TermAttribute.class)) { - termAtt = (TermAttribute) buffer.getAttribute(TermAttribute.class); + termAtt = buffer.getAttribute(TermAttribute.class); } if (buffer.hasAttribute(PositionIncrementAttribute.class)) { - posIncrAtt = (PositionIncrementAttribute) buffer.getAttribute(PositionIncrementAttribute.class); + posIncrAtt = buffer.getAttribute(PositionIncrementAttribute.class); } } Index: src/java/org/apache/lucene/search/QueryTermVector.java =================================================================== --- src/java/org/apache/lucene/search/QueryTermVector.java (revision 820319) +++ src/java/org/apache/lucene/search/QueryTermVector.java (working copy) @@ -61,7 +61,7 @@ boolean hasMoreTokens = false; stream.reset(); - TermAttribute termAtt = (TermAttribute) stream.addAttribute(TermAttribute.class); + TermAttribute termAtt = stream.addAttribute(TermAttribute.class); hasMoreTokens = stream.incrementToken(); while (hasMoreTokens) { Index: src/java/org/apache/lucene/util/AttributeImpl.java =================================================================== --- src/java/org/apache/lucene/util/AttributeImpl.java (revision 820319) +++ src/java/org/apache/lucene/util/AttributeImpl.java (working copy) @@ -49,7 +49,7 @@ * This method may be overridden by subclasses. */ public String toString() { - StringBuffer buffer = new StringBuffer(); + StringBuilder buffer = new StringBuilder(); Class clazz = this.getClass(); Field[] fields = clazz.getDeclaredFields(); try { Index: src/java/org/apache/lucene/util/AttributeSource.java =================================================================== --- src/java/org/apache/lucene/util/AttributeSource.java (revision 820319) +++ src/java/org/apache/lucene/util/AttributeSource.java (working copy) @@ -44,9 +44,8 @@ public static abstract class AttributeFactory { /** * returns an {@link AttributeImpl} for the supplied {@link Attribute} interface class. - *

    Signature for Java 1.5: public AttributeImpl createAttributeInstance(Class%lt;? extends Attribute> attClass) */ - public abstract AttributeImpl createAttributeInstance(Class attClass); + public abstract AttributeImpl createAttributeInstance(Class attClass); /** * This is the default factory that creates {@link AttributeImpl}s using the @@ -55,13 +54,14 @@ public static final AttributeFactory DEFAULT_ATTRIBUTE_FACTORY = new DefaultAttributeFactory(); private static final class DefaultAttributeFactory extends AttributeFactory { - private static final IdentityHashMap/*,Class>*/ attClassImplMap = new IdentityHashMap(); + private static final IdentityHashMap, Class> attClassImplMap = + new IdentityHashMap, Class>(); private DefaultAttributeFactory() {} - public AttributeImpl createAttributeInstance(Class attClass) { + public AttributeImpl createAttributeInstance(Class attClass) { try { - return (AttributeImpl) getClassForInterface(attClass).newInstance(); + return getClassForInterface(attClass).newInstance(); } catch (InstantiationException e) { throw new IllegalArgumentException("Could not instantiate class " + attClass.getName()); } catch (IllegalAccessException e) { @@ -69,12 +69,12 @@ } } - private static Class getClassForInterface(Class attClass) { + private static Class getClassForInterface(Class attClass) { synchronized(attClassImplMap) { - Class clazz = (Class) attClassImplMap.get(attClass); + Class clazz = attClassImplMap.get(attClass); if (clazz == null) { try { - attClassImplMap.put(attClass, clazz = Class.forName(attClass.getName() + "Impl")); + attClassImplMap.put(attClass, clazz = Class.forName(attClass.getName() + "Impl").asSubclass(AttributeImpl.class)); } catch (ClassNotFoundException e) { throw new IllegalArgumentException("Could not find implementing class for " + attClass.getName()); } @@ -87,8 +87,8 @@ // These two maps must always be in sync!!! // So they are private, final and read-only from the outside (read-only iterators) - private final Map/*,AttributeImpl>*/ attributes; - private final Map/*,AttributeImpl>*/ attributeImpls; + private final Map, AttributeImpl> attributes; + private final Map, AttributeImpl> attributeImpls; private AttributeFactory factory; @@ -115,8 +115,8 @@ * An AttributeSource using the supplied {@link AttributeFactory} for creating new {@link Attribute} instances. */ public AttributeSource(AttributeFactory factory) { - this.attributes = new LinkedHashMap(); - this.attributeImpls = new LinkedHashMap(); + this.attributes = new LinkedHashMap, AttributeImpl>(); + this.attributeImpls = new LinkedHashMap, AttributeImpl>(); this.factory = factory; } @@ -129,31 +129,29 @@ /** Returns a new iterator that iterates the attribute classes * in the same order they were added in. - *

    Signature for Java 1.5: public Iterator<Class<? extends Attribute>> getAttributeClassesIterator() */ - public Iterator getAttributeClassesIterator() { + public Iterator> getAttributeClassesIterator() { return Collections.unmodifiableSet(attributes.keySet()).iterator(); } /** Returns a new iterator that iterates all unique Attribute implementations. * This iterator may contain less entries that {@link #getAttributeClassesIterator}, * if one instance implements more than one Attribute interface. - *

    Signature for Java 1.5: public Iterator<AttributeImpl> getAttributeImplsIterator() */ - public Iterator getAttributeImplsIterator() { + public Iterator getAttributeImplsIterator() { if (hasAttributes()) { if (currentState == null) { computeCurrentState(); } final State initState = currentState; - return new Iterator() { + return new Iterator() { private State state = initState; public void remove() { throw new UnsupportedOperationException(); } - public Object next() { + public AttributeImpl next() { if (state == null) throw new NoSuchElementException(); final AttributeImpl att = state.attribute; @@ -166,31 +164,30 @@ } }; } else { - return Collections.EMPTY_SET.iterator(); + return Collections.emptySet().iterator(); } } /** a cache that stores all interfaces for known implementation classes for performance (slow reflection) */ - private static final IdentityHashMap/*,LinkedList>>*/ knownImplClasses = new IdentityHashMap(); + private static final IdentityHashMap,LinkedList>> knownImplClasses = + new IdentityHashMap,LinkedList>>(); /** Adds a custom AttributeImpl instance with one or more Attribute interfaces. */ public void addAttributeImpl(final AttributeImpl att) { - final Class clazz = att.getClass(); + final Class clazz = att.getClass(); if (attributeImpls.containsKey(clazz)) return; - LinkedList foundInterfaces; + LinkedList> foundInterfaces; synchronized(knownImplClasses) { - foundInterfaces = (LinkedList) knownImplClasses.get(clazz); + foundInterfaces = knownImplClasses.get(clazz); if (foundInterfaces == null) { - knownImplClasses.put(clazz, foundInterfaces=new LinkedList()); + knownImplClasses.put(clazz, foundInterfaces = new LinkedList>()); // find all interfaces that this attribute instance implements // and that extend the Attribute interface - Class actClazz = clazz; + Class actClazz = clazz; do { - Class[] interfaces = actClazz.getInterfaces(); - for (int i = 0; i < interfaces.length; i++) { - final Class curInterface = interfaces[i]; + for (Class curInterface : actClazz.getInterfaces()) { if (curInterface != Attribute.class && Attribute.class.isAssignableFrom(curInterface)) { - foundInterfaces.add(curInterface); + foundInterfaces.add(curInterface.asSubclass(Attribute.class)); } } actClazz = actClazz.getSuperclass(); @@ -199,8 +196,7 @@ } // add all interfaces of this AttributeImpl to the maps - for (Iterator it = foundInterfaces.iterator(); it.hasNext(); ) { - final Class curInterface = (Class) it.next(); + for (Class curInterface : foundInterfaces) { // Attribute is a superclass of this interface if (!attributes.containsKey(curInterface)) { // invalidate state to force recomputation in captureState() @@ -216,17 +212,16 @@ * This method first checks if an instance of that class is * already in this AttributeSource and returns it. Otherwise a * new instance is created, added to this AttributeSource and returned. - *

    Signature for Java 1.5: public <T extends Attribute> T addAttribute(Class<T>) */ - public Attribute addAttribute(Class attClass) { - final Attribute att = (Attribute) attributes.get(attClass); - if (att == null) { - final AttributeImpl attImpl = this.factory.createAttributeInstance(attClass); - addAttributeImpl(attImpl); - return attImpl; - } else { - return att; + @SuppressWarnings("unchecked") + // SuppressWarnings needed for cast in return statement, + // because compiler does not know if implementation really implements A + public A addAttribute(Class attClass) { + AttributeImpl attImpl = attributes.get(attClass); + if (attImpl == null) { + addAttributeImpl(attImpl = this.factory.createAttributeInstance(attClass)); } + return (A) attImpl; } /** Returns true, iff this AttributeSource has any attributes */ @@ -237,16 +232,14 @@ /** * The caller must pass in a Class<? extends Attribute> value. * Returns true, iff this AttributeSource contains the passed-in Attribute. - *

    Signature for Java 1.5: public boolean hasAttribute(Class<? extends Attribute>) */ - public boolean hasAttribute(Class attClass) { + public boolean hasAttribute(Class attClass) { return this.attributes.containsKey(attClass); } /** * The caller must pass in a Class<? extends Attribute> value. * Returns the instance of the passed in Attribute contained in this AttributeSource - *

    Signature for Java 1.5: public <T extends Attribute> T getAttribute(Class<T>) * * @throws IllegalArgumentException if this AttributeSource does not contain the * Attribute. It is recommended to always use {@link #addAttribute} even in consumers @@ -255,12 +248,12 @@ * available. If you want to only use the attribute, if it is available (to optimize * consuming), use {@link #hasAttribute}. */ - public Attribute getAttribute(Class attClass) { - final Attribute att = (Attribute) this.attributes.get(attClass); + public A getAttribute(Class attClass) { + // the following cast is unchecked, because compiler does not know if implementation really implements A + @SuppressWarnings("unchecked") final A att = (A) this.attributes.get(attClass); if (att == null) { throw new IllegalArgumentException("This AttributeSource does not have the attribute '" + attClass.getName() + "'."); } - return att; } @@ -290,12 +283,12 @@ private void computeCurrentState() { currentState = new State(); State c = currentState; - Iterator it = attributeImpls.values().iterator(); - c.attribute = (AttributeImpl) it.next(); + final Iterator it = attributeImpls.values().iterator(); + c.attribute = it.next(); while (it.hasNext()) { c.next = new State(); c = c.next; - c.attribute = (AttributeImpl) it.next(); + c.attribute = it.next(); } } @@ -348,7 +341,7 @@ if (state == null) return; do { - AttributeImpl targetImpl = (AttributeImpl) attributeImpls.get(state.attribute.getClass()); + AttributeImpl targetImpl = attributeImpls.get(state.attribute.getClass()); if (targetImpl == null) throw new IllegalArgumentException("State contains an AttributeImpl that is not in this AttributeSource"); state.attribute.copyTo(targetImpl); @@ -412,9 +405,7 @@ } public String toString() { - StringBuffer sb = new StringBuffer(); - sb.append('('); - + StringBuilder sb = new StringBuilder().append('('); if (hasAttributes()) { if (currentState == null) { computeCurrentState(); @@ -424,8 +415,7 @@ sb.append(state.attribute.toString()); } } - sb.append(')'); - return sb.toString(); + return sb.append(')').toString(); } /** @@ -442,14 +432,12 @@ computeCurrentState(); } for (State state = currentState; state != null; state = state.next) { - clone.attributeImpls.put(state.attribute.getClass(), state.attribute.clone()); + clone.attributeImpls.put(state.attribute.getClass(), (AttributeImpl) state.attribute.clone()); } } // now the interfaces - Iterator/*, AttributeImpl>>*/ attIt = this.attributes.entrySet().iterator(); - while (attIt.hasNext()) { - Entry/*, AttributeImpl>*/ entry = (Entry/*, AttributeImpl>*/) attIt.next(); + for (Entry, AttributeImpl> entry : this.attributes.entrySet()) { clone.attributes.put(entry.getKey(), clone.attributeImpls.get(entry.getValue().getClass())); } Index: src/test/org/apache/lucene/analysis/BaseTokenStreamTestCase.java =================================================================== --- src/test/org/apache/lucene/analysis/BaseTokenStreamTestCase.java (revision 820319) +++ src/test/org/apache/lucene/analysis/BaseTokenStreamTestCase.java (working copy) @@ -89,24 +89,24 @@ public static void assertTokenStreamContents(TokenStream ts, String[] output, int startOffsets[], int endOffsets[], String types[], int posIncrements[]) throws IOException { assertNotNull(output); assertTrue("has TermAttribute", ts.hasAttribute(TermAttribute.class)); - TermAttribute termAtt = (TermAttribute) ts.getAttribute(TermAttribute.class); + TermAttribute termAtt = ts.getAttribute(TermAttribute.class); OffsetAttribute offsetAtt = null; if (startOffsets != null || endOffsets != null) { assertTrue("has OffsetAttribute", ts.hasAttribute(OffsetAttribute.class)); - offsetAtt = (OffsetAttribute) ts.getAttribute(OffsetAttribute.class); + offsetAtt = ts.getAttribute(OffsetAttribute.class); } TypeAttribute typeAtt = null; if (types != null) { assertTrue("has TypeAttribute", ts.hasAttribute(TypeAttribute.class)); - typeAtt = (TypeAttribute) ts.getAttribute(TypeAttribute.class); + typeAtt = ts.getAttribute(TypeAttribute.class); } PositionIncrementAttribute posIncrAtt = null; if (posIncrements != null) { assertTrue("has PositionIncrementAttribute", ts.hasAttribute(PositionIncrementAttribute.class)); - posIncrAtt = (PositionIncrementAttribute) ts.getAttribute(PositionIncrementAttribute.class); + posIncrAtt = ts.getAttribute(PositionIncrementAttribute.class); } ts.reset(); Index: src/test/org/apache/lucene/analysis/TestAnalyzers.java =================================================================== --- src/test/org/apache/lucene/analysis/TestAnalyzers.java (revision 820319) +++ src/test/org/apache/lucene/analysis/TestAnalyzers.java (working copy) @@ -82,7 +82,7 @@ } void verifyPayload(TokenStream ts) throws IOException { - PayloadAttribute payloadAtt = (PayloadAttribute) ts.getAttribute(PayloadAttribute.class); + PayloadAttribute payloadAtt = ts.getAttribute(PayloadAttribute.class); for(byte b=1;;b++) { boolean hasNext = ts.incrementToken(); if (!hasNext) break; @@ -139,7 +139,7 @@ PayloadAttribute payloadAtt; public PayloadSetter(TokenStream input) { super(input); - payloadAtt = (PayloadAttribute) addAttribute(PayloadAttribute.class); + payloadAtt = addAttribute(PayloadAttribute.class); } byte[] data = new byte[1]; Index: src/test/org/apache/lucene/analysis/TestASCIIFoldingFilter.java =================================================================== --- src/test/org/apache/lucene/analysis/TestASCIIFoldingFilter.java (revision 820319) +++ src/test/org/apache/lucene/analysis/TestASCIIFoldingFilter.java (working copy) @@ -34,7 +34,7 @@ +" ð ñ ò ó ô õ ö ø œ ß þ ù ú û ü ý ÿ fi fl")); ASCIIFoldingFilter filter = new ASCIIFoldingFilter(stream); - TermAttribute termAtt = (TermAttribute) filter.getAttribute(TermAttribute.class); + TermAttribute termAtt = filter.getAttribute(TermAttribute.class); assertTermEquals("Des", filter, termAtt); assertTermEquals("mot", filter, termAtt); @@ -1891,7 +1891,7 @@ TokenStream stream = new WhitespaceTokenizer(new StringReader(inputText.toString())); ASCIIFoldingFilter filter = new ASCIIFoldingFilter(stream); - TermAttribute termAtt = (TermAttribute) filter.getAttribute(TermAttribute.class); + TermAttribute termAtt = filter.getAttribute(TermAttribute.class); Iterator expectedIter = expectedOutputTokens.iterator(); while (expectedIter.hasNext()) {; assertTermEquals((String)expectedIter.next(), filter, termAtt); Index: src/test/org/apache/lucene/analysis/TestCachingTokenFilter.java =================================================================== --- src/test/org/apache/lucene/analysis/TestCachingTokenFilter.java (revision 820319) +++ src/test/org/apache/lucene/analysis/TestCachingTokenFilter.java (working copy) @@ -41,8 +41,8 @@ Document doc = new Document(); TokenStream stream = new TokenStream() { private int index = 0; - private TermAttribute termAtt = (TermAttribute) addAttribute(TermAttribute.class); - private OffsetAttribute offsetAtt = (OffsetAttribute) addAttribute(OffsetAttribute.class); + private TermAttribute termAtt = addAttribute(TermAttribute.class); + private OffsetAttribute offsetAtt = addAttribute(OffsetAttribute.class); public boolean incrementToken() throws IOException { if (index == tokens.length) { @@ -96,7 +96,7 @@ private void checkTokens(TokenStream stream) throws IOException { int count = 0; - TermAttribute termAtt = (TermAttribute) stream.getAttribute(TermAttribute.class); + TermAttribute termAtt = stream.getAttribute(TermAttribute.class); assertNotNull(termAtt); while (stream.incrementToken()) { assertTrue(count < tokens.length); Index: src/test/org/apache/lucene/analysis/TestISOLatin1AccentFilter.java =================================================================== --- src/test/org/apache/lucene/analysis/TestISOLatin1AccentFilter.java (revision 820319) +++ src/test/org/apache/lucene/analysis/TestISOLatin1AccentFilter.java (working copy) @@ -25,7 +25,7 @@ public void testU() throws Exception { TokenStream stream = new WhitespaceTokenizer(new StringReader("Des mot clés À LA CHAÎNE À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï IJ Ð Ñ Ò Ó Ô Õ Ö Ø Œ Þ Ù Ú Û Ü Ý Ÿ à á â ã ä å æ ç è é ê ë ì í î ï ij ð ñ ò ó ô õ ö ø œ ß þ ù ú û ü ý ÿ fi fl")); ISOLatin1AccentFilter filter = new ISOLatin1AccentFilter(stream); - TermAttribute termAtt = (TermAttribute) filter.getAttribute(TermAttribute.class); + TermAttribute termAtt = filter.getAttribute(TermAttribute.class); assertTermEquals("Des", filter, termAtt); assertTermEquals("mot", filter, termAtt); assertTermEquals("cles", filter, termAtt); Index: src/test/org/apache/lucene/analysis/TestKeywordAnalyzer.java =================================================================== --- src/test/org/apache/lucene/analysis/TestKeywordAnalyzer.java (revision 820319) +++ src/test/org/apache/lucene/analysis/TestKeywordAnalyzer.java (working copy) @@ -88,7 +88,7 @@ // LUCENE-1441 public void testOffsets() throws Exception { TokenStream stream = new KeywordAnalyzer().tokenStream("field", new StringReader("abcd")); - OffsetAttribute offsetAtt = (OffsetAttribute) stream.addAttribute(OffsetAttribute.class); + OffsetAttribute offsetAtt = stream.addAttribute(OffsetAttribute.class); assertTrue(stream.incrementToken()); assertEquals(0, offsetAtt.startOffset()); assertEquals(4, offsetAtt.endOffset()); Index: src/test/org/apache/lucene/analysis/TestLengthFilter.java =================================================================== --- src/test/org/apache/lucene/analysis/TestLengthFilter.java (revision 820319) +++ src/test/org/apache/lucene/analysis/TestLengthFilter.java (working copy) @@ -27,7 +27,7 @@ TokenStream stream = new WhitespaceTokenizer( new StringReader("short toolong evenmuchlongertext a ab toolong foo")); LengthFilter filter = new LengthFilter(stream, 2, 6); - TermAttribute termAtt = (TermAttribute) filter.getAttribute(TermAttribute.class); + TermAttribute termAtt = filter.getAttribute(TermAttribute.class); assertTrue(filter.incrementToken()); assertEquals("short", termAtt.term()); Index: src/test/org/apache/lucene/analysis/TestNumericTokenStream.java =================================================================== --- src/test/org/apache/lucene/analysis/TestNumericTokenStream.java (revision 820319) +++ src/test/org/apache/lucene/analysis/TestNumericTokenStream.java (working copy) @@ -29,8 +29,8 @@ public void testLongStream() throws Exception { final NumericTokenStream stream=new NumericTokenStream().setLongValue(lvalue); // use getAttribute to test if attributes really exist, if not an IAE will be throwed - final TermAttribute termAtt = (TermAttribute) stream.getAttribute(TermAttribute.class); - final TypeAttribute typeAtt = (TypeAttribute) stream.getAttribute(TypeAttribute.class); + final TermAttribute termAtt = stream.getAttribute(TermAttribute.class); + final TypeAttribute typeAtt = stream.getAttribute(TypeAttribute.class); for (int shift=0; shift<64; shift+=NumericUtils.PRECISION_STEP_DEFAULT) { assertTrue("New token is available", stream.incrementToken()); assertEquals("Term is correctly encoded", NumericUtils.longToPrefixCoded(lvalue, shift), termAtt.term()); @@ -42,8 +42,8 @@ public void testIntStream() throws Exception { final NumericTokenStream stream=new NumericTokenStream().setIntValue(ivalue); // use getAttribute to test if attributes really exist, if not an IAE will be throwed - final TermAttribute termAtt = (TermAttribute) stream.getAttribute(TermAttribute.class); - final TypeAttribute typeAtt = (TypeAttribute) stream.getAttribute(TypeAttribute.class); + final TermAttribute termAtt = stream.getAttribute(TermAttribute.class); + final TypeAttribute typeAtt = stream.getAttribute(TypeAttribute.class); for (int shift=0; shift<32; shift+=NumericUtils.PRECISION_STEP_DEFAULT) { assertTrue("New token is available", stream.incrementToken()); assertEquals("Term is correctly encoded", NumericUtils.intToPrefixCoded(ivalue, shift), termAtt.term()); Index: src/test/org/apache/lucene/analysis/TestPerFieldAnalzyerWrapper.java =================================================================== --- src/test/org/apache/lucene/analysis/TestPerFieldAnalzyerWrapper.java (revision 820319) +++ src/test/org/apache/lucene/analysis/TestPerFieldAnalzyerWrapper.java (working copy) @@ -30,7 +30,7 @@ TokenStream tokenStream = analyzer.tokenStream("field", new StringReader(text)); - TermAttribute termAtt = (TermAttribute) tokenStream.getAttribute(TermAttribute.class); + TermAttribute termAtt = tokenStream.getAttribute(TermAttribute.class); assertTrue(tokenStream.incrementToken()); assertEquals("WhitespaceAnalyzer does not lowercase", @@ -39,7 +39,7 @@ tokenStream = analyzer.tokenStream("special", new StringReader(text)); - termAtt = (TermAttribute) tokenStream.getAttribute(TermAttribute.class); + termAtt = tokenStream.getAttribute(TermAttribute.class); assertTrue(tokenStream.incrementToken()); assertEquals("SimpleAnalyzer lowercases", "qwerty", Index: src/test/org/apache/lucene/analysis/TestStopAnalyzer.java =================================================================== --- src/test/org/apache/lucene/analysis/TestStopAnalyzer.java (revision 820319) +++ src/test/org/apache/lucene/analysis/TestStopAnalyzer.java (working copy) @@ -49,7 +49,7 @@ StringReader reader = new StringReader("This is a test of the english stop analyzer"); TokenStream stream = stop.tokenStream("test", reader); assertTrue(stream != null); - TermAttribute termAtt = (TermAttribute) stream.getAttribute(TermAttribute.class); + TermAttribute termAtt = stream.getAttribute(TermAttribute.class); while (stream.incrementToken()) { assertFalse(inValidTokens.contains(termAtt.term())); @@ -65,8 +65,8 @@ StringReader reader = new StringReader("This is a good test of the english stop analyzer"); TokenStream stream = newStop.tokenStream("test", reader); assertNotNull(stream); - TermAttribute termAtt = (TermAttribute) stream.getAttribute(TermAttribute.class); - PositionIncrementAttribute posIncrAtt = (PositionIncrementAttribute) stream.addAttribute(PositionIncrementAttribute.class); + TermAttribute termAtt = stream.getAttribute(TermAttribute.class); + PositionIncrementAttribute posIncrAtt = stream.addAttribute(PositionIncrementAttribute.class); while (stream.incrementToken()) { String text = termAtt.term(); @@ -89,8 +89,8 @@ TokenStream stream = newStop.tokenStream("test", reader); assertNotNull(stream); int i = 0; - TermAttribute termAtt = (TermAttribute) stream.getAttribute(TermAttribute.class); - PositionIncrementAttribute posIncrAtt = (PositionIncrementAttribute) stream.addAttribute(PositionIncrementAttribute.class); + TermAttribute termAtt = stream.getAttribute(TermAttribute.class); + PositionIncrementAttribute posIncrAtt = stream.addAttribute(PositionIncrementAttribute.class); while (stream.incrementToken()) { String text = termAtt.term(); Index: src/test/org/apache/lucene/analysis/TestStopFilter.java =================================================================== --- src/test/org/apache/lucene/analysis/TestStopFilter.java (revision 820319) +++ src/test/org/apache/lucene/analysis/TestStopFilter.java (working copy) @@ -36,7 +36,7 @@ StringReader reader = new StringReader("Now is The Time"); String[] stopWords = new String[] { "is", "the", "Time" }; TokenStream stream = new StopFilter(false, new WhitespaceTokenizer(reader), stopWords); - final TermAttribute termAtt = (TermAttribute) stream.getAttribute(TermAttribute.class); + final TermAttribute termAtt = stream.getAttribute(TermAttribute.class); assertTrue(stream.incrementToken()); assertEquals("Now", termAtt.term()); assertTrue(stream.incrementToken()); @@ -48,7 +48,7 @@ StringReader reader = new StringReader("Now is The Time"); String[] stopWords = new String[] { "is", "the", "Time" }; TokenStream stream = new StopFilter(false, new WhitespaceTokenizer(reader), stopWords, true); - final TermAttribute termAtt = (TermAttribute) stream.getAttribute(TermAttribute.class); + final TermAttribute termAtt = stream.getAttribute(TermAttribute.class); assertTrue(stream.incrementToken()); assertEquals("Now", termAtt.term()); assertFalse(stream.incrementToken()); @@ -59,7 +59,7 @@ String[] stopWords = new String[] { "is", "the", "Time" }; Set stopSet = StopFilter.makeStopSet(stopWords); TokenStream stream = new StopFilter(false, new WhitespaceTokenizer(reader), stopSet); - final TermAttribute termAtt = (TermAttribute) stream.getAttribute(TermAttribute.class); + final TermAttribute termAtt = stream.getAttribute(TermAttribute.class); assertTrue(stream.incrementToken()); assertEquals("Now", termAtt.term()); assertTrue(stream.incrementToken()); @@ -116,8 +116,8 @@ private void doTestStopPositons(StopFilter stpf, boolean enableIcrements) throws IOException { log("---> test with enable-increments-"+(enableIcrements?"enabled":"disabled")); stpf.setEnablePositionIncrements(enableIcrements); - TermAttribute termAtt = (TermAttribute) stpf.getAttribute(TermAttribute.class); - PositionIncrementAttribute posIncrAtt = (PositionIncrementAttribute) stpf.getAttribute(PositionIncrementAttribute.class); + TermAttribute termAtt = stpf.getAttribute(TermAttribute.class); + PositionIncrementAttribute posIncrAtt = stpf.getAttribute(PositionIncrementAttribute.class); for (int i=0; i<20; i+=3) { assertTrue(stpf.incrementToken()); log("Token "+i+": "+stpf); Index: src/test/org/apache/lucene/analysis/TestTeeSinkTokenFilter.java =================================================================== --- src/test/org/apache/lucene/analysis/TestTeeSinkTokenFilter.java (revision 820319) +++ src/test/org/apache/lucene/analysis/TestTeeSinkTokenFilter.java (working copy) @@ -59,14 +59,14 @@ static final TeeSinkTokenFilter.SinkFilter theFilter = new TeeSinkTokenFilter.SinkFilter() { public boolean accept(AttributeSource a) { - TermAttribute termAtt = (TermAttribute) a.getAttribute(TermAttribute.class); + TermAttribute termAtt = a.getAttribute(TermAttribute.class); return termAtt.term().equalsIgnoreCase("The"); } }; static final TeeSinkTokenFilter.SinkFilter dogFilter = new TeeSinkTokenFilter.SinkFilter() { public boolean accept(AttributeSource a) { - TermAttribute termAtt = (TermAttribute) a.getAttribute(TermAttribute.class); + TermAttribute termAtt = a.getAttribute(TermAttribute.class); return termAtt.term().equalsIgnoreCase("Dogs"); } }; @@ -77,7 +77,7 @@ final TokenStream sink1 = source.newSinkTokenStream(); final TokenStream sink2 = source.newSinkTokenStream(theFilter); int i = 0; - TermAttribute termAtt = (TermAttribute) source.getAttribute(TermAttribute.class); + TermAttribute termAtt = source.getAttribute(TermAttribute.class); while (source.incrementToken()) { assertEquals(tokens1[i], termAtt.term()); i++; @@ -85,7 +85,7 @@ assertEquals(tokens1.length, i); i = 0; - termAtt = (TermAttribute) sink1.getAttribute(TermAttribute.class); + termAtt = sink1.getAttribute(TermAttribute.class); while (sink1.incrementToken()) { assertEquals(tokens1[i], termAtt.term()); i++; @@ -93,7 +93,7 @@ assertEquals(tokens1.length, i); i = 0; - termAtt = (TermAttribute) sink2.getAttribute(TermAttribute.class); + termAtt = sink2.getAttribute(TermAttribute.class); while (sink2.incrementToken()) { assertTrue(termAtt.term().equalsIgnoreCase("The")); i++; @@ -113,28 +113,28 @@ final TokenStream source2 = tee2; int i = 0; - TermAttribute termAtt = (TermAttribute) source1.getAttribute(TermAttribute.class); + TermAttribute termAtt = source1.getAttribute(TermAttribute.class); while (source1.incrementToken()) { assertEquals(tokens1[i], termAtt.term()); i++; } assertEquals(tokens1.length, i); i = 0; - termAtt = (TermAttribute) source2.getAttribute(TermAttribute.class); + termAtt = source2.getAttribute(TermAttribute.class); while (source2.incrementToken()) { assertEquals(tokens2[i], termAtt.term()); i++; } assertEquals(tokens2.length, i); i = 0; - termAtt = (TermAttribute) theDetector.getAttribute(TermAttribute.class); + termAtt = theDetector.getAttribute(TermAttribute.class); while (theDetector.incrementToken()) { assertTrue("'" + termAtt.term() + "' is not equal to 'The'", termAtt.term().equalsIgnoreCase("The")); i++; } assertEquals("there must be 4 times 'The' in the stream", 4, i); i = 0; - termAtt = (TermAttribute) dogDetector.getAttribute(TermAttribute.class); + termAtt = dogDetector.getAttribute(TermAttribute.class); while (dogDetector.incrementToken()) { assertTrue("'" + termAtt.term() + "' is not equal to 'Dogs'", termAtt.term().equalsIgnoreCase("Dogs")); i++; @@ -144,7 +144,7 @@ source1.reset(); TokenStream lowerCasing = new LowerCaseFilter(source1); i = 0; - termAtt = (TermAttribute) lowerCasing.getAttribute(TermAttribute.class); + termAtt = lowerCasing.getAttribute(TermAttribute.class); while (lowerCasing.incrementToken()) { assertEquals(tokens1[i].toLowerCase(), termAtt.term()); i++; @@ -171,8 +171,8 @@ TokenStream sink = teeStream.newSinkTokenStream(new ModuloSinkFilter(100)); teeStream.consumeAllTokens(); TokenStream stream = new ModuloTokenFilter(new StandardFilter(new StandardTokenizer(new StringReader(buffer.toString()))), 100); - TermAttribute tfTok = (TermAttribute) stream.addAttribute(TermAttribute.class); - TermAttribute sinkTok = (TermAttribute) sink.addAttribute(TermAttribute.class); + TermAttribute tfTok = stream.addAttribute(TermAttribute.class); + TermAttribute sinkTok = sink.addAttribute(TermAttribute.class); for (int i=0; stream.incrementToken(); i++) { assertTrue(sink.incrementToken()); assertTrue(tfTok + " is not equal to " + sinkTok + " at token: " + i, tfTok.equals(sinkTok) == true); @@ -184,12 +184,12 @@ long start = System.currentTimeMillis(); for (int i = 0; i < 20; i++) { stream = new StandardFilter(new StandardTokenizer(new StringReader(buffer.toString()))); - PositionIncrementAttribute posIncrAtt = (PositionIncrementAttribute) stream.getAttribute(PositionIncrementAttribute.class); + PositionIncrementAttribute posIncrAtt = stream.getAttribute(PositionIncrementAttribute.class); while (stream.incrementToken()) { tfPos += posIncrAtt.getPositionIncrement(); } stream = new ModuloTokenFilter(new StandardFilter(new StandardTokenizer(new StringReader(buffer.toString()))), modCounts[j]); - posIncrAtt = (PositionIncrementAttribute) stream.getAttribute(PositionIncrementAttribute.class); + posIncrAtt = stream.getAttribute(PositionIncrementAttribute.class); while (stream.incrementToken()) { tfPos += posIncrAtt.getPositionIncrement(); } @@ -202,12 +202,12 @@ for (int i = 0; i < 20; i++) { teeStream = new TeeSinkTokenFilter(new StandardFilter(new StandardTokenizer(new StringReader(buffer.toString())))); sink = teeStream.newSinkTokenStream(new ModuloSinkFilter(modCounts[j])); - PositionIncrementAttribute posIncrAtt = (PositionIncrementAttribute) teeStream.getAttribute(PositionIncrementAttribute.class); + PositionIncrementAttribute posIncrAtt = teeStream.getAttribute(PositionIncrementAttribute.class); while (teeStream.incrementToken()) { sinkPos += posIncrAtt.getPositionIncrement(); } //System.out.println("Modulo--------"); - posIncrAtt = (PositionIncrementAttribute) sink.getAttribute(PositionIncrementAttribute.class); + posIncrAtt = sink.getAttribute(PositionIncrementAttribute.class); while (sink.incrementToken()) { sinkPos += posIncrAtt.getPositionIncrement(); } Index: src/test/org/apache/lucene/analysis/TestTokenStreamBWComp.java =================================================================== --- src/test/org/apache/lucene/analysis/TestTokenStreamBWComp.java (revision 820319) +++ src/test/org/apache/lucene/analysis/TestTokenStreamBWComp.java (working copy) @@ -188,8 +188,8 @@ private static void consumeStreamNewAPI(TokenStream stream) throws IOException { stream.reset(); - PayloadAttribute payloadAtt = (PayloadAttribute) stream.addAttribute(PayloadAttribute.class); - TermAttribute termAtt = (TermAttribute) stream.addAttribute(TermAttribute.class); + PayloadAttribute payloadAtt = stream.addAttribute(PayloadAttribute.class); + TermAttribute termAtt = stream.addAttribute(TermAttribute.class); int i=0; while (stream.incrementToken()) { @@ -350,7 +350,7 @@ assertEquals("private 'bar' term should still be valid", "bar", bar.term()); // and now we also use incrementToken()... (very bad, but should work) - TermAttribute termAtt = (TermAttribute) stream.getAttribute(TermAttribute.class); + TermAttribute termAtt = stream.getAttribute(TermAttribute.class); assertTrue(stream.incrementToken()); assertEquals("maeh", termAtt.term()); assertEquals("private 'bar' term should still be valid", "bar", bar.term()); @@ -373,7 +373,7 @@ public void testMixedOldApiConsumer2() throws Exception { // RoundRobinOldAPI is using TokenStream(next) TokenStream stream = new RoundRobinOldAPI(); - TermAttribute termAtt = (TermAttribute) stream.getAttribute(TermAttribute.class); + TermAttribute termAtt = stream.getAttribute(TermAttribute.class); assertTrue(stream.incrementToken()); Token bar = stream.next(); Index: src/test/org/apache/lucene/index/TestDocumentWriter.java =================================================================== --- src/test/org/apache/lucene/index/TestDocumentWriter.java (revision 820319) +++ src/test/org/apache/lucene/index/TestDocumentWriter.java (working copy) @@ -170,9 +170,9 @@ } - TermAttribute termAtt = (TermAttribute) addAttribute(TermAttribute.class); - PayloadAttribute payloadAtt = (PayloadAttribute) addAttribute(PayloadAttribute.class); - PositionIncrementAttribute posIncrAtt = (PositionIncrementAttribute) addAttribute(PositionIncrementAttribute.class); + TermAttribute termAtt = addAttribute(TermAttribute.class); + PayloadAttribute payloadAtt = addAttribute(PayloadAttribute.class); + PositionIncrementAttribute posIncrAtt = addAttribute(PositionIncrementAttribute.class); }; } }; @@ -209,7 +209,7 @@ private String[] tokens = new String[] {"term1", "term2", "term3", "term2"}; private int index = 0; - private TermAttribute termAtt = (TermAttribute) addAttribute(TermAttribute.class); + private TermAttribute termAtt = addAttribute(TermAttribute.class); public boolean incrementToken() throws IOException { if (index == tokens.length) { Index: src/test/org/apache/lucene/index/TestIndexWriter.java =================================================================== --- src/test/org/apache/lucene/index/TestIndexWriter.java (revision 820319) +++ src/test/org/apache/lucene/index/TestIndexWriter.java (working copy) @@ -3540,8 +3540,8 @@ // LUCENE-1255 public void testNegativePositions() throws Throwable { final TokenStream tokens = new TokenStream() { - final TermAttribute termAtt = (TermAttribute) addAttribute(TermAttribute.class); - final PositionIncrementAttribute posIncrAtt = (PositionIncrementAttribute) addAttribute(PositionIncrementAttribute.class); + final TermAttribute termAtt = addAttribute(TermAttribute.class); + final PositionIncrementAttribute posIncrAtt = addAttribute(PositionIncrementAttribute.class); final Iterator tokens = Arrays.asList(new String[]{"a","b","c"}).iterator(); boolean first = true; Index: src/test/org/apache/lucene/index/TestMultiLevelSkipList.java =================================================================== --- src/test/org/apache/lucene/index/TestMultiLevelSkipList.java (revision 820319) +++ src/test/org/apache/lucene/index/TestMultiLevelSkipList.java (working copy) @@ -102,7 +102,7 @@ protected PayloadFilter(TokenStream input) { super(input); - payloadAtt = (PayloadAttribute) addAttribute(PayloadAttribute.class); + payloadAtt = addAttribute(PayloadAttribute.class); } public boolean incrementToken() throws IOException { Index: src/test/org/apache/lucene/index/TestPayloads.java =================================================================== --- src/test/org/apache/lucene/index/TestPayloads.java (revision 820319) +++ src/test/org/apache/lucene/index/TestPayloads.java (working copy) @@ -436,7 +436,7 @@ this.data = data; this.length = length; this.offset = offset; - payloadAtt = (PayloadAttribute) addAttribute(PayloadAttribute.class); + payloadAtt = addAttribute(PayloadAttribute.class); } public boolean incrementToken() throws IOException { @@ -526,8 +526,8 @@ generateRandomData(payload); term = pool.bytesToString(payload); first = true; - payloadAtt = (PayloadAttribute) addAttribute(PayloadAttribute.class); - termAtt = (TermAttribute) addAttribute(TermAttribute.class); + payloadAtt = addAttribute(PayloadAttribute.class); + termAtt = addAttribute(TermAttribute.class); } public boolean incrementToken() throws IOException { Index: src/test/org/apache/lucene/index/TestTermdocPerf.java =================================================================== --- src/test/org/apache/lucene/index/TestTermdocPerf.java (revision 820319) +++ src/test/org/apache/lucene/index/TestTermdocPerf.java (working copy) @@ -41,7 +41,7 @@ public RepeatingTokenStream(String val) { this.value = val; - this.termAtt = (TermAttribute) addAttribute(TermAttribute.class); + this.termAtt = addAttribute(TermAttribute.class); } public boolean incrementToken() throws IOException { Index: src/test/org/apache/lucene/index/TestTermVectorsReader.java =================================================================== --- src/test/org/apache/lucene/index/TestTermVectorsReader.java (revision 820319) +++ src/test/org/apache/lucene/index/TestTermVectorsReader.java (working copy) @@ -126,9 +126,9 @@ OffsetAttribute offsetAtt; public MyTokenStream() { - termAtt = (TermAttribute) addAttribute(TermAttribute.class); - posIncrAtt = (PositionIncrementAttribute) addAttribute(PositionIncrementAttribute.class); - offsetAtt = (OffsetAttribute) addAttribute(OffsetAttribute.class); + termAtt = addAttribute(TermAttribute.class); + posIncrAtt = addAttribute(PositionIncrementAttribute.class); + offsetAtt = addAttribute(OffsetAttribute.class); } public boolean incrementToken() { Index: src/test/org/apache/lucene/queryParser/TestMultiAnalyzer.java =================================================================== --- src/test/org/apache/lucene/queryParser/TestMultiAnalyzer.java (revision 820319) +++ src/test/org/apache/lucene/queryParser/TestMultiAnalyzer.java (working copy) @@ -154,10 +154,10 @@ public TestFilter(TokenStream in) { super(in); - termAtt = (TermAttribute) addAttribute(TermAttribute.class); - posIncrAtt = (PositionIncrementAttribute) addAttribute(PositionIncrementAttribute.class); - offsetAtt = (OffsetAttribute) addAttribute(OffsetAttribute.class); - typeAtt = (TypeAttribute) addAttribute(TypeAttribute.class); + termAtt = addAttribute(TermAttribute.class); + posIncrAtt = addAttribute(PositionIncrementAttribute.class); + offsetAtt = addAttribute(OffsetAttribute.class); + typeAtt = addAttribute(TypeAttribute.class); } public final boolean incrementToken() throws java.io.IOException { @@ -214,8 +214,8 @@ public TestPosIncrementFilter(TokenStream in) { super(in); - termAtt = (TermAttribute) addAttribute(TermAttribute.class); - posIncrAtt = (PositionIncrementAttribute) addAttribute(PositionIncrementAttribute.class); + termAtt = addAttribute(TermAttribute.class); + posIncrAtt = addAttribute(PositionIncrementAttribute.class); } public final boolean incrementToken () throws java.io.IOException { Index: src/test/org/apache/lucene/queryParser/TestQueryParser.java =================================================================== --- src/test/org/apache/lucene/queryParser/TestQueryParser.java (revision 820319) +++ src/test/org/apache/lucene/queryParser/TestQueryParser.java (working copy) @@ -87,8 +87,8 @@ */ public QPTestFilter(TokenStream in) { super(in); - termAtt = (TermAttribute) addAttribute(TermAttribute.class); - offsetAtt = (OffsetAttribute) addAttribute(OffsetAttribute.class); + termAtt = addAttribute(TermAttribute.class); + offsetAtt = addAttribute(OffsetAttribute.class); } boolean inPhrase = false; Index: src/test/org/apache/lucene/search/payloads/PayloadHelper.java =================================================================== --- src/test/org/apache/lucene/search/payloads/PayloadHelper.java (revision 820319) +++ src/test/org/apache/lucene/search/payloads/PayloadHelper.java (working copy) @@ -63,7 +63,7 @@ public PayloadFilter(TokenStream input, String fieldName) { super(input); this.fieldName = fieldName; - payloadAtt = (PayloadAttribute) addAttribute(PayloadAttribute.class); + payloadAtt = addAttribute(PayloadAttribute.class); } public boolean incrementToken() throws IOException { Index: src/test/org/apache/lucene/search/payloads/TestBoostingTermQuery.java =================================================================== --- src/test/org/apache/lucene/search/payloads/TestBoostingTermQuery.java (revision 820319) +++ src/test/org/apache/lucene/search/payloads/TestBoostingTermQuery.java (working copy) @@ -72,7 +72,7 @@ public PayloadFilter(TokenStream input, String fieldName) { super(input); this.fieldName = fieldName; - payloadAtt = (PayloadAttribute) addAttribute(PayloadAttribute.class); + payloadAtt = addAttribute(PayloadAttribute.class); } public boolean incrementToken() throws IOException { Index: src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java =================================================================== --- src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java (revision 820319) +++ src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java (working copy) @@ -68,7 +68,7 @@ public PayloadFilter(TokenStream input, String fieldName) { super(input); this.fieldName = fieldName; - payAtt = (PayloadAttribute) addAttribute(PayloadAttribute.class); + payAtt = addAttribute(PayloadAttribute.class); } public boolean incrementToken() throws IOException { Index: src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java =================================================================== --- src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java (revision 820319) +++ src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java (working copy) @@ -80,7 +80,7 @@ public PayloadFilter(TokenStream input, String fieldName) { super(input); this.fieldName = fieldName; - payloadAtt = (PayloadAttribute) addAttribute(PayloadAttribute.class); + payloadAtt = addAttribute(PayloadAttribute.class); } public boolean incrementToken() throws IOException { Index: src/test/org/apache/lucene/search/spans/TestPayloadSpans.java =================================================================== --- src/test/org/apache/lucene/search/spans/TestPayloadSpans.java (revision 820319) +++ src/test/org/apache/lucene/search/spans/TestPayloadSpans.java (working copy) @@ -498,9 +498,9 @@ entities.add("one"); nopayload.add("nopayload"); nopayload.add("np"); - termAtt = (TermAttribute) addAttribute(TermAttribute.class); - posIncrAtt = (PositionIncrementAttribute) addAttribute(PositionIncrementAttribute.class); - payloadAtt = (PayloadAttribute) addAttribute(PayloadAttribute.class); + termAtt = addAttribute(TermAttribute.class); + posIncrAtt = addAttribute(PositionIncrementAttribute.class); + payloadAtt = addAttribute(PayloadAttribute.class); } public boolean incrementToken() throws IOException { Index: src/test/org/apache/lucene/search/TestPositionIncrement.java =================================================================== --- src/test/org/apache/lucene/search/TestPositionIncrement.java (revision 820319) +++ src/test/org/apache/lucene/search/TestPositionIncrement.java (working copy) @@ -66,9 +66,9 @@ private final int[] INCREMENTS = {0, 2, 1, 0, 1}; private int i = 0; - PositionIncrementAttribute posIncrAtt = (PositionIncrementAttribute) addAttribute(PositionIncrementAttribute.class); - TermAttribute termAtt = (TermAttribute) addAttribute(TermAttribute.class); - OffsetAttribute offsetAtt = (OffsetAttribute) addAttribute(OffsetAttribute.class); + PositionIncrementAttribute posIncrAtt = addAttribute(PositionIncrementAttribute.class); + TermAttribute termAtt = addAttribute(TermAttribute.class); + OffsetAttribute offsetAtt = addAttribute(OffsetAttribute.class); public boolean incrementToken() { if (i == TOKENS.length) @@ -348,9 +348,9 @@ this.fieldName = fieldName; pos = 0; i = 0; - posIncrAttr = (PositionIncrementAttribute) input.addAttribute(PositionIncrementAttribute.class); - payloadAttr = (PayloadAttribute) input.addAttribute(PayloadAttribute.class); - termAttr = (TermAttribute) input.addAttribute(TermAttribute.class); + posIncrAttr = input.addAttribute(PositionIncrementAttribute.class); + payloadAttr = input.addAttribute(PayloadAttribute.class); + termAttr = input.addAttribute(TermAttribute.class); } public boolean incrementToken() throws IOException { Index: src/test/org/apache/lucene/search/TestTermRangeQuery.java =================================================================== --- src/test/org/apache/lucene/search/TestTermRangeQuery.java (revision 820319) +++ src/test/org/apache/lucene/search/TestTermRangeQuery.java (working copy) @@ -244,7 +244,7 @@ public SingleCharTokenizer(Reader r) { super(r); - termAtt = (TermAttribute) addAttribute(TermAttribute.class); + termAtt = addAttribute(TermAttribute.class); } public boolean incrementToken() throws IOException { Index: src/test/org/apache/lucene/util/TestAttributeSource.java =================================================================== --- src/test/org/apache/lucene/util/TestAttributeSource.java (revision 820319) +++ src/test/org/apache/lucene/util/TestAttributeSource.java (working copy) @@ -27,8 +27,8 @@ public void testCaptureState() { // init a first instance AttributeSource src = new AttributeSource(); - TermAttribute termAtt = (TermAttribute) src.addAttribute(TermAttribute.class); - TypeAttribute typeAtt = (TypeAttribute) src.addAttribute(TypeAttribute.class); + TermAttribute termAtt = src.addAttribute(TermAttribute.class); + TypeAttribute typeAtt = src.addAttribute(TypeAttribute.class); termAtt.setTermBuffer("TestTerm"); typeAtt.setType("TestType"); final int hashCode = src.hashCode(); @@ -55,9 +55,9 @@ // init a second instance (with attributes in different order and one additional attribute) AttributeSource src2 = new AttributeSource(); - typeAtt = (TypeAttribute) src2.addAttribute(TypeAttribute.class); - FlagsAttribute flagsAtt = (FlagsAttribute) src2.addAttribute(FlagsAttribute.class); - termAtt = (TermAttribute) src2.addAttribute(TermAttribute.class); + typeAtt = src2.addAttribute(TypeAttribute.class); + FlagsAttribute flagsAtt = src2.addAttribute(FlagsAttribute.class); + termAtt = src2.addAttribute(TermAttribute.class); flagsAtt.setFlags(12345); src2.restoreState(state); @@ -67,7 +67,7 @@ // init a third instance missing one Attribute AttributeSource src3 = new AttributeSource(); - termAtt = (TermAttribute) src3.addAttribute(TermAttribute.class); + termAtt = src3.addAttribute(TermAttribute.class); try { src3.restoreState(state); fail("The third instance is missing the TypeAttribute, so restoreState() should throw IllegalArgumentException"); @@ -78,19 +78,19 @@ public void testCloneAttributes() { final AttributeSource src = new AttributeSource(); - final TermAttribute termAtt = (TermAttribute) src.addAttribute(TermAttribute.class); - final TypeAttribute typeAtt = (TypeAttribute) src.addAttribute(TypeAttribute.class); + final TermAttribute termAtt = src.addAttribute(TermAttribute.class); + final TypeAttribute typeAtt = src.addAttribute(TypeAttribute.class); termAtt.setTermBuffer("TestTerm"); typeAtt.setType("TestType"); final AttributeSource clone = src.cloneAttributes(); - final Iterator it = clone.getAttributeClassesIterator(); + final Iterator> it = clone.getAttributeClassesIterator(); assertEquals("TermAttribute must be the first attribute", TermAttribute.class, it.next()); assertEquals("TypeAttribute must be the second attribute", TypeAttribute.class, it.next()); assertFalse("No more attributes", it.hasNext()); - final TermAttribute termAtt2 = (TermAttribute) clone.getAttribute(TermAttribute.class); - final TypeAttribute typeAtt2 = (TypeAttribute) clone.getAttribute(TypeAttribute.class); + final TermAttribute termAtt2 = clone.getAttribute(TermAttribute.class); + final TypeAttribute typeAtt2 = clone.getAttribute(TypeAttribute.class); assertNotSame("TermAttribute of original and clone must be different instances", termAtt2, termAtt); assertNotSame("TypeAttribute of original and clone must be different instances", typeAtt2, typeAtt); assertEquals("TermAttribute of original and clone must be equal", termAtt2, termAtt); @@ -99,12 +99,12 @@ public void testToStringAndMultiAttributeImplementations() { AttributeSource src = new AttributeSource(); - TermAttribute termAtt = (TermAttribute) src.addAttribute(TermAttribute.class); - TypeAttribute typeAtt = (TypeAttribute) src.addAttribute(TypeAttribute.class); + TermAttribute termAtt = src.addAttribute(TermAttribute.class); + TypeAttribute typeAtt = src.addAttribute(TypeAttribute.class); termAtt.setTermBuffer("TestTerm"); typeAtt.setType("TestType"); assertEquals("Attributes should appear in original order", "("+termAtt.toString()+","+typeAtt.toString()+")", src.toString()); - Iterator it = src.getAttributeImplsIterator(); + Iterator it = src.getAttributeImplsIterator(); assertTrue("Iterator should have 2 attributes left", it.hasNext()); assertSame("First AttributeImpl from iterator should be termAtt", termAtt, it.next()); assertTrue("Iterator should have 1 attributes left", it.hasNext()); @@ -114,7 +114,7 @@ src = new AttributeSource(); src.addAttributeImpl(new Token()); // this should not add a new attribute as Token implements TermAttribute, too - termAtt = (TermAttribute) src.addAttribute(TermAttribute.class); + termAtt = src.addAttribute(TermAttribute.class); assertTrue("TermAttribute should be implemented by Token", termAtt instanceof Token); // get the Token attribute and check, that it is the only one it = src.getAttributeImplsIterator();