Package org.apache.lucene.util
Class SPIClassIterator<S>
- java.lang.Object
-
- org.apache.lucene.util.SPIClassIterator<S>
-
public final class SPIClassIterator<S> extends Object implements Iterator<Class<? extends S>>
Helper class for loading SPI classes from classpath (META-INF files). This is a light impl ofServiceLoader
but is guaranteed to be bug-free regarding classpath order and does not instantiate or initialize the classes found.- NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static <S> SPIClassIterator<S>
get(Class<S> clazz)
Creates a new SPI iterator to lookup services of typeclazz
using the sameClassLoader
as the argument.static <S> SPIClassIterator<S>
get(Class<S> clazz, ClassLoader loader)
Creates a new SPI iterator to lookup services of typeclazz
using the given classloader.boolean
hasNext()
static boolean
isParentClassLoader(ClassLoader parent, ClassLoader child)
Utility method to check if some class loader is a (grand-)parent of or the same as another one.Class<? extends S>
next()
void
remove()
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface java.util.Iterator
forEachRemaining
-
-
-
-
Method Detail
-
get
public static <S> SPIClassIterator<S> get(Class<S> clazz)
Creates a new SPI iterator to lookup services of typeclazz
using the sameClassLoader
as the argument.
-
get
public static <S> SPIClassIterator<S> get(Class<S> clazz, ClassLoader loader)
Creates a new SPI iterator to lookup services of typeclazz
using the given classloader.
-
isParentClassLoader
public static boolean isParentClassLoader(ClassLoader parent, ClassLoader child)
Utility method to check if some class loader is a (grand-)parent of or the same as another one. This means the child will be able to load all classes from the parent, too.If caller's codesource doesn't have enough permissions to do the check,
false
is returned (this is fine, because if we get aSecurityException
it is for sure no parent).
-
-