Package org.apache.commons.discovery
Class ResourceClass<T>
- java.lang.Object
-
- org.apache.commons.discovery.Resource
-
- org.apache.commons.discovery.ResourceClass<T>
-
- Type Parameters:
T- The SPI type
public class ResourceClass<T> extends Resource
'Resource' located by discovery. Naming of methods becomes a real pain ('getClass()') so I've patterned this after ClassLoader... I think it works well as it will give users a point-of-reference.
-
-
Constructor Summary
Constructors Constructor Description ResourceClass(java.lang.Class<S> resourceClass, java.net.URL resource)Create a newResourceclass located by discovery.ResourceClass(java.lang.String resourceName, java.net.URL resource, java.lang.ClassLoader loader)Create a newResourceclass located by discovery.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description <S extends T>
java.lang.Class<S>loadClass()Get the value of resourceClass.static voidsetLog(org.apache.commons.logging.Log _log)Deprecated.This method is not thread-safejava.lang.StringtoString()-
Methods inherited from class org.apache.commons.discovery.Resource
getClassLoader, getName, getResource, getResourceAsStream, toArray
-
-
-
-
Field Detail
-
resourceClass
protected java.lang.Class<? extends T> resourceClass
-
-
Constructor Detail
-
ResourceClass
public ResourceClass(java.lang.Class<S> resourceClass, java.net.URL resource)
Create a newResourceclass located by discovery.- Type Parameters:
S- Any type extends T- Parameters:
resourceClass- The resource class has to be locatedresource- The resource URL has to be located
-
ResourceClass
public ResourceClass(java.lang.String resourceName, java.net.URL resource, java.lang.ClassLoader loader)
Create a newResourceclass located by discovery.- Parameters:
resourceName- The resource class name has to be locatedresource- The resource URL has to be locatedloader- The class loaders holder
-
-
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
-
loadClass
public <S extends T> java.lang.Class<S> loadClass()
Get the value of resourceClass. Loading the class does NOT guarentee that the class can be instantiated. Go figure. The class can be instantiated when the class is linked/resolved, and all dependencies are resolved. Various JDKs do this at different times, so beware: java.lang.NoClassDefFoundError when calling Class.getDeclaredMethod() (JDK14), java.lang.reflect.InvocationTargetException (wrapping java.lang.NoClassDefFoundError) when calling java.lang.newInstance (JDK13), and who knows what else..- Type Parameters:
S- Any type extends T- Returns:
- value of resourceClass.
-
-