Package org.apache.lucene.analysis.miscellaneous

# Class ConditionalTokenFilter

java.lang.Object
org.apache.lucene.util.AttributeSource
org.apache.lucene.analysis.TokenStream
org.apache.lucene.analysis.TokenFilter
org.apache.lucene.analysis.miscellaneous.ConditionalTokenFilter

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`, `Unwrappable<TokenStream>`

Direct Known Subclasses:
  `ProtectedTermFilter`

public abstract class ConditionalTokenFilter extends TokenFilter
Allows skipping TokenFilters based on the current set of attributes.

To use, implement the `shouldFilter()` method. If it returns `true`, then calling `incrementToken()` will use the wrapped TokenFilter(s) to make changes to the tokenstream. If it returns `false`, then the wrapped filter(s) will be skipped.

## Nested Class Summary

## Nested classes/interfaces inherited from class org.apache.lucene.util.AttributeSource

`AttributeSource.State`

## Field Summary

### Fields inherited from class org.apache.lucene.analysis.TokenFilter

`input`

### Fields inherited from class org.apache.lucene.analysis.TokenStream

`DEFAULT_TOKEN_ATTRIBUTE_FACTORY`

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`ConditionalTokenFilter(TokenStream input, Function<TokenStream,TokenStream> inputFactory)`
Create a new ConditionalTokenFilter

## Method Summary

Modifier and Type
Method
Description
`void`
`close()`
`void`
`end()`
`final boolean`
`incrementToken()`
`void`
`reset()`
`protected abstract boolean`
`shouldFilter()`
Whether or not to execute the wrapped TokenFilter(s) for the current token

### Methods inherited from class org.apache.lucene.analysis.TokenFilter

`unwrap`

### Methods inherited from class org.apache.lucene.util.AttributeSource

`addAttribute, addAttributeImpl, captureState, clearAttributes, cloneAttributes, copyTo, endAttributes, equals, getAttribute, getAttributeClassesIterator, getAttributeFactory, getAttributeImplsIterator, hasAttribute, hasAttributes, hashCode, reflectAsString, reflectWith, removeAllAttributes, restoreState, toString`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

## Constructor Details

### ConditionalTokenFilter

protected ConditionalTokenFilter(TokenStream input, Function<TokenStream,TokenStream> inputFactory)
Create a new ConditionalTokenFilter

Parameters:
  `input` - the input TokenStream
  `inputFactory` - a factory function to create the wrapped filter(s)

## Method Details

### shouldFilter

protected abstract boolean shouldFilter() throws IOException
Whether or not to execute the wrapped TokenFilter(s) for the current token

Throws:
  `IOException`

### reset

public void reset() throws IOException

Overrides:
  `reset` in class `TokenFilter`
Throws:
  `IOException`

### end

public void end() throws IOException

Overrides:
  `end` in class `TokenFilter`
Throws:
  `IOException`

### close

public void close() throws IOException

Specified by:
  `close` in interface `AutoCloseable`
Specified by:
  `close` in interface `Closeable`
Overrides:
  `close` in class `TokenFilter`
Throws:
  `IOException`

### incrementToken

public final boolean incrementToken() throws IOException

Specified by:
  `incrementToken` in class `TokenStream`
Throws:
  `IOException`