Package org.jboss.seam.wiki.core.ui

Source Code of org.jboss.seam.wiki.core.ui.WikiFaceletViewHandler

package org.jboss.seam.wiki.core.ui;

import com.sun.facelets.FaceletViewHandler;
import com.sun.facelets.util.DevTools;

import javax.el.ELException;
import javax.faces.FacesException;
import javax.faces.application.ViewHandler;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.Writer;

/**
* @author Christian Bauer
*/
public class WikiFaceletViewHandler extends FaceletViewHandler {

    protected boolean developmentMode; // Private in superclass, hurray!

    public WikiFaceletViewHandler(ViewHandler viewHandler) {
        super(viewHandler);
    }

    @Override
    protected void initialize(FacesContext context) {
        super.initialize(context);

        ExternalContext external = context.getExternalContext();
        String param = external.getInitParameter(PARAM_DEVELOPMENT);
        this.developmentMode = "true".equals(param);
    }

    @Override
    protected void handleRenderException(FacesContext context, Exception e)
            throws IOException, ELException, FacesException {

        Object resp = context.getExternalContext().getResponse();

/* This is what we don't like: log and rethrow! Makes Facelets nasty in production use...
        // always log
        if (log.isLoggable(Level.SEVERE)) {
            UIViewRoot root = context.getViewRoot();
            StringBuffer sb = new StringBuffer(64);
            sb.append("Error Rendering View");
            if (root != null) {
                sb.append('[');
                sb.append(root.getViewId());
                sb.append(']');
            }
            log.log(Level.SEVERE, sb.toString(), e);
        }
*/
        // handle dev response
        if (this.developmentMode && !context.getResponseComplete()
                && resp instanceof HttpServletResponse) {
            HttpServletResponse httpResp = (HttpServletResponse) resp;
            httpResp.reset();
            httpResp.setContentType("text/html; charset=UTF-8");
            Writer w = httpResp.getWriter();
            DevTools.debugHtml(w, context, e);
            w.flush();
            context.responseComplete();
        } else if (e instanceof RuntimeException) {
            throw (RuntimeException) e;
        } else if (e instanceof IOException) {
            throw (IOException) e;
        } else {
            throw new FacesException(e.getMessage(), e);
        }
    }
}
TOP

Related Classes of org.jboss.seam.wiki.core.ui.WikiFaceletViewHandler

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.