Class ClassUtils
- java.lang.Object
-
- org.apache.commons.discovery.tools.ClassUtils
-
public class ClassUtils extends java.lang.Object
Various utilities to interact withClass
types.
-
-
Constructor Summary
Constructors Constructor Description ClassUtils()
-
Method Summary
All Methods Static Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static java.lang.reflect.Method
findPublicStaticMethod(java.lang.Class<?> clazz, java.lang.Class<?> returnType, java.lang.String methodName, java.lang.Class<?>[] paramTypes)
Looks forpublic static returnType methodName(paramTypes)
.static java.lang.String
getPackageName(java.lang.Class<?> clazz)
Get package name.static <T> T
newInstance(java.lang.Class<T> impl, java.lang.Class<?>[] paramClasses, java.lang.Object[] params)
Creates a new instance of the input class using the following policy: ifparamClasses
orparams
is null, the default constructor will be used; the public constructor withparamClasses
arguments type, withparams
as arguments value, will be used.static void
setLog(org.apache.commons.logging.Log _log)
Deprecated.This method is not thread-safestatic void
verifyAncestory(java.lang.Class<?> spi, java.lang.Class<?> impl)
Throws exception ifimpl
does not implement or extend the SPI.
-
-
-
Constructor Detail
-
ClassUtils
public ClassUtils()
-
-
Method Detail
-
setLog
@Deprecated public static void setLog(org.apache.commons.logging.Log _log)
Deprecated.This method is not thread-safeSets theLog
for this class.- Parameters:
_log
- This classLog
-
getPackageName
public static java.lang.String getPackageName(java.lang.Class<?> clazz)
Get package name. Not all class loaders 'keep' package information, in which case Class.getPackage() returns null. This means that calling Class.getPackage().getName() is unreliable at best.- Parameters:
clazz
- The class from which the package has to be extracted- Returns:
- The string representation of the input class package
-
findPublicStaticMethod
public static java.lang.reflect.Method findPublicStaticMethod(java.lang.Class<?> clazz, java.lang.Class<?> returnType, java.lang.String methodName, java.lang.Class<?>[] paramTypes)
Looks forpublic static returnType methodName(paramTypes)
.- Parameters:
clazz
- The class where looking for the methodreturnType
- The method return typemethodName
- The method nameparamTypes
- The method arguments types- Returns:
- Method
public static returnType methodName(paramTypes)
, if found to be directly implemented by clazz.
-
newInstance
public static <T> T newInstance(java.lang.Class<T> impl, java.lang.Class<?>[] paramClasses, java.lang.Object[] params) throws DiscoveryException, java.lang.InstantiationException, java.lang.IllegalAccessException, java.lang.NoSuchMethodException, java.lang.reflect.InvocationTargetException
Creates a new instance of the input class using the following policy:- if
paramClasses
orparams
is null, the default constructor will be used; - the public constructor with
paramClasses
arguments type, withparams
as arguments value, will be used.
- Type Parameters:
T
- The class type has to be instantiated- Parameters:
impl
- The class has to be instantiatedparamClasses
- The constructor arguments types (can benull
)params
- The constructor arguments values (can benull
)- Returns:
- A new class instance
- 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 SPIjava.lang.InstantiationException
- seeClass.newInstance()
java.lang.IllegalAccessException
- seeClass.newInstance()
java.lang.NoSuchMethodException
- seeClass.newInstance()
java.lang.reflect.InvocationTargetException
- seeClass.newInstance()
- if
-
verifyAncestory
public static void verifyAncestory(java.lang.Class<?> spi, java.lang.Class<?> impl) throws DiscoveryException
Throws exception ifimpl
does not implement or extend the SPI.- Parameters:
spi
- The SPI typeimpl
- The class has to be verified is a SPI implementation/extension- Throws:
DiscoveryException
- if the input implementation class is not an SPI implementation
-
-