1 /* Copyright 2005 Elliotte Rusty Harold 2 3 This library is free software; you can redistribute it and/or modify 4 it under the terms of version 2.1 of the GNU Lesser General Public 5 License as published by the Free Software Foundation. 6 7 This library is distributed in the hope that it will be useful, 8 but WITHOUT ANY WARRANTY; without even the implied warranty of 9 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 GNU Lesser General Public License for more details. 11 12 You should have received a copy of the GNU Lesser General Public 13 License along with this library; if not, write to the 14 Free Software Foundation, Inc., 59 Temple Place, Suite 330, 15 Boston, MA 02111-1307 USA 16 17 You can contact Elliotte Rusty Harold by sending e-mail to 18 elharo@ibiblio.org. Please include the word "XOM" in the 19 subject line. The XOM home page is located at http://www.xom.nu/ 20 */ 21 package nu.xom; 22 23 /** 24 * <p> 25 * Indicates that an XPath query returned a non-node-set. 26 * </p> 27 * 28 * @author Elliotte Rusty Harold 29 * @version 1.2.4 30 * 31 */ 32 public class XPathTypeException extends XPathException { 33 34 private static final long serialVersionUID = 1247817719683497718L; 35 36 private final Object returnValue; 37 38 XPathTypeException(Object returnValue)39 XPathTypeException(Object returnValue) { 40 // Irrelevant empty message because we override getMessage() below 41 super(""); 42 this.returnValue = returnValue; 43 } 44 45 46 /** 47 * <p> 48 * This method usually returns the actual object returned by the 49 * query. However, XOM makes no guarantees about the type of this 50 * object. 51 * </p> 52 * 53 * @return the query result 54 */ getReturnValue()55 public Object getReturnValue() { 56 return this.returnValue; 57 } 58 getMessage()59 public String getMessage() { 60 String xpath = getXPath(); 61 String type = returnValue.getClass().getName(); 62 if (xpath == null) { 63 return "XPath expression returned a " + type + " instead of a node-set."; 64 } else { 65 return "XPath expression " + xpath + " returned a " + type + " instead of a node-set."; 66 } 67 } 68 69 70 } 71