Package org.apache.lucene.analysis.util
Class AnalysisSPILoader<S extends AbstractAnalysisFactory>
- java.lang.Object
-
- org.apache.lucene.analysis.util.AnalysisSPILoader<S>
-
public final class AnalysisSPILoader<S extends AbstractAnalysisFactory> extends java.lang.Object
Helper class for loading named SPIs from classpath (e.g. Tokenizers, TokenStreams).
-
-
Field Summary
Fields Modifier and Type Field Description private java.lang.Class<S>
clazz
private java.util.Set<java.lang.String>
originalNames
private static java.util.regex.Pattern
SERVICE_NAME_PATTERN
private java.util.Map<java.lang.String,java.lang.Class<? extends S>>
services
private java.lang.String[]
suffixes
-
Constructor Summary
Constructors Constructor Description AnalysisSPILoader(java.lang.Class<S> clazz)
AnalysisSPILoader(java.lang.Class<S> clazz, java.lang.String[] suffixes)
AnalysisSPILoader(java.lang.Class<S> clazz, java.lang.String[] suffixes, java.lang.ClassLoader classloader)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.Set<java.lang.String>
availableServices()
private boolean
isValidName(java.lang.String name)
java.lang.Class<? extends S>
lookupClass(java.lang.String name)
static <T extends AbstractAnalysisFactory>
TnewFactoryClassInstance(java.lang.Class<T> clazz, java.util.Map<java.lang.String,java.lang.String> args)
Creates a new instance of the givenAbstractAnalysisFactory
by invoking the constructor, passing the given argument map.S
newInstance(java.lang.String name, java.util.Map<java.lang.String,java.lang.String> args)
void
reload(java.lang.ClassLoader classloader)
Reloads the internal SPI list from the givenClassLoader
.
-
-
-
Field Detail
-
services
private volatile java.util.Map<java.lang.String,java.lang.Class<? extends S extends AbstractAnalysisFactory>> services
-
originalNames
private volatile java.util.Set<java.lang.String> originalNames
-
clazz
private final java.lang.Class<S extends AbstractAnalysisFactory> clazz
-
suffixes
private final java.lang.String[] suffixes
-
SERVICE_NAME_PATTERN
private static final java.util.regex.Pattern SERVICE_NAME_PATTERN
-
-
Constructor Detail
-
AnalysisSPILoader
public AnalysisSPILoader(java.lang.Class<S> clazz)
-
AnalysisSPILoader
public AnalysisSPILoader(java.lang.Class<S> clazz, java.lang.String[] suffixes)
-
AnalysisSPILoader
public AnalysisSPILoader(java.lang.Class<S> clazz, java.lang.String[] suffixes, java.lang.ClassLoader classloader)
-
-
Method Detail
-
reload
public void reload(java.lang.ClassLoader classloader)
Reloads the internal SPI list from the givenClassLoader
. Changes to the service list are visible after the method ends, all iterators (e.g., fromavailableServices()
,...) stay consistent.NOTE: Only new service providers are added, existing ones are never removed or replaced.
This method is expensive and should only be called for discovery of new service providers on the given classpath/classloader!
-
isValidName
private boolean isValidName(java.lang.String name)
-
newInstance
public S newInstance(java.lang.String name, java.util.Map<java.lang.String,java.lang.String> args)
-
lookupClass
public java.lang.Class<? extends S> lookupClass(java.lang.String name)
-
availableServices
public java.util.Set<java.lang.String> availableServices()
-
newFactoryClassInstance
public static <T extends AbstractAnalysisFactory> T newFactoryClassInstance(java.lang.Class<T> clazz, java.util.Map<java.lang.String,java.lang.String> args)
Creates a new instance of the givenAbstractAnalysisFactory
by invoking the constructor, passing the given argument map.
-
-