org.jboss.ejb3.interceptors.container
Class AbstractContainer<T,C extends AbstractContainer<T,C>>

java.lang.Object
  extended by org.jboss.ejb3.interceptors.annotation.AnnotationAdvisorSupport
      extended by org.jboss.ejb3.interceptors.container.AbstractContainer<T,C>
All Implemented Interfaces:
AnnotationAdvisor
Direct Known Subclasses:
AbstractDirectContainer, ProxyContainer

public abstract class AbstractContainer<T,C extends AbstractContainer<T,C>>
extends AnnotationAdvisorSupport
implements AnnotationAdvisor

The base of all containers. Provides functions to allow for object construction and invocation with interception. Note that it's up to the actual implementation to expose any methods.

Version:
$Revision: 72193 $
Author:
Carlo de Wolf

Constructor Summary
protected AbstractContainer()
          For a completely customized startup.
protected AbstractContainer(String name, org.jboss.aop.Domain domain, Class<? extends T> beanClass)
           
protected AbstractContainer(String name, String domainName, Class<? extends T> beanClass)
           
 
Method Summary
protected  BeanContext<T> construct(Constructor<? extends T> constructor, Object... initargs)
           
protected  ManagedObjectAdvisor<T,C> createAdvisor(String name, org.jboss.aop.Domain domain, Class<? extends T> beanClass, org.jboss.aop.annotation.AnnotationRepository annotations)
           
protected  void createAndSetAdvisor(String name, org.jboss.aop.Domain domain, Class<? extends T> beanClass, org.jboss.aop.annotation.AnnotationRepository annotations)
           
protected  Object createInterceptor(Class<?> interceptorClass)
           
protected  void destroy(BeanContext<T> bean)
           
protected  ManagedObjectAdvisor<T,C> getAdvisor()
           
protected  Class<? extends T> getBeanClass()
           
static
<C extends AbstractContainer<?,?>>
C
getContainer(org.jboss.aop.Advisor advisor)
           
protected static org.jboss.aop.Domain getDomain(String domainName)
           
 InterceptorRegistry getInterceptorRegistry()
           
protected  void initializeAdvisor(String name, org.jboss.aop.Domain domain, Class<? extends T> beanClass)
          Finalize construction of the abstract container by setting the advisor.
protected  void initializeAdvisor(String name, org.jboss.aop.Domain domain, Class<? extends T> beanClass, org.jboss.aop.annotation.AnnotationRepository annotations)
           
protected  Object invoke(BeanContext<T> target, Method method, Object[] arguments)
          Call a method upon a target object with all interceptors in place.
protected
<R> R
invoke(BeanContext<T> target, String methodName, Object... args)
          A convenient, but unchecked and slow method to call a method upon a target.
 void setBeanContextFactoryClass(Class<? extends BeanContextFactory<T,C>> beanContextFactoryClass)
           
 
Methods inherited from class org.jboss.ejb3.interceptors.annotation.AnnotationAdvisorSupport
getAnnotation, getAnnotation, getAnnotation, isAnnotationPresent, isAnnotationPresent, isAnnotationPresent
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.jboss.ejb3.interceptors.annotation.AnnotationAdvisor
getAnnotation, getAnnotation, getAnnotation, isAnnotationPresent, isAnnotationPresent, isAnnotationPresent
 

Constructor Detail

AbstractContainer

protected AbstractContainer()
For a completely customized startup. Note that before construction ends advisor must be set!


AbstractContainer

protected AbstractContainer(String name,
                            org.jboss.aop.Domain domain,
                            Class<? extends T> beanClass)

AbstractContainer

protected AbstractContainer(String name,
                            String domainName,
                            Class<? extends T> beanClass)
Method Detail

construct

protected BeanContext<T> construct(Constructor<? extends T> constructor,
                                   Object... initargs)

createInterceptor

protected Object createInterceptor(Class<?> interceptorClass)
                            throws InstantiationException,
                                   IllegalAccessException
Throws:
InstantiationException
IllegalAccessException

destroy

protected void destroy(BeanContext<T> bean)

initializeAdvisor

protected void initializeAdvisor(String name,
                                 org.jboss.aop.Domain domain,
                                 Class<? extends T> beanClass)
Finalize construction of the abstract container by setting the advisor.

Parameters:
name - the name of the advisor
domain - the domain for the advisor
beanClass - the class being advised

initializeAdvisor

protected final void initializeAdvisor(String name,
                                       org.jboss.aop.Domain domain,
                                       Class<? extends T> beanClass,
                                       org.jboss.aop.annotation.AnnotationRepository annotations)

createAndSetAdvisor

protected final void createAndSetAdvisor(String name,
                                         org.jboss.aop.Domain domain,
                                         Class<? extends T> beanClass,
                                         org.jboss.aop.annotation.AnnotationRepository annotations)

createAdvisor

protected ManagedObjectAdvisor<T,C> createAdvisor(String name,
                                                  org.jboss.aop.Domain domain,
                                                  Class<? extends T> beanClass,
                                                  org.jboss.aop.annotation.AnnotationRepository annotations)

getAdvisor

protected final ManagedObjectAdvisor<T,C> getAdvisor()

getBeanClass

protected Class<? extends T> getBeanClass()

getContainer

public static <C extends AbstractContainer<?,?>> C getContainer(org.jboss.aop.Advisor advisor)

getDomain

protected static final org.jboss.aop.Domain getDomain(String domainName)

getInterceptorRegistry

public InterceptorRegistry getInterceptorRegistry()

invoke

protected Object invoke(BeanContext<T> target,
                        Method method,
                        Object[] arguments)
                 throws Throwable
Call a method upon a target object with all interceptors in place.

Parameters:
target - the target to invoke upon
method - the method to invoke
arguments - arguments to the method
Returns:
return value of the method
Throws:
Throwable - if anything goes wrong

invoke

protected <R> R invoke(BeanContext<T> target,
                       String methodName,
                       Object... args)
            throws Throwable
A convenient, but unchecked and slow method to call a method upon a target. (Slow method)

Type Parameters:
R - the return type
Parameters:
target - the target to invoke upon
methodName - the method name to invoke
args - the arguments to the method
Returns:
the return value
Throws:
Throwable - if anything goes wrong

setBeanContextFactoryClass

public void setBeanContextFactoryClass(Class<? extends BeanContextFactory<T,C>> beanContextFactoryClass)


Copyright © 2009 JBoss, a division of Red Hat, Inc.. All Rights Reserved.