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