Package elki.utilities
Class ELKIServiceRegistry
- java.lang.Object
-
- elki.utilities.ELKIServiceRegistry
-
public class ELKIServiceRegistry extends java.lang.ObjectRegistry of available implementations in ELKI.- Since:
- 0.7.0
- Author:
- Erich Schubert
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classELKIServiceRegistry.EntryEntry in the service registry.
-
Field Summary
Fields Modifier and Type Field Description private static java.lang.ClassLoaderCLASSLOADERClass loaderprivate static java.util.Map<java.lang.Class<?>,ELKIServiceRegistry.Entry>dataRegistry data.static java.lang.StringFACTORY_POSTFIXFactory class postfix.private static java.lang.Class<?>FAILED_LOADValue to abuse for failures.private static LoggingLOGClass logger.
-
Constructor Summary
Constructors Modifier Constructor Description privateELKIServiceRegistry()Do not use constructor.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description protected static booleancontains(java.lang.Class<?> c)Test if a registry entry has already been created.static java.util.List<java.lang.Class<?>>findAllImplementations(java.lang.Class<?> restrictionClass)Find all implementations of a particular interface.static java.util.List<java.lang.Class<?>>findAllImplementations(java.lang.Class<?> restrictionClass, boolean everything)Find all implementations of a given class in the classpath.static <C> java.lang.Class<? extends C>findImplementation(java.lang.Class<? super C> restrictionClass, java.lang.String value)Find an implementation of the given interface / super class, given a relative class name or alias name.protected static voidregister(java.lang.Class<?> parent, java.lang.Class<?> clazz)Register a class in the registry.protected static voidregister(java.lang.Class<?> parent, java.lang.String cname)Register a class with the registry.protected static voidregisterAlias(java.lang.Class<?> parent, java.lang.String alias, java.lang.String cname)Register a class alias with the registry.private static <C> java.lang.Class<?>tryAlternateNames(java.lang.Class<? super C> restrictionClass, java.lang.String value, ELKIServiceRegistry.Entry e)Try loading alternative names.private static java.lang.Class<?>tryLoadClass(java.lang.String value)Attempt to load a class
-
-
-
Field Detail
-
LOG
private static final Logging LOG
Class logger.
-
CLASSLOADER
private static final java.lang.ClassLoader CLASSLOADER
Class loader
-
FACTORY_POSTFIX
public static final java.lang.String FACTORY_POSTFIX
Factory class postfix.- See Also:
- Constant Field Values
-
data
private static java.util.Map<java.lang.Class<?>,ELKIServiceRegistry.Entry> data
Registry data.
-
FAILED_LOAD
private static final java.lang.Class<?> FAILED_LOAD
Value to abuse for failures.
-
-
Method Detail
-
register
protected static void register(java.lang.Class<?> parent, java.lang.String cname)Register a class with the registry.- Parameters:
parent- Parent classcname- Class name
-
register
protected static void register(java.lang.Class<?> parent, java.lang.Class<?> clazz)Register a class in the registry.Careful: do not use this from your code before first making sure this has been fully initialized. Otherwise, other implementations will not be found. Therefore, avoid calling this from your own Java code!
- Parameters:
parent- Classclazz- Implementation
-
registerAlias
protected static void registerAlias(java.lang.Class<?> parent, java.lang.String alias, java.lang.String cname)Register a class alias with the registry.- Parameters:
parent- Parent classalias- Alias namecname- Class name
-
tryLoadClass
private static java.lang.Class<?> tryLoadClass(java.lang.String value)
Attempt to load a class- Parameters:
value- Class name to try.- Returns:
- Class, or
null.
-
contains
protected static boolean contains(java.lang.Class<?> c)
Test if a registry entry has already been created.- Parameters:
c- Class- Returns:
trueif a registry entry has been created.
-
findAllImplementations
public static java.util.List<java.lang.Class<?>> findAllImplementations(java.lang.Class<?> restrictionClass)
Find all implementations of a particular interface.- Parameters:
restrictionClass- Class to scan for- Returns:
- Found implementations
-
findAllImplementations
public static java.util.List<java.lang.Class<?>> findAllImplementations(java.lang.Class<?> restrictionClass, boolean everything)Find all implementations of a given class in the classpath.Note: returned classes may be abstract.
- Parameters:
restrictionClass- Class restrictioneverything- include interfaces, abstract and private classes- Returns:
- List of found classes.
-
findImplementation
public static <C> java.lang.Class<? extends C> findImplementation(java.lang.Class<? super C> restrictionClass, java.lang.String value)Find an implementation of the given interface / super class, given a relative class name or alias name.- Parameters:
restrictionClass- Restriction classvalue- Class name, relative class name, or nickname.- Returns:
- Class found or
null
-
tryAlternateNames
private static <C> java.lang.Class<?> tryAlternateNames(java.lang.Class<? super C> restrictionClass, java.lang.String value, ELKIServiceRegistry.Entry e)Try loading alternative names.- Type Parameters:
C- Generic type- Parameters:
restrictionClass- Context class, for prepending a package name.value- Class name requestede- Cache entry, may be null- Returns:
- Class, or null
-
-