Class AttributeSource
- Direct Known Subclasses:
TokenStream
AttributeImpls,
and methods to add and get them. There can only be a single instance
of an attribute in the same AttributeSource instance. This is ensured
by passing in the actual type of the Attribute (Class<Attribute>) to
the addAttribute(Class), which then checks if an instance of
that type is already present. If yes, it returns the instance, otherwise
it creates a new instance and returns it.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classAn AttributeFactory creates instances ofAttributeImpls.static final classThis class holds the state of an AttributeSource. -
Constructor Summary
ConstructorsConstructorDescriptionAn AttributeSource using the default attribute factoryAttributeSource.AttributeFactory.DEFAULT_ATTRIBUTE_FACTORY.AttributeSource(AttributeSource input) An AttributeSource that uses the same attributes as the supplied one.An AttributeSource using the suppliedAttributeSource.AttributeFactoryfor creating newAttributeinstances. -
Method Summary
Modifier and TypeMethodDescriptionfinal <T extends Attribute>
TaddAttribute(Class<T> attClass) The caller must pass in a Class<? extends Attribute> value.final voidExpert: Adds a custom AttributeImpl instance with one or more Attribute interfaces.final AttributeSource.StateCaptures the state of all Attributes.final voidResets all Attributes in this AttributeSource by callingAttributeImpl.clear()on each Attribute implementation.final AttributeSourcePerforms a clone of allAttributeImplinstances returned in a newAttributeSourceinstance.final voidcopyTo(AttributeSource target) Copies the contents of thisAttributeSourceto the given targetAttributeSource.booleanfinal <T extends Attribute>
TgetAttribute(Class<T> attClass) The caller must pass in a Class<? extends Attribute> value.Returns a new iterator that iterates the attribute classes in the same order they were added in.returns the used AttributeFactory.final Iterator<AttributeImpl>Returns a new iterator that iterates all unique Attribute implementations.final booleanhasAttribute(Class<? extends Attribute> attClass) The caller must pass in a Class<? extends Attribute> value.final booleanReturns true, iff this AttributeSource has any attributesinthashCode()final StringreflectAsString(boolean prependAttClass) This method returns the current attribute values as a string in the following format by calling thereflectWith(AttributeReflector)method: iffprependAttClass=true:"AttributeClass#key=value,AttributeClass#key=value"iffprependAttClass=false:"key=value,key=value"final voidreflectWith(AttributeReflector reflector) This method is for introspection of attributes, it should simply add the key/values this AttributeSource holds to the givenAttributeReflector.final voidRestores this state by copying the values of all attribute implementations that this state contains into the attributes implementations of the targetStream.toString()Returns a string consisting of the class's simple name, the hex representation of the identity hash code, and the current reflection of all attributes.
-
Constructor Details
-
AttributeSource
public AttributeSource()An AttributeSource using the default attribute factoryAttributeSource.AttributeFactory.DEFAULT_ATTRIBUTE_FACTORY. -
AttributeSource
An AttributeSource that uses the same attributes as the supplied one. -
AttributeSource
An AttributeSource using the suppliedAttributeSource.AttributeFactoryfor creating newAttributeinstances.
-
-
Method Details
-
getAttributeFactory
returns the used AttributeFactory. -
getAttributeClassesIterator
Returns a new iterator that iterates the attribute classes in the same order they were added in. -
getAttributeImplsIterator
Returns a new iterator that iterates all unique Attribute implementations. This iterator may contain less entries thatgetAttributeClassesIterator(), if one instance implements more than one Attribute interface. -
addAttributeImpl
Expert: Adds a custom AttributeImpl instance with one or more Attribute interfaces.Please note: It is not guaranteed, that
attis added to theAttributeSource, because the provided attributes may already exist. You should always retrieve the wanted attributes usinggetAttribute(java.lang.Class<T>)after adding with this method and cast to your class. The recommended way to use custom implementations is using anAttributeSource.AttributeFactory. -
addAttribute
The caller must pass in a Class<? extends Attribute> value. 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. -
hasAttributes
public final boolean hasAttributes()Returns true, iff this AttributeSource has any attributes -
hasAttribute
The caller must pass in a Class<? extends Attribute> value. Returns true, iff this AttributeSource contains the passed-in Attribute. -
getAttribute
The caller must pass in a Class<? extends Attribute> value. Returns the instance of the passed in Attribute contained in this AttributeSource- Throws:
IllegalArgumentException- if this AttributeSource does not contain the Attribute. It is recommended to always useaddAttribute(java.lang.Class<T>)even in consumers of TokenStreams, because you cannot know if a specific TokenStream really uses a specific Attribute.addAttribute(java.lang.Class<T>)will automatically make the attribute available. If you want to only use the attribute, if it is available (to optimize consuming), usehasAttribute(java.lang.Class<? extends org.apache.lucene.util.Attribute>).
-
clearAttributes
public final void clearAttributes()Resets all Attributes in this AttributeSource by callingAttributeImpl.clear()on each Attribute implementation. -
captureState
Captures the state of all Attributes. The return value can be passed torestoreState(org.apache.lucene.util.AttributeSource.State)to restore the state of this or another AttributeSource. -
restoreState
Restores this state by copying the values of all attribute implementations that this state contains into the attributes implementations of the targetStream. The targetStream must contain a corresponding instance for each argument contained in this state (e.g. it is not possible to restore the state of an AttributeSource containing a TermAttribute into a AttributeSource using a Token instance as implementation).Note that this method does not affect attributes of the targetStream that are not contained in this state. In other words, if for example the targetStream contains an OffsetAttribute, but this state doesn't, then the value of the OffsetAttribute remains unchanged. It might be desirable to reset its value to the default, in which case the caller should first call
clearAttributes()on the targetStream. -
hashCode
public int hashCode() -
equals
-
reflectAsString
This method returns the current attribute values as a string in the following format by calling thereflectWith(AttributeReflector)method:- iff
prependAttClass=true:"AttributeClass#key=value,AttributeClass#key=value" - iff
prependAttClass=false:"key=value,key=value"
- See Also:
- iff
-
reflectWith
This method is for introspection of attributes, it should simply add the key/values this AttributeSource holds to the givenAttributeReflector.This method iterates over all Attribute implementations and calls the corresponding
AttributeImpl.reflectWith(org.apache.lucene.util.AttributeReflector)method. -
cloneAttributes
Performs a clone of allAttributeImplinstances returned in a newAttributeSourceinstance. This method can be used to e.g. create another TokenStream with exactly the same attributes (usingAttributeSource(AttributeSource)). You can also use it as a (non-performant) replacement forcaptureState(), if you need to look into / modify the captured state. -
copyTo
Copies the contents of thisAttributeSourceto the given targetAttributeSource. The given instance has to provide allAttributes this instance contains. The actual attribute implementations must be identical in bothAttributeSourceinstances; ideally both AttributeSource instances should use the sameAttributeSource.AttributeFactory. You can use this method as a replacement forrestoreState(org.apache.lucene.util.AttributeSource.State), if you usecloneAttributes()instead ofcaptureState(). -
toString
Returns a string consisting of the class's simple name, the hex representation of the identity hash code, and the current reflection of all attributes.
-