public class AutoCloseableDelegateInvocationHandler
extends java.lang.Object
implements java.lang.reflect.InvocationHandler
AutoCloseable delegate into a proxy instance that closes both when wrapper
close method called.| Modifier and Type | Field and Description |
|---|---|
private java.lang.Object[] |
closers |
private java.lang.AutoCloseable |
delegate |
private java.lang.Object |
proxyTarget |
| Constructor and Description |
|---|
AutoCloseableDelegateInvocationHandler(java.lang.Object proxyTarget,
java.lang.AutoCloseable delegate) |
| Modifier and Type | Method and Description |
|---|---|
java.lang.AutoCloseable |
getAutoCloseableDelegate() |
java.lang.Object |
getProxyTarget() |
java.lang.Object |
invoke(java.lang.Object proxy,
java.lang.reflect.Method method,
java.lang.Object[] args) |
static boolean |
isCloseMethod(java.lang.reflect.Method m) |
static boolean |
isCloseMethodInvocation(java.lang.reflect.Method m,
java.lang.Object[] args) |
static <T extends java.lang.AutoCloseable> |
wrapDelegateCloseable(java.lang.Object proxyTarget,
java.lang.Class<T> type,
java.lang.AutoCloseable delegate)
Wraps a target instance and an
AutoCloseable delegate into a proxy instance that closes both when wrapper
close method called. |
private final java.lang.Object proxyTarget
private final java.lang.AutoCloseable delegate
private final java.lang.Object[] closers
public AutoCloseableDelegateInvocationHandler(java.lang.Object proxyTarget,
java.lang.AutoCloseable delegate)
public java.lang.Object getProxyTarget()
public java.lang.AutoCloseable getAutoCloseableDelegate()
public java.lang.Object invoke(java.lang.Object proxy,
java.lang.reflect.Method method,
java.lang.Object[] args)
throws java.lang.Throwable
invoke in interface java.lang.reflect.InvocationHandlerjava.lang.Throwablepublic static <T extends java.lang.AutoCloseable> T wrapDelegateCloseable(java.lang.Object proxyTarget,
java.lang.Class<T> type,
java.lang.AutoCloseable delegate)
AutoCloseable delegate into a proxy instance that closes both when wrapper
close method called.T - The generic AutoCloseable wrapping interfaceproxyTarget - The (never null) target instance - if not AutoCloseable then it's
close() method will not be invoked (i.e., only the delegate)type - The target wrapping interfacedelegate - The (never null) delegate to close. Note: the delegate is closed after
the target instance.public static boolean isCloseMethodInvocation(java.lang.reflect.Method m,
java.lang.Object[] args)
public static boolean isCloseMethod(java.lang.reflect.Method m)