/* * ============================================================================= * * Copyright (c) 2011-2016, The THYMELEAF team (http://www.thymeleaf.org) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * ============================================================================= */ package org.thymeleaf.exceptions; import org.thymeleaf.util.LoggingUtils; /** * <p> * General exception for errors raised during the process of a template. * </p> * * @author Daniel Fernández * @author Guven Demir * * @since 1.0 * */ public class TemplateProcessingException extends TemplateEngineException { private static final long serialVersionUID = 5985749439214775193L; private String templateName; private Integer line; private Integer col; public TemplateProcessingException(final String message) { this(message, null); } public TemplateProcessingException(final String message, final Throwable cause) { this(message, null, cause); } public TemplateProcessingException( final String message, final String templateName, final Throwable cause) { super(message, cause); this.templateName = templateName; this.line = null; this.col = null; } /** * * @since 3.0.0 * * @param message The message of the exception * @param templateName The name of the template for which the exception is thrown * @param line line position of the event that caused the exception * @param col columns position of the event that caused the exception */ public TemplateProcessingException( final String message, final String templateName, final int line, final int col) { super(message); this.templateName = templateName; this.line = (line < 0? null : Integer.valueOf(line)); this.col = (col < 0? null : Integer.valueOf(col)); } /** * * @since 3.0.0 * * @param message The message of the exception * @param templateName The name of the template for which the exception is thrown * @param line line position of the event that caused the exception * @param col columns position of the event that caused the exception * @param cause cause to be nested inside the exception */ public TemplateProcessingException( final String message, final String templateName, final int line, final int col, final Throwable cause) { super(message, cause); this.templateName = templateName; this.line = (line < 0? null : Integer.valueOf(line)); this.col = (col < 0? null : Integer.valueOf(col)); } public String getTemplateName() { return this.templateName; } public boolean hasTemplateName() { return this.templateName != null; } public Integer getLine() { return this.line; } public Integer getCol() { return this.col; } public boolean hasLineAndCol() { return this.line != null && this.col != null; } public void setTemplateName(final String templateName) { this.templateName = templateName; } public void setLineAndCol(final int line, final int col) { this.line = (line < 0? null : Integer.valueOf(line)); this.col = (col < 0? null : Integer.valueOf(col)); } @Override public String getMessage() { final StringBuilder sb = new StringBuilder(); sb.append(super.getMessage()); if (this.templateName != null) { sb.append(' '); sb.append('('); sb.append("template: \""); sb.append(LoggingUtils.loggifyTemplateName(this.templateName)); sb.append('"'); if (this.line != null || this.col != null) { sb.append(" - "); if (this.line != null) { sb.append("line "); sb.append(this.line); } if (this.col != null) { sb.append(", col "); sb.append(this.col); } } sb.append(')'); } return sb.toString(); } }