Package xyz.cofe.sql.cpool.proxy
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 classGenericProxy.Builder<T>Конструирование Proxy -
Field Summary
Fields Modifier and Type Field Description protected booleanfinalizeSourceprotected java.lang.StringloggerNameprotected java.util.List<MethodCallListener>methodCallListenersПодписчики на обработку вызоыва метода целевого объекта.protected java.util.Map<java.lang.String,java.util.logging.Level>methodLogLevelprotected java.lang.Objectsource -
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 voidfinalize()protected HookArgumentsfireBeginCall(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args)Вызывается перед началом вызова целевого методаprotected java.lang.ObjectfireEndCall(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args, java.lang.Object result, java.lang.Throwable err)java.lang.StringgetLoggerName()java.lang.Objectinvoke(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args)Вызов целевого метода.protected voidlogInvoke(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args)voidsetLoggerName(java.lang.String lgrName)
-
Field Details
-
source
protected java.lang.Object source -
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:
finalizein classjava.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:
invokein interfacejava.lang.reflect.InvocationHandler- Parameters:
proxy- проксиmethod- метод целевого объектаargs- аргумент- Returns:
- результат вызова
- Throws:
java.lang.Throwable- Ошибка вызова метода
-
builder
Конструирование Proxy объекта- Type Parameters:
T- Интерфейс для которого создается Proxy- Parameters:
conn- Исходный объектitfs- Интерфейсы которые реализуются- Returns:
- Конструктор proxy
-