org.apache.catalina.core
Class DefaultInstanceManager

java.lang.Object
  extended by org.apache.catalina.core.DefaultInstanceManager
All Implemented Interfaces:
InstanceManager

public class DefaultInstanceManager
extends java.lang.Object
implements InstanceManager

Version:
$Rev: 1000 $ $Date: 2009-04-09 03:27:49 +0200 (Thu, 09 Apr 2009) $

Field Summary
protected  java.lang.ClassLoader classLoader
           
protected  java.lang.ClassLoader containerClassLoader
           
protected  boolean ignoreAnnotations
           
protected  boolean privileged
           
 
Constructor Summary
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)
           
 
Method Summary
 void destroyInstance(java.lang.Object instance)
           
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<?> c)
           
 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 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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

classLoader

protected final java.lang.ClassLoader classLoader

containerClassLoader

protected final java.lang.ClassLoader containerClassLoader

privileged

protected boolean privileged

ignoreAnnotations

protected boolean ignoreAnnotations
Constructor Detail

DefaultInstanceManager

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)
Method Detail

newInstance

public 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
Specified by:
newInstance in interface InstanceManager
Throws:
java.lang.IllegalAccessException
java.lang.reflect.InvocationTargetException
javax.naming.NamingException
java.lang.InstantiationException
java.lang.ClassNotFoundException

newInstance

public 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
Specified by:
newInstance in interface InstanceManager
Throws:
java.lang.IllegalAccessException
javax.naming.NamingException
java.lang.reflect.InvocationTargetException
java.lang.InstantiationException
java.lang.ClassNotFoundException

newInstance

public java.lang.Object newInstance(java.lang.Class<?> c)
                             throws java.lang.IllegalAccessException,
                                    java.lang.reflect.InvocationTargetException,
                                    javax.naming.NamingException,
                                    java.lang.InstantiationException
Specified by:
newInstance in interface InstanceManager
Throws:
java.lang.IllegalAccessException
java.lang.reflect.InvocationTargetException
javax.naming.NamingException
java.lang.InstantiationException

newInstance

public void newInstance(java.lang.Object o)
                 throws java.lang.IllegalAccessException,
                        java.lang.reflect.InvocationTargetException,
                        javax.naming.NamingException
Specified by:
newInstance in interface InstanceManager
Throws:
java.lang.IllegalAccessException
java.lang.reflect.InvocationTargetException
javax.naming.NamingException

destroyInstance

public void destroyInstance(java.lang.Object instance)
                     throws java.lang.IllegalAccessException,
                            java.lang.reflect.InvocationTargetException
Specified by:
destroyInstance in interface InstanceManager
Throws:
java.lang.IllegalAccessException
java.lang.reflect.InvocationTargetException

postConstruct

protected void postConstruct(java.lang.Object instance,
                             java.lang.Class<?> clazz)
                      throws java.lang.IllegalAccessException,
                             java.lang.reflect.InvocationTargetException
Call postConstruct method on the specified instance recursively from deepest superclass to actual class.

Parameters:
instance - object to call postconstruct methods on
clazz - (super) class to examine for postConstruct annotation.
Throws:
java.lang.IllegalAccessException - if postConstruct method is inaccessible.
java.lang.reflect.InvocationTargetException - if call fails

preDestroy

protected void preDestroy(java.lang.Object instance,
                          java.lang.Class<?> clazz)
                   throws java.lang.IllegalAccessException,
                          java.lang.reflect.InvocationTargetException
Call preDestroy method on the specified instance recursively from deepest superclass to actual class.

Parameters:
instance - object to call preDestroy methods on
clazz - (super) class to examine for preDestroy annotation.
Throws:
java.lang.IllegalAccessException - if preDestroy method is inaccessible.
java.lang.reflect.InvocationTargetException - if call fails

processAnnotations

protected 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
Inject resources in specified instance.

Parameters:
instance - instance to inject into
injections - map of injections for this class from xml deployment descriptor
Throws:
java.lang.IllegalAccessException - if injection target is inaccessible
javax.naming.NamingException - if value cannot be looked up in jndi
java.lang.reflect.InvocationTargetException - if injection fails

loadClassMaybePrivileged

protected java.lang.Class<?> loadClassMaybePrivileged(java.lang.String className,
                                                      java.lang.ClassLoader classLoader)
                                               throws java.lang.ClassNotFoundException
Throws:
java.lang.ClassNotFoundException

loadClass

protected java.lang.Class<?> loadClass(java.lang.String className,
                                       java.lang.ClassLoader classLoader)
                                throws java.lang.ClassNotFoundException
Throws:
java.lang.ClassNotFoundException

lookupFieldResource

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)
                                   throws javax.naming.NamingException,
                                          java.lang.IllegalAccessException
Inject resources in specified field.

Parameters:
context - jndi context to extract value from
instance - object to inject into
field - field target for injection
name - jndi name value is bound under
clazz - class annotation is defined in
Throws:
java.lang.IllegalAccessException - if field is inaccessible
javax.naming.NamingException - if value is not accessible in naming context

lookupMethodResource

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)
                                    throws javax.naming.NamingException,
                                           java.lang.IllegalAccessException,
                                           java.lang.reflect.InvocationTargetException
Inject resources in specified method.

Parameters:
context - jndi context to extract value from
instance - object to inject into
method - field target for injection
name - jndi name value is bound under
clazz - class annotation is defined in
Throws:
java.lang.IllegalAccessException - if method is inaccessible
javax.naming.NamingException - if value is not accessible in naming context
java.lang.reflect.InvocationTargetException - if setter call fails


Copyright © 2000-2009 Apache Software Foundation. All Rights Reserved.