Package org.geotools.util.decorate
Class AbstractDecorator<D>
- Object
-
- AbstractDecorator<D>
-
- All Implemented Interfaces:
Serializable,Wrapper,Wrapper
- Direct Known Subclasses:
DecoratingDataStore
public class AbstractDecorator<D> extends Object implements Wrapper, Serializable
Generic delegating base class. Provides the following features:- null check for the delegate object
- direct forwarding of
equals(Object),hashCode()andtoString()to the delegate - implements the Wrapper interface for programmatic extraction
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description AbstractDecorator(D delegate)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanequals(Object obj)inthashCode()booleanisWrapperFor(Class<?> iface)Returns true if this either implements the interface argument or is directly or indirectly a wrapper for an object that does.StringtoString()<T> Tunwrap(Class<T> iface)Returns an object that implements the given interface to allow access to non-standard methods, or standard methods not exposed by the proxy.
-
-
-
Field Detail
-
delegate
protected D delegate
-
-
Constructor Detail
-
AbstractDecorator
public AbstractDecorator(D delegate)
-
-
Method Detail
-
isWrapperFor
public boolean isWrapperFor(Class<?> iface)
Description copied from interface:WrapperReturns true if this either implements the interface argument or is directly or indirectly a wrapper for an object that does. Returns false otherwise. If this implements the interface then return true, else if this is a wrapper then return the result of recursively callingisWrapperForon the wrapped object. If this does not implement the interface and is not a wrapper, return false. This method should be implemented as a low-cost operation compared tounwrapso that callers can use this method to avoid expensiveunwrapcalls that may fail. If this method returns true then callingunwrapwith the same argument should succeed.- Specified by:
isWrapperForin interfaceWrapper- Specified by:
isWrapperForin interfaceWrapper- Parameters:
iface- a Class defining an interface.- Returns:
- true if this implements the interface or directly or indirectly wraps an object that does.
-
unwrap
public <T> T unwrap(Class<T> iface) throws IllegalArgumentException
Description copied from interface:WrapperReturns an object that implements the given interface to allow access to non-standard methods, or standard methods not exposed by the proxy.If the receiver implements the interface then the result is the receiver or a proxy for the receiver. If the receiver is a wrapper and the wrapped object implements the interface then the result is the wrapped object or a proxy for the wrapped object. Otherwise return the the result of calling
unwraprecursively on the wrapped object or a proxy for that result. If the receiver is not a wrapper and does not implement the interface, then anIllegalArgumentExceptionis thrown.- Specified by:
unwrapin interfaceWrapper- Specified by:
unwrapin interfaceWrapper- Parameters:
iface- A Class defining an interface that the result must implement.- Returns:
- an object that implements the interface. May be a proxy for the actual implementing object.
- Throws:
IllegalArgumentException- If no object found that implements the interface
-
-