Java Code Examples for org.apache.jasper.Constants#NEWLINE

The following examples show how to use org.apache.jasper.Constants#NEWLINE . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: JspServletWrapper.java    From Tomcat7.0.67 with Apache License 2.0 4 votes vote down vote up
/**
 * <p>Attempts to construct a JasperException that contains helpful information
 * about what went wrong. Uses the JSP compiler system to translate the line
 * number in the generated servlet that originated the exception to a line
 * number in the JSP.  Then constructs an exception containing that
 * information, and a snippet of the JSP to help debugging.
 * Please see http://bz.apache.org/bugzilla/show_bug.cgi?id=37062 and
 * http://www.tfenne.com/jasper/ for more details.
 *</p>
 *
 * @param ex the exception that was the cause of the problem.
 * @return a JasperException with more detailed information
 */
protected JasperException handleJspException(Exception ex) {
    try {
        Throwable realException = ex;
        if (ex instanceof ServletException) {
            realException = ((ServletException) ex).getRootCause();
        }

        // First identify the stack frame in the trace that represents the JSP
        StackTraceElement[] frames = realException.getStackTrace();
        StackTraceElement jspFrame = null;

        for (int i=0; i<frames.length; ++i) {
            if ( frames[i].getClassName().equals(this.getServlet().getClass().getName()) ) {
                jspFrame = frames[i];
                break;
            }
        }

        
        if (jspFrame == null ||
                this.ctxt.getCompiler().getPageNodes() == null) {
            // If we couldn't find a frame in the stack trace corresponding
            // to the generated servlet class or we don't have a copy of the
            // parsed JSP to hand, we can't really add anything
            return new JasperException(ex);
        }

        int javaLineNumber = jspFrame.getLineNumber();
        JavacErrorDetail detail = ErrorDispatcher.createJavacError(
                jspFrame.getMethodName(),
                this.ctxt.getCompiler().getPageNodes(),
                null,
                javaLineNumber,
                ctxt);

        // If the line number is less than one we couldn't find out
        // where in the JSP things went wrong
        int jspLineNumber = detail.getJspBeginLineNumber();
        if (jspLineNumber < 1) {
            throw new JasperException(ex);
        }

        if (options.getDisplaySourceFragment()) {
            return new JasperException(Localizer.getMessage
                    ("jsp.exception", detail.getJspFileName(),
                            "" + jspLineNumber) + Constants.NEWLINE +
                            Constants.NEWLINE + detail.getJspExtract() +
                            Constants.NEWLINE + Constants.NEWLINE + 
                            "Stacktrace:", ex);
            
        }

        return new JasperException(Localizer.getMessage
                ("jsp.exception", detail.getJspFileName(),
                        "" + jspLineNumber), ex);
    } catch (Exception je) {
        // If anything goes wrong, just revert to the original behaviour
        if (ex instanceof JasperException) {
            return (JasperException) ex;
        }
        return new JasperException(ex);
    }
}
 
Example 2
Source File: JspServletWrapper.java    From tomcatsrc with Apache License 2.0 4 votes vote down vote up
/**
 * <p>Attempts to construct a JasperException that contains helpful information
 * about what went wrong. Uses the JSP compiler system to translate the line
 * number in the generated servlet that originated the exception to a line
 * number in the JSP.  Then constructs an exception containing that
 * information, and a snippet of the JSP to help debugging.
 * Please see http://bz.apache.org/bugzilla/show_bug.cgi?id=37062 and
 * http://www.tfenne.com/jasper/ for more details.
 *</p>
 *
 * @param ex the exception that was the cause of the problem.
 * @return a JasperException with more detailed information
 */
protected JasperException handleJspException(Exception ex) {
    try {
        Throwable realException = ex;
        if (ex instanceof ServletException) {
            realException = ((ServletException) ex).getRootCause();
        }

        // First identify the stack frame in the trace that represents the JSP
        StackTraceElement[] frames = realException.getStackTrace();
        StackTraceElement jspFrame = null;

        for (int i=0; i<frames.length; ++i) {
            if ( frames[i].getClassName().equals(this.getServlet().getClass().getName()) ) {
                jspFrame = frames[i];
                break;
            }
        }

        
        if (jspFrame == null ||
                this.ctxt.getCompiler().getPageNodes() == null) {
            // If we couldn't find a frame in the stack trace corresponding
            // to the generated servlet class or we don't have a copy of the
            // parsed JSP to hand, we can't really add anything
            return new JasperException(ex);
        }

        int javaLineNumber = jspFrame.getLineNumber();
        JavacErrorDetail detail = ErrorDispatcher.createJavacError(
                jspFrame.getMethodName(),
                this.ctxt.getCompiler().getPageNodes(),
                null,
                javaLineNumber,
                ctxt);

        // If the line number is less than one we couldn't find out
        // where in the JSP things went wrong
        int jspLineNumber = detail.getJspBeginLineNumber();
        if (jspLineNumber < 1) {
            throw new JasperException(ex);
        }

        if (options.getDisplaySourceFragment()) {
            return new JasperException(Localizer.getMessage
                    ("jsp.exception", detail.getJspFileName(),
                            "" + jspLineNumber) + Constants.NEWLINE +
                            Constants.NEWLINE + detail.getJspExtract() +
                            Constants.NEWLINE + Constants.NEWLINE + 
                            "Stacktrace:", ex);
            
        }

        return new JasperException(Localizer.getMessage
                ("jsp.exception", detail.getJspFileName(),
                        "" + jspLineNumber), ex);
    } catch (Exception je) {
        // If anything goes wrong, just revert to the original behaviour
        if (ex instanceof JasperException) {
            return (JasperException) ex;
        }
        return new JasperException(ex);
    }
}