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/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"); + hasNext = isMethodOverridden(clazz, "next", Token.class); } - 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); } } 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,14 @@ * 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") // needed for cast in return statement + 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 +230,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 +246,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 +281,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 +339,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 +403,7 @@ } public String toString() { - StringBuffer sb = new StringBuffer(); - sb.append('('); - + StringBuilder sb = new StringBuilder().append('('); if (hasAttributes()) { if (currentState == null) { computeCurrentState(); @@ -424,8 +413,7 @@ sb.append(state.attribute.toString()); } } - sb.append(')'); - return sb.toString(); + return sb.append(')').toString(); } /** @@ -442,14 +430,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();