Package de.xima.fc.common.auto_closeable
Class AutoCloseableWrapper<T,E extends Exception>
- java.lang.Object
-
- de.xima.fc.common.auto_closeable.AutoCloseableWrapper<T,E>
-
- Type Parameters:
T- The type of the object to wrap.E- The type of the exception that the close action may throw.
- All Implemented Interfaces:
Serializable,AutoCloseable
public final class AutoCloseableWrapper<T,E extends Exception> extends Object implements AutoCloseable, Serializable
Wrapper for an object that does not itself implementAutoCloseable, but needs to be closed in a different kind of fashion. This class wraps such objects and implementsAutoCloseableto allow them to be used in try-with-resources statements.This class is serializable if the wrapped object and its close action is serializable.
- Since:
- 8.3.0
- Author:
- XIMA MEDIA GmbH
- See Also:
- Serialized Form
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()static <T> AutoCloseableWrapper<T,Exception>ofObject(T wrapped)Creates a wrapper for the given object that will close the object when closed, if the object implementsAutoCloseable; and do nothing otherwise.static <T> AutoCloseableWrapper<T,RuntimeException>ofObjectQuiet(T wrapped)Creates a wrapper for the given object that will close the object when closed, if the object implementsAutoCloseable; and do nothing otherwise.static <T,E extends Exception>
AutoCloseableWrapper<T,E>withCloseAction(T wrapped, ITypedThrowingConsumer<? super T,? extends E> close)Creates a wrapper for the given object that will call the given close action when closed.Twrapped()Gets the wrapped object.
-
-
-
Method Detail
-
close
public void close() throws E extends Exception- Specified by:
closein interfaceAutoCloseable- Throws:
E extends Exception
-
wrapped
public T wrapped()
Gets the wrapped object.- Returns:
- The wrapped object.
- Throws:
IllegalStateException- If the wrapper has already been closed.
-
ofObject
public static <T> AutoCloseableWrapper<T,Exception> ofObject(T wrapped)
Creates a wrapper for the given object that will close the object when closed, if the object implementsAutoCloseable; and do nothing otherwise.- Type Parameters:
T- The type of the object to wrap.- Parameters:
wrapped- The object to wrap.- Returns:
- A new
AutoCloseableWrapperthat wraps the given object and closes it if necessary.
-
ofObjectQuiet
public static <T> AutoCloseableWrapper<T,RuntimeException> ofObjectQuiet(T wrapped)
Creates a wrapper for the given object that will close the object when closed, if the object implementsAutoCloseable; and do nothing otherwise. If the close action throws an exception, it will be caught and ignored.- Type Parameters:
T- The type of the object to wrap.- Parameters:
wrapped- The object to wrap.- Returns:
- A new
AutoCloseableWrapperthat wraps the given object and closes it if necessary.
-
withCloseAction
public static <T,E extends Exception> AutoCloseableWrapper<T,E> withCloseAction(T wrapped, ITypedThrowingConsumer<? super T,? extends E> close)
Creates a wrapper for the given object that will call the given close action when closed.- Type Parameters:
T- The type of the object to wrap.E- The type of the exception that the close action may throw.- Parameters:
wrapped- The object to wrap.close- The action to perform when the object is closed.- Returns:
- A new
AutoCloseableWrapperthat wraps the given object and invokes the given action when closed.
-
-