Package org.skyscreamer.yoga.view

Source Code of org.skyscreamer.yoga.view.AbstractYogaView

package org.skyscreamer.yoga.view;

import java.io.OutputStream;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.skyscreamer.yoga.listener.RenderingListenerRegistry;
import org.skyscreamer.yoga.mapper.ResultTraverser;
import org.skyscreamer.yoga.mapper.YogaRequestContext;
import org.skyscreamer.yoga.selector.CoreSelector;
import org.skyscreamer.yoga.selector.SelectorResolver;
import org.skyscreamer.yoga.selector.parser.SelectorParser;
import org.skyscreamer.yoga.util.ClassFinderStrategy;
import org.skyscreamer.yoga.util.NameUtil;

/**
* This class represents the entry point to yoga. It integrates with view
* technologies such as Spring Views and JAX-RS MessageBodyWriters. This objects
* sets up the yoga related context information (listeners, the selector, the
* suffix) and passes it along to the children to render.
*
* @see org.skyscreamer.yoga.view.JsonSelectorView
* @see org.skyscreamer.yoga.view.XmlSelectorView
* @see org.skyscreamer.yoga.view.XhtmlSelectorView
*
* @author Solomon Duskis
*/
public abstract class AbstractYogaView
{
    protected ResultTraverser _resultTraverser = new ResultTraverser();

    protected SelectorResolver _selectorResolver = new SelectorResolver();

    protected RenderingListenerRegistry _registry = new RenderingListenerRegistry();

    public void setResultTraverser( ResultTraverser resultTraverser )
    {
        this._resultTraverser = resultTraverser;
    }

    @Deprecated
    /** use setSelectorResolver instead */
    public void setSelectorParser( SelectorParser selectorParser )
    {
        this._selectorResolver.setSelectorParser( selectorParser );
    }

    @Deprecated
    /** use setSelectorResolver instead */
    public void setSelector( CoreSelector selector )
    {
        this._selectorResolver.setBaseSelector( selector );
    }


    public void setRegistry( RenderingListenerRegistry registry )
    {
        this._registry = registry;
    }

    public void setSelectorResolver( SelectorResolver selectorResolver )
    {
        this._selectorResolver = selectorResolver;
    }

    public SelectorResolver getSelectorResolver()
    {
        return _selectorResolver;
    }

    public ResultTraverser getResultTraverser()
    {
        return _resultTraverser;
    }

    public ClassFinderStrategy getClassFinderStrategy()
    {
        return _resultTraverser.getClassFinderStrategy();
    }
   
    public void setClassFinderStrategy( ClassFinderStrategy classFinderStrategy )
    {
        _resultTraverser.setClassFinderStrategy( classFinderStrategy );
    }

    public RenderingListenerRegistry getRegistry()
    {
        return _registry;
    }

    public final void render( HttpServletRequest request, HttpServletResponse response, Object value, OutputStream os )
            throws Exception
    {
        YogaRequestContext context = new YogaRequestContext( getHrefSuffix(), getSelectorResolver(), request, response,
                _registry.getListeners() );
        render( value, context, os );
    }

    protected String getClassName( Object obj )
    {
        Class<?> type = getClassFinderStrategy().findClass( obj );
        return NameUtil.getName( type );
    }

    public abstract String getContentType();

    protected abstract void render( Object value, YogaRequestContext context, OutputStream os ) throws Exception;

    public abstract String getHrefSuffix();
}
TOP

Related Classes of org.skyscreamer.yoga.view.AbstractYogaView

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.