Class DecoratorInvocationHandler<T>

  • All Implemented Interfaces:
    java.lang.reflect.InvocationHandler
    Direct Known Subclasses:
    PostDecorator, PreDecorator

    public abstract class DecoratorInvocationHandler<T>
    extends java.lang.Object
    implements java.lang.reflect.InvocationHandler
    Author:
    Ivan Hristov
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      T getDecorator()  
      protected abstract java.lang.Object getResult​(java.lang.Object firstResult, java.lang.Object secondResult)  
      T getTarget()  
      java.lang.Object invoke​(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args)  
      protected abstract java.lang.Object invokeFirst​(java.lang.reflect.Method method, java.lang.Object[] args)  
      protected abstract java.lang.Object invokeSecond​(java.lang.reflect.Method method, java.lang.Object[] args)  
      void setDecorator​(T decorator)  
      void setReturnDecoratorResult​(boolean returnDecoratorResult)  
      protected boolean shouldReturnDecoratorResult()  
      • Methods inherited from class java.lang.Object

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

      • DecoratorInvocationHandler

        public DecoratorInvocationHandler​(T target,
                                          T decorator)
    • Method Detail

      • setDecorator

        public void setDecorator​(T decorator)
      • getTarget

        public T getTarget()
      • getDecorator

        public T getDecorator()
      • invoke

        public final java.lang.Object invoke​(java.lang.Object proxy,
                                             java.lang.reflect.Method method,
                                             java.lang.Object[] args)
                                      throws java.lang.Throwable
        Specified by:
        invoke in interface java.lang.reflect.InvocationHandler
        Throws:
        java.lang.Throwable
      • invokeFirst

        protected abstract java.lang.Object invokeFirst​(java.lang.reflect.Method method,
                                                        java.lang.Object[] args)
                                                 throws java.lang.IllegalArgumentException,
                                                        java.lang.IllegalAccessException,
                                                        java.lang.reflect.InvocationTargetException
        Throws:
        java.lang.IllegalArgumentException
        java.lang.IllegalAccessException
        java.lang.reflect.InvocationTargetException
      • invokeSecond

        protected abstract java.lang.Object invokeSecond​(java.lang.reflect.Method method,
                                                         java.lang.Object[] args)
                                                  throws java.lang.IllegalArgumentException,
                                                         java.lang.IllegalAccessException,
                                                         java.lang.reflect.InvocationTargetException
        Throws:
        java.lang.IllegalArgumentException
        java.lang.IllegalAccessException
        java.lang.reflect.InvocationTargetException
      • getResult

        protected abstract java.lang.Object getResult​(java.lang.Object firstResult,
                                                      java.lang.Object secondResult)
      • setReturnDecoratorResult

        public void setReturnDecoratorResult​(boolean returnDecoratorResult)
      • shouldReturnDecoratorResult

        protected boolean shouldReturnDecoratorResult()