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.InvocationHandler
java.lang.Throwable
public 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)