org.codehaus.aspectwerkz.annotation
Class Java5AnnotationInvocationHandler

java.lang.Object
  extended by org.codehaus.aspectwerkz.annotation.Java5AnnotationInvocationHandler
All Implemented Interfaces:
InvocationHandler

public class Java5AnnotationInvocationHandler
extends Object
implements InvocationHandler

Dynamic proxy handler for ASM Annotations we extract The handler resolve the LazyClass to a concrete Class so that the proxy creation does not trigger any class loading.

Author:
Alexandre Vasseur

Method Summary
static Annotation getAnnotationProxy(org.objectweb.asm.attrs.Annotation annotation, ClassLoader loader)
          Build and return a dynamic proxy representing the given ASM Annotation.
 Object invoke(Object proxy, Method method, Object[] args)
          Dynamic proxy based implementation toString(), annotationType() and value() have a specific behavior
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

invoke

public Object invoke(Object proxy,
                     Method method,
                     Object[] args)
              throws Throwable
Dynamic proxy based implementation toString(), annotationType() and value() have a specific behavior

Specified by:
invoke in interface InvocationHandler
Parameters:
proxy -
method -
args -
Returns:
Throws:
Throwable

getAnnotationProxy

public static Annotation getAnnotationProxy(org.objectweb.asm.attrs.Annotation annotation,
                                            ClassLoader loader)
Build and return a dynamic proxy representing the given ASM Annotation. The proxy implements the AspectWerkz Annotation interface, as well as the user type Annotation. Each elements of the annotation is proxied if needed or agressively created unless Class types to not trigger any nested loading. Note: JSR-175 does not support Annotation value of N-dimensional array. At most 1 dimension is supported and only for a subset of Java types.

Parameters:
annotation -
loader - the classloader of the annotatED component (can be different from the one of the annotation class)
Returns:


Copyright © 2002-2005 Jonas Bonér, Alexandre Vasseur. All Rights Reserved.