001package org.hl7.fhir.exceptions; 002 003import org.hl7.fhir.utilities.SourceLocation; 004import org.hl7.fhir.utilities.Utilities; 005 006/* 007 Copyright (c) 2011+, HL7, Inc. 008 All rights reserved. 009 010 Redistribution and use in source and binary forms, with or without modification, 011 are permitted provided that the following conditions are met: 012 013 * Redistributions of source code must retain the above copyright notice, this 014 list of conditions and the following disclaimer. 015 * Redistributions in binary form must reproduce the above copyright notice, 016 this list of conditions and the following disclaimer in the documentation 017 and/or other materials provided with the distribution. 018 * Neither the name of HL7 nor the names of its contributors may be used to 019 endorse or promote products derived from this software without specific 020 prior written permission. 021 022 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 023 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 024 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 025 IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 026 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 027 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 028 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 029 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 030 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 031 POSSIBILITY OF SUCH DAMAGE. 032 033 */ 034 035 036 037public class PathEngineException extends FHIRException { 038 039 private static final long serialVersionUID = 31969342112856390L; 040 private SourceLocation location; 041 private String expression; 042 043 public PathEngineException() { 044 super(); 045 } 046 047 public PathEngineException(String message, Throwable cause) { 048 super(message, cause); 049 } 050 051 public PathEngineException(String message) { 052 super(message); 053 } 054 055 public PathEngineException(String message, SourceLocation location, String expression, Throwable cause) { 056 super(message+rep(location, expression), cause); 057 } 058 059 public PathEngineException(String message, SourceLocation location, String expression) { 060 super(message+rep(location, expression)); 061 } 062 063 private static String rep(SourceLocation loc, String expr) { 064 if (loc != null) { 065 if (loc.getLine() == 1) { 066 return " (@char "+loc.getColumn()+")"; 067 } else { 068 return " (@line "+loc.getLine()+" char "+loc.getColumn()+")"; 069 } 070 } else if (Utilities.noString(expr)) { // can happen in some contexts... 071 return " (@~"+expr+")"; 072 } else { 073 return ""; 074 } 075 } 076 077 public PathEngineException(Throwable cause) { 078 super(cause); 079 } 080 081 public String getExpression() { 082 return expression; 083 } 084 085 public void setExpression(String expression) { 086 this.expression = expression; 087 } 088 089 public SourceLocation getLocation() { 090 return location; 091 } 092 093 public void setLocation(SourceLocation location) { 094 this.location = location; 095 } 096 097}