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
-
getSPClass
-
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
-