Class SPInterface<T>
java.lang.Object
org.apache.commons.discovery.tools.SPInterface<T>
- Type Parameters:
T
- The SPI type
Represents a Service Programming Interface (spi).
- SPI's name
- SPI's (provider) class
- SPI's (alternate) override property name
In addition, while there are many cases where this is NOT
usefull, for those in which it is:
- expected constructor argument types and parameters values.
-
Constructor Summary
ConstructorsConstructorDescriptionSPInterface
(Class<T> provider) Construct object representing Classprovider
.SPInterface
(Class<T> provider, Class<?>[] constructorParamClasses, Object[] constructorParams) Construct object representing Classprovider
.SPInterface
(Class<T> spi, String propertyName) Construct object representing Classprovider
.SPInterface
(Class<T> spi, String propertyName, Class<?>[] constructorParamClasses, Object[] constructorParams) Construct object representing Classprovider
. -
Method Summary
Modifier and TypeMethodDescriptionReturns the property name to be used for finding the name of the SPI implementation class.Returns the SPI class.Returns the SPI class name.<S extends T>
SnewInstance
(Class<S> impl) Creates a new instance of the given SPI class.static <T> SPInterface
<T> newSPInterface
(Class<T> provider) Construct object representing Classprovider
.static <T> SPInterface
<T> newSPInterface
(Class<T> provider, Class<?>[] constructorParamClasses, Object[] constructorParams) Construct object representing Classprovider
.static <T> SPInterface
<T> newSPInterface
(Class<T> provider, String propertyName) Construct object representing Classprovider
.static <T> SPInterface
<T> newSPInterface
(Class<T> provider, String propertyName, Class<?>[] constructorParamClasses, Object[] constructorParams) Construct object representing Classprovider
.<S extends T>
voidverifyAncestory
(Class<S> impl) Verifies the given SPI implementation is a SPI specialization.
-
Constructor Details
-
SPInterface
Construct object representing Classprovider
.- Parameters:
provider
- The SPI class
-
SPInterface
Construct object representing Classprovider
.- Parameters:
spi
- The SPI classpropertyName
- when looking for the name of a class implementing the provider class, a discovery strategy may involve looking for (system or other) properties having either the name of the class (provider) or thepropertyName
.
-
SPInterface
public SPInterface(Class<T> provider, Class<?>[] constructorParamClasses, Object[] constructorParams) Construct object representing Classprovider
.- Parameters:
provider
- The SPI classconstructorParamClasses
- classes representing the constructor argument types.constructorParams
- objects representing the constructor arguments.
-
SPInterface
public SPInterface(Class<T> spi, String propertyName, Class<?>[] constructorParamClasses, Object[] constructorParams) Construct object representing Classprovider
.- Parameters:
spi
- The SPI classpropertyName
- when looking for the name of a class implementing the provider class, a discovery strategy may involve looking for (system or other) properties having either the name of the class (provider) or thepropertyName
.constructorParamClasses
- classes representing the constructor argument types.constructorParams
- objects representing the constructor arguments.
-
-
Method Details
-
newSPInterface
Construct object representing Classprovider
.- Type Parameters:
T
- The SPI type- Parameters:
provider
- The SPI class- Returns:
- A new object representing Class
provider
- Since:
- 0.5
-
newSPInterface
Construct object representing Classprovider
.- Type Parameters:
T
- The SPI type- Parameters:
provider
- The SPI classpropertyName
- when looking for the name of a class implementing the provider class, a discovery strategy may involve looking for (system or other) properties having either the name of the class (provider) or thepropertyName
.- Returns:
- A new object representing Class
provider
- Since:
- 0.5
-
newSPInterface
public static <T> SPInterface<T> newSPInterface(Class<T> provider, Class<?>[] constructorParamClasses, Object[] constructorParams) Construct object representing Classprovider
.- Type Parameters:
T
- The SPI type- Parameters:
provider
- The SPI classconstructorParamClasses
- classes representing the constructor argument typesconstructorParams
- objects representing the constructor arguments- Returns:
- A new object representing Class
provider
- Since:
- 0.5
-
newSPInterface
public static <T> SPInterface<T> newSPInterface(Class<T> provider, String propertyName, Class<?>[] constructorParamClasses, Object[] constructorParams) Construct object representing Classprovider
.- Type Parameters:
T
- The SPI type- Parameters:
provider
- The SPI classpropertyName
- when looking for the name of a class implementing the provider class, a discovery strategy may involve looking for (system or other) properties having either the name of the class (provider) or thepropertyName
.constructorParamClasses
- classes representing the constructor argument typesconstructorParams
- objects representing the constructor arguments- Returns:
- A new object representing Class
provider
- Since:
- 0.5
-
getSPName
Returns the SPI class name.- Returns:
- The SPI class name
-
getSPClass
Returns the SPI class.- Returns:
- The SPI class
-
getPropertyName
Returns the property name to be used for finding the name of the SPI implementation class.- Returns:
- The property name to be used for finding the name of the SPI implementation class
-
newInstance
public <S extends T> S newInstance(Class<S> impl) throws DiscoveryException, InstantiationException, IllegalAccessException, NoSuchMethodException, InvocationTargetException Creates a new instance of the given SPI class.- Type Parameters:
S
- Any type extends T- Parameters:
impl
- The SPI class has to be instantiated- Returns:
- A new instance of the given SPI class
- Throws:
DiscoveryException
- if the class implementing the SPI cannot be found, cannot be loaded and instantiated, or if the resulting class does not implement (or extend) the SPIInstantiationException
- seeClass.newInstance()
IllegalAccessException
- seeClass.newInstance()
NoSuchMethodException
- seeClass.newInstance()
InvocationTargetException
- seeClass.newInstance()
-
verifyAncestory
Verifies the given SPI implementation is a SPI specialization.- Type Parameters:
S
- Any type extends T- Parameters:
impl
- The SPI instantance
-