Class GenericProxy

java.lang.Object
xyz.cofe.sql.cpool.proxy.GenericProxy
All Implemented Interfaces:
java.lang.reflect.InvocationHandler

public class GenericProxy
extends java.lang.Object
implements java.lang.reflect.InvocationHandler
Общий класс для создания прокси объектов
Author:
nt.gocha@gmail.com
  • Nested Class Summary

    Nested Classes 
    Modifier and Type Class Description
    static class  GenericProxy.Builder<T>
    Конструирование Proxy
  • Field Summary

    Fields 
    Modifier and Type Field Description
    protected boolean finalizeSource  
    protected java.lang.String loggerName  
    protected java.util.List<MethodCallListener> methodCallListeners
    Подписчики на обработку вызоыва метода целевого объекта.
    protected java.util.Map<java.lang.String,​java.util.logging.Level> methodLogLevel  
    protected java.lang.Object source  
  • Constructor Summary

    Constructors 
    Constructor Description
    GenericProxy​(java.lang.Object source)  
  • Method Summary

    Modifier and Type Method Description
    static <T> GenericProxy.Builder<T> builder​(T conn, java.lang.Class... itfs)
    Конструирование Proxy объекта
    protected void finalize()  
    protected HookArguments fireBeginCall​(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args)
    Вызывается перед началом вызова целевого метода
    protected java.lang.Object fireEndCall​(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args, java.lang.Object result, java.lang.Throwable err)  
    java.lang.String getLoggerName()  
    java.lang.Object invoke​(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args)
    Вызов целевого метода.
    protected void logInvoke​(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args)  
    void setLoggerName​(java.lang.String lgrName)  

    Methods inherited from class java.lang.Object

    clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • source

      protected java.lang.Object source
    • methodCallListeners

      protected final java.util.List<MethodCallListener> methodCallListeners
      Подписчики на обработку вызоыва метода целевого объекта.

      Если подписчик реализовывает интерфейс MethodArgsRewrite, то он будет вызван перед вызовом целевого метода

    • finalizeSource

      protected boolean finalizeSource
    • methodLogLevel

      protected final java.util.Map<java.lang.String,​java.util.logging.Level> methodLogLevel
    • loggerName

      protected java.lang.String loggerName
  • Constructor Details

    • GenericProxy

      public GenericProxy​(java.lang.Object source)
  • Method Details

    • getLoggerName

      public java.lang.String getLoggerName()
    • setLoggerName

      public void setLoggerName​(java.lang.String lgrName)
    • finalize

      protected void finalize() throws java.lang.Throwable
      Overrides:
      finalize in class java.lang.Object
      Throws:
      java.lang.Throwable
    • logInvoke

      protected void logInvoke​(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args)
    • fireBeginCall

      protected HookArguments fireBeginCall​(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args)
      Вызывается перед началом вызова целевого метода
      Parameters:
      proxy - прокси объект
      method - целевой метод
      args - аргументы вызова
      Returns:
      Переопределенные аргументы
    • fireEndCall

      protected java.lang.Object fireEndCall​(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args, java.lang.Object result, java.lang.Throwable err)
    • invoke

      public java.lang.Object invoke​(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args) throws java.lang.Throwable
      Вызов целевого метода.

      Сначала вызывается fireBeginCall который модет вернуть новые аргументы вызова

      Если подписчик поддерживает MethodCallRewrite то будет вызван последний подписчик который поддерживает MethodCallRewrite

      Последним будет вызван fireEndCall с результатом вызова

      Specified by:
      invoke in interface java.lang.reflect.InvocationHandler
      Parameters:
      proxy - прокси
      method - метод целевого объекта
      args - аргумент
      Returns:
      результат вызова
      Throws:
      java.lang.Throwable - Ошибка вызова метода
    • builder

      public static <T> GenericProxy.Builder<T> builder​(T conn, java.lang.Class... itfs)
      Конструирование Proxy объекта
      Type Parameters:
      T - Интерфейс для которого создается Proxy
      Parameters:
      conn - Исходный объект
      itfs - Интерфейсы которые реализуются
      Returns:
      Конструктор proxy