Class AnnotationProxyFactory


  • public final class AnnotationProxyFactory
    extends java.lang.Object
    Allows you to transform the type of your custom annotation to a reference annotation type. It can come handy when you want to allow the consumers of your library not to depend on your API because of the annotations, still allowing them to use the original annotation methods.

    Example :

    //getting a custom annotation from a class my.Annotation customAnnotation = klazz.getAnnotation(my.Annotation.class); //if this annotation is "similar" (duck-typing, same methods) to the reference one, I can get a proxy to it, whose type is the reference annotation ehcache.Annotation annotation = AnnotationProxyFactory.getAnnotationProxy(customAnnotation, ehcache.Annotation.class);

    //so my library can apply the behavior when the default annotation is used

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      private static class  AnnotationProxyFactory.AnnotationInvocationHandler
      Invocation handler implementing an invoke method that redirects every method call to the custom annotation method when possible; if not returns the reference annotation method default value
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static <T extends java.lang.annotation.Annotation>
      T
      getAnnotationProxy​(java.lang.annotation.Annotation customAnnotation, java.lang.Class<T> referenceAnnotation)
      Returns a proxy on the customAnnotation, having the same type than the referenceAnnotation
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • AnnotationProxyFactory

        private AnnotationProxyFactory()
    • Method Detail

      • getAnnotationProxy

        public static <T extends java.lang.annotation.Annotation> T getAnnotationProxy​(java.lang.annotation.Annotation customAnnotation,
                                                                                       java.lang.Class<T> referenceAnnotation)
        Returns a proxy on the customAnnotation, having the same type than the referenceAnnotation
        Parameters:
        customAnnotation - annotation proxied
        referenceAnnotation - type of the returned annotation
        Returns:
        proxied customAnnotation with the type of referenceAnnotation