/******************************************************************************* * Copyright (c) 2004, 2007 Spring IDE Developers * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Spring IDE Developers - initial API and implementation *******************************************************************************/ package org.springframework.ide.eclipse.beans.core; import org.springframework.core.NestedRuntimeException; import org.springframework.ide.eclipse.core.io.xml.LineNumberPreservingDOMParser; import org.w3c.dom.Node; import org.xml.sax.SAXParseException; /** * This exception is thrown if a error while reading Spring bean definition XML * files occurs. Optionally it holds the corresponding line number. * @author Torsten Juergeleit * @author Christian Dupuis */ public class BeanDefinitionException extends NestedRuntimeException { /** * All serializable objects should have a stable serialVersionUID */ private static final long serialVersionUID = 1L; private transient final int lineNumber; public BeanDefinitionException(Node node, String message, Throwable cause) { super(message, cause); this.lineNumber = LineNumberPreservingDOMParser.getStartLineNumber(node); } public BeanDefinitionException(Node node, String message) { super(message); this.lineNumber = LineNumberPreservingDOMParser.getStartLineNumber(node); } public BeanDefinitionException(Node node, Throwable cause) { super(cause.getMessage(), cause); this.lineNumber = LineNumberPreservingDOMParser.getStartLineNumber(node); } public BeanDefinitionException(int lineNumber, String message, Throwable cause) { super(message, cause); this.lineNumber = lineNumber; } public BeanDefinitionException(int lineNumber, String message) { super(message); this.lineNumber = lineNumber; } public BeanDefinitionException(int lineNumber, Throwable cause) { super(cause.getMessage(), cause); this.lineNumber = lineNumber; } public BeanDefinitionException(String message) { super(message); this.lineNumber = -1; } public BeanDefinitionException(Throwable cause) { super(cause.getMessage(), cause); int line = -1; if (cause instanceof SAXParseException) { line = ((SAXParseException) cause).getLineNumber(); } this.lineNumber = line; } public int getLineNumber() { return lineNumber; } @Override public String getMessage() { return (getCause() != null ? getCause().getMessage() : super.getMessage()); } }