Class ClassUtils
- java.lang.Object
-
- org.apache.commons.discovery.tools.ClassUtils
-
public class ClassUtils extends java.lang.Object
Various utilities to interact withClasstypes.
-
-
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.MethodfindPublicStaticMethod(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.StringgetPackageName(java.lang.Class<?> clazz)Get package name.static <T> TnewInstance(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: ifparamClassesorparamsis null, the default constructor will be used; the public constructor withparamClassesarguments type, withparamsas arguments value, will be used.static voidsetLog(org.apache.commons.logging.Log _log)Deprecated.This method is not thread-safestatic voidverifyAncestory(java.lang.Class<?> spi, java.lang.Class<?> impl)Throws exception ifimpldoes 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 theLogfor 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
paramClassesorparamsis null, the default constructor will be used; - the public constructor with
paramClassesarguments type, withparamsas 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 ifimpldoes 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
-
-