public class DefaultInstanceManager extends java.lang.Object implements InstanceManager
| Modifier and Type | Field and Description |
|---|---|
protected java.lang.ClassLoader |
classLoader |
protected java.lang.ClassLoader |
containerClassLoader |
protected boolean |
ignoreAnnotations |
protected boolean |
privileged |
protected static StringManager |
sm
The string manager for this package.
|
| Constructor and Description |
|---|
DefaultInstanceManager(javax.naming.Context context,
java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> injectionMap,
Context catalinaContext,
java.lang.ClassLoader containerClassLoader) |
| Modifier and Type | Method and Description |
|---|---|
void |
backgroundProcess()
Called by the component using the InstanceManager periodically to perform
any regular maintenance that might be required.
|
void |
destroyInstance(java.lang.Object instance) |
protected int |
getAnnotationCacheSize()
Makes cache size available to unit tests.
|
protected java.lang.Class<?> |
loadClass(java.lang.String className,
java.lang.ClassLoader classLoader) |
protected java.lang.Class<?> |
loadClassMaybePrivileged(java.lang.String className,
java.lang.ClassLoader classLoader) |
protected static void |
lookupFieldResource(javax.naming.Context context,
java.lang.Object instance,
java.lang.reflect.Field field,
java.lang.String name,
java.lang.Class<?> clazz)
Inject resources in specified field.
|
protected static void |
lookupMethodResource(javax.naming.Context context,
java.lang.Object instance,
java.lang.reflect.Method method,
java.lang.String name,
java.lang.Class<?> clazz)
Inject resources in specified method.
|
java.lang.Object |
newInstance(java.lang.Class<?> clazz) |
void |
newInstance(java.lang.Object o) |
java.lang.Object |
newInstance(java.lang.String className) |
java.lang.Object |
newInstance(java.lang.String className,
java.lang.ClassLoader classLoader) |
protected void |
populateAnnotationsCache(java.lang.Class<?> clazz,
java.util.Map<java.lang.String,java.lang.String> injections)
Make sure that the annotations cache has been populated for the provided
class.
|
protected void |
postConstruct(java.lang.Object instance,
java.lang.Class<?> clazz)
Call postConstruct method on the specified instance recursively from
deepest superclass to actual class.
|
protected void |
preDestroy(java.lang.Object instance,
java.lang.Class<?> clazz)
Call preDestroy method on the specified instance recursively from deepest
superclass to actual class.
|
protected void |
processAnnotations(java.lang.Object instance,
java.util.Map<java.lang.String,java.lang.String> injections)
Inject resources in specified instance.
|
protected static final StringManager sm
protected final java.lang.ClassLoader classLoader
protected final java.lang.ClassLoader containerClassLoader
protected final boolean privileged
protected final boolean ignoreAnnotations
public DefaultInstanceManager(javax.naming.Context context,
java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> injectionMap,
Context catalinaContext,
java.lang.ClassLoader containerClassLoader)
public java.lang.Object newInstance(java.lang.Class<?> clazz)
throws java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException,
javax.naming.NamingException,
java.lang.InstantiationException,
java.lang.IllegalArgumentException,
java.lang.NoSuchMethodException,
java.lang.SecurityException
newInstance in interface InstanceManagerjava.lang.IllegalAccessExceptionjava.lang.reflect.InvocationTargetExceptionjavax.naming.NamingExceptionjava.lang.InstantiationExceptionjava.lang.IllegalArgumentExceptionjava.lang.NoSuchMethodExceptionjava.lang.SecurityExceptionpublic java.lang.Object newInstance(java.lang.String className)
throws java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException,
javax.naming.NamingException,
java.lang.InstantiationException,
java.lang.ClassNotFoundException,
java.lang.IllegalArgumentException,
java.lang.NoSuchMethodException,
java.lang.SecurityException
newInstance in interface InstanceManagerjava.lang.IllegalAccessExceptionjava.lang.reflect.InvocationTargetExceptionjavax.naming.NamingExceptionjava.lang.InstantiationExceptionjava.lang.ClassNotFoundExceptionjava.lang.IllegalArgumentExceptionjava.lang.NoSuchMethodExceptionjava.lang.SecurityExceptionpublic java.lang.Object newInstance(java.lang.String className,
java.lang.ClassLoader classLoader)
throws java.lang.IllegalAccessException,
javax.naming.NamingException,
java.lang.reflect.InvocationTargetException,
java.lang.InstantiationException,
java.lang.ClassNotFoundException,
java.lang.IllegalArgumentException,
java.lang.NoSuchMethodException,
java.lang.SecurityException
newInstance in interface InstanceManagerjava.lang.IllegalAccessExceptionjavax.naming.NamingExceptionjava.lang.reflect.InvocationTargetExceptionjava.lang.InstantiationExceptionjava.lang.ClassNotFoundExceptionjava.lang.IllegalArgumentExceptionjava.lang.NoSuchMethodExceptionjava.lang.SecurityExceptionpublic void newInstance(java.lang.Object o)
throws java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException,
javax.naming.NamingException
newInstance in interface InstanceManagerjava.lang.IllegalAccessExceptionjava.lang.reflect.InvocationTargetExceptionjavax.naming.NamingExceptionpublic void destroyInstance(java.lang.Object instance)
throws java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException
destroyInstance in interface InstanceManagerjava.lang.IllegalAccessExceptionjava.lang.reflect.InvocationTargetExceptionprotected void postConstruct(java.lang.Object instance,
java.lang.Class<?> clazz)
throws java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException
instance - object to call postconstruct methods onclazz - (super) class to examine for postConstruct annotation.java.lang.IllegalAccessException - if postConstruct method is inaccessible.java.lang.reflect.InvocationTargetException - if call failsprotected void preDestroy(java.lang.Object instance,
java.lang.Class<?> clazz)
throws java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException
instance - object to call preDestroy methods onclazz - (super) class to examine for preDestroy annotation.java.lang.IllegalAccessException - if preDestroy method is inaccessible.java.lang.reflect.InvocationTargetException - if call failspublic void backgroundProcess()
InstanceManagerbackgroundProcess in interface InstanceManagerprotected void populateAnnotationsCache(java.lang.Class<?> clazz,
java.util.Map<java.lang.String,java.lang.String> injections)
throws java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException,
javax.naming.NamingException
clazz - clazz to populate annotations forinjections - map of injections for this class from xml deployment
descriptorjava.lang.IllegalAccessException - if injection target is inaccessiblejavax.naming.NamingException - if value cannot be looked up in jndijava.lang.reflect.InvocationTargetException - if injection failsprotected void processAnnotations(java.lang.Object instance,
java.util.Map<java.lang.String,java.lang.String> injections)
throws java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException,
javax.naming.NamingException
instance - instance to inject intoinjections - map of injections for this class from xml deployment descriptorjava.lang.IllegalAccessException - if injection target is inaccessiblejavax.naming.NamingException - if value cannot be looked up in jndijava.lang.reflect.InvocationTargetException - if injection failsprotected int getAnnotationCacheSize()
protected java.lang.Class<?> loadClassMaybePrivileged(java.lang.String className,
java.lang.ClassLoader classLoader)
throws java.lang.ClassNotFoundException
java.lang.ClassNotFoundExceptionprotected java.lang.Class<?> loadClass(java.lang.String className,
java.lang.ClassLoader classLoader)
throws java.lang.ClassNotFoundException
java.lang.ClassNotFoundExceptionprotected static void lookupFieldResource(javax.naming.Context context,
java.lang.Object instance,
java.lang.reflect.Field field,
java.lang.String name,
java.lang.Class<?> clazz)
throws javax.naming.NamingException,
java.lang.IllegalAccessException
context - jndi context to extract value frominstance - object to inject intofield - field target for injectionname - jndi name value is bound underclazz - class annotation is defined injava.lang.IllegalAccessException - if field is inaccessiblejavax.naming.NamingException - if value is not accessible in naming contextprotected static void lookupMethodResource(javax.naming.Context context,
java.lang.Object instance,
java.lang.reflect.Method method,
java.lang.String name,
java.lang.Class<?> clazz)
throws javax.naming.NamingException,
java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException
context - jndi context to extract value frominstance - object to inject intomethod - field target for injectionname - jndi name value is bound underclazz - class annotation is defined injava.lang.IllegalAccessException - if method is inaccessiblejavax.naming.NamingException - if value is not accessible in naming contextjava.lang.reflect.InvocationTargetException - if setter call failsCopyright © 2000-2019 Apache Software Foundation. All Rights Reserved.