
package javax.faces.component.visit;

import java.util.Collection;
import java.util.Set;

import javax.faces.FacesWrapper;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;

/**
 * @since 2.0
 */
public abstract class VisitContextWrapper extends VisitContext implements FacesWrapper<VisitContext>
{

    /**
     * 
     */
    public VisitContextWrapper()
    {
        
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public FacesContext getFacesContext()
    {
        return getWrapped().getFacesContext();
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public Set<VisitHint> getHints()
    {
        return getWrapped().getHints();
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public Collection<String> getIdsToVisit()
    {
        return getWrapped().getIdsToVisit();
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public Collection<String> getSubtreeIdsToVisit(UIComponent component)
    {
        return getWrapped().getSubtreeIdsToVisit(component);
    }
    
    public abstract VisitContext getWrapped();

    /**
     * {@inheritDoc}
     */
    @Override
    public VisitResult invokeVisitCallback(UIComponent component, VisitCallback callback)
    {
        return getWrapped().invokeVisitCallback(component, callback);
    }

}
