org.jboss.ejb3.interceptors.direct
Class AbstractDirectContainer<T,C extends AbstractDirectContainer<T,C>>

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

public abstract class AbstractDirectContainer<T,C extends AbstractDirectContainer<T,C>>
extends AbstractContainer<T,C>

The direct container invokes interceptors directly on an instance. It's useful in an environment where we don't want to fiddle with the classloader and still have control on how instances are called.

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

Constructor Summary
protected AbstractDirectContainer()
           
protected AbstractDirectContainer(java.lang.String name, org.jboss.aop.Domain domain, java.lang.Class<? extends T> beanClass)
           
protected AbstractDirectContainer(java.lang.String name, java.lang.String domainName, java.lang.Class<? extends T> beanClass)
           
 
Method Summary
 BeanContext<T> construct()
           
 BeanContext<T> construct(java.lang.Object[] initargs, java.lang.Class<?>[] parameterTypes)
           
 void destroy(BeanContext<T> bean)
           
 java.lang.Class<? extends T> getBeanClass()
          Do not call, for use in indirect container implementations.
 InterceptorRegistry getInterceptorRegistry()
           
 java.lang.Object invoke(BeanContext<T> target, java.lang.reflect.Method method, java.lang.Object[] arguments)
          Call a method upon a target object with all interceptors in place.
<R> R
invoke(BeanContext<T> target, java.lang.String methodName, java.lang.Object... args)
          A convenient, but unchecked and slow method to call a method upon a target.
 java.lang.Object invokeIndirect(java.lang.Object target, java.lang.reflect.Method method, java.lang.Object[] arguments)
          Do not call, for use in indirect container implementations.
 
Methods inherited from class org.jboss.ejb3.interceptors.container.AbstractContainer
construct, createAdvisor, createAndSetAdvisor, createInterceptor, getAdvisor, getContainer, getDomain, initializeAdvisor, initializeAdvisor, setBeanContextFactoryClass
 
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

AbstractDirectContainer

protected AbstractDirectContainer()

AbstractDirectContainer

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

AbstractDirectContainer

protected AbstractDirectContainer(java.lang.String name,
                                  java.lang.String domainName,
                                  java.lang.Class<? extends T> beanClass)
Method Detail

construct

public BeanContext<T> construct()
                         throws java.lang.SecurityException,
                                java.lang.NoSuchMethodException
Throws:
java.lang.SecurityException
java.lang.NoSuchMethodException

construct

public BeanContext<T> construct(java.lang.Object[] initargs,
                                java.lang.Class<?>[] parameterTypes)
                         throws java.lang.SecurityException,
                                java.lang.NoSuchMethodException
Throws:
java.lang.SecurityException
java.lang.NoSuchMethodException

destroy

public void destroy(BeanContext<T> bean)
Overrides:
destroy in class AbstractContainer<T,C extends AbstractDirectContainer<T,C>>

getBeanClass

public java.lang.Class<? extends T> getBeanClass()
Do not call, for use in indirect container implementations.

Overrides:
getBeanClass in class AbstractContainer<T,C extends AbstractDirectContainer<T,C>>
Returns:

getInterceptorRegistry

public InterceptorRegistry getInterceptorRegistry()
Overrides:
getInterceptorRegistry in class AbstractContainer<T,C extends AbstractDirectContainer<T,C>>

invoke

public java.lang.Object invoke(BeanContext<T> target,
                               java.lang.reflect.Method method,
                               java.lang.Object[] arguments)
                        throws java.lang.Throwable
Description copied from class: AbstractContainer
Call a method upon a target object with all interceptors in place.

Overrides:
invoke in class AbstractContainer<T,C extends AbstractDirectContainer<T,C>>
Parameters:
target - the target to invoke upon
method - the method to invoke
arguments - arguments to the method
Returns:
return value of the method
Throws:
java.lang.Throwable - if anything goes wrong

invoke

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

Overrides:
invoke in class AbstractContainer<T,C extends AbstractDirectContainer<T,C>>
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:
java.lang.Throwable - if anything goes wrong

invokeIndirect

public java.lang.Object invokeIndirect(java.lang.Object target,
                                       java.lang.reflect.Method method,
                                       java.lang.Object[] arguments)
                                throws java.lang.Throwable
Do not call, for use in indirect container implementations.

Throws:
java.lang.Throwable


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