package sk.stuba.fiit.perconik.core.services.resources; import java.util.Set; import sk.stuba.fiit.perconik.core.Listener; import sk.stuba.fiit.perconik.core.Resource; import sk.stuba.fiit.perconik.core.services.ForwardingProvider; /** * A resource provider which forwards all its method calls to another resource * provider. Subclasses should override one or more methods to modify the * behavior of the backing resource provider as desired per the decorator * pattern. * * <p>Note that this class does <i>not</i> forward the {@code equals} * and {@code hashCode} methods through to the backing object. See * {@link com.google.common.collect.ForwardingObject ForwardingObject} * for more details. * * @author Pavol Zbell * @since 1.0 */ public abstract class ForwardingResourceProvider extends ForwardingProvider implements ResourceProvider { /** * Constructor for use by subclasses. */ protected ForwardingResourceProvider() {} @Override protected abstract ResourceProvider delegate(); public Resource<?> forName(final String name) { return this.delegate().forName(name); } public <L extends Listener> Set<Resource<L>> forType(final Class<L> type) { return this.delegate().forType(type); } public Set<String> names() { return this.delegate().names(); } public Set<Class<? extends Listener>> types() { return this.delegate().types(); } @Override public ResourceProvider parent() { return this.delegate().parent(); } }