Mercurial > repos > pfrommolt > ngsrich
comparison NGSrich_0.5.5/src/org/jdom/xpath/JaxenXPath.java @ 0:89ad0a9cca52 default tip
Uploaded
author | pfrommolt |
---|---|
date | Mon, 21 Nov 2011 08:12:19 -0500 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:89ad0a9cca52 |
---|---|
1 ///*-- | |
2 // | |
3 // $Id: JaxenXPath.java,v 1.20 2007/11/10 05:29:02 jhunter Exp $ | |
4 // | |
5 // Copyright (C) 2000-2007 Jason Hunter & Brett McLaughlin. | |
6 // All rights reserved. | |
7 // | |
8 // Redistribution and use in source and binary forms, with or without | |
9 // modification, are permitted provided that the following conditions | |
10 // are met: | |
11 // | |
12 // 1. Redistributions of source code must retain the above copyright | |
13 // notice, this list of conditions, and the following disclaimer. | |
14 // | |
15 // 2. Redistributions in binary form must reproduce the above copyright | |
16 // notice, this list of conditions, and the disclaimer that follows | |
17 // these conditions in the documentation and/or other materials | |
18 // provided with the distribution. | |
19 // | |
20 // 3. The name "JDOM" must not be used to endorse or promote products | |
21 // derived from this software without prior written permission. For | |
22 // written permission, please contact <request_AT_jdom_DOT_org>. | |
23 // | |
24 // 4. Products derived from this software may not be called "JDOM", nor | |
25 // may "JDOM" appear in their name, without prior written permission | |
26 // from the JDOM Project Management <request_AT_jdom_DOT_org>. | |
27 // | |
28 // In addition, we request (but do not require) that you include in the | |
29 // end-user documentation provided with the redistribution and/or in the | |
30 // software itself an acknowledgement equivalent to the following: | |
31 // "This product includes software developed by the | |
32 // JDOM Project (http://www.jdom.org/)." | |
33 // Alternatively, the acknowledgment may be graphical using the logos | |
34 // available at http://www.jdom.org/images/logos. | |
35 // | |
36 // THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |
37 // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |
38 // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |
39 // DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT | |
40 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |
41 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |
42 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |
43 // USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |
44 // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |
45 // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |
46 // OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |
47 // SUCH DAMAGE. | |
48 // | |
49 // This software consists of voluntary contributions made by many | |
50 // individuals on behalf of the JDOM Project and was originally | |
51 // created by Jason Hunter <jhunter_AT_jdom_DOT_org> and | |
52 // Brett McLaughlin <brett_AT_jdom_DOT_org>. For more information | |
53 // on the JDOM Project, please see <http://www.jdom.org/>. | |
54 // | |
55 // */ | |
56 // | |
57 //package org.jdom.xpath; | |
58 // | |
59 // | |
60 //import java.util.*; | |
61 // | |
62 //import org.jaxen.*; | |
63 //import org.jaxen.jdom.*; | |
64 //import org.jdom.*; | |
65 // | |
66 // | |
67 ///** | |
68 // * A non-public concrete XPath implementation for Jaxen. | |
69 // * | |
70 // * @version $Revision: 1.20 $, $Date: 2007/11/10 05:29:02 $ | |
71 // * @author Laurent Bihanic | |
72 // */ | |
73 //class JaxenXPath extends XPath { // package protected | |
74 // | |
75 // private static final String CVS_ID = | |
76 // "@(#) $RCSfile: JaxenXPath.java,v $ $Revision: 1.20 $ $Date: 2007/11/10 05:29:02 $ $Name: jdom_1_1_1 $"; | |
77 // | |
78 // /** | |
79 // * The compiled XPath object to select nodes. This attribute can | |
80 // * not be made final as it needs to be set upon object | |
81 // * deserialization. | |
82 // */ | |
83 // private transient JDOMXPath xPath; | |
84 // | |
85 // /** | |
86 // * The current context for XPath expression evaluation. | |
87 // */ | |
88 // private Object currentContext; | |
89 // | |
90 // /** | |
91 // * Creates a new XPath wrapper object, compiling the specified | |
92 // * XPath expression. | |
93 // * | |
94 // * @param expr the XPath expression to wrap. | |
95 // * | |
96 // * @throws JDOMException if the XPath expression is invalid. | |
97 // */ | |
98 // public JaxenXPath(String expr) throws JDOMException { | |
99 // setXPath(expr); | |
100 // } | |
101 // | |
102 // /** | |
103 // * Evaluates the wrapped XPath expression and returns the list | |
104 // * of selected items. | |
105 // * | |
106 // * @param context the node to use as context for evaluating | |
107 // * the XPath expression. | |
108 // * | |
109 // * @return the list of selected items, which may be of types: {@link Element}, | |
110 // * {@link Attribute}, {@link Text}, {@link CDATA}, | |
111 // * {@link Comment}, {@link ProcessingInstruction}, Boolean, | |
112 // * Double, or String. | |
113 // * | |
114 // * @throws JDOMException if the evaluation of the XPath | |
115 // * expression on the specified context | |
116 // * failed. | |
117 // */ | |
118 // public List selectNodes(Object context) throws JDOMException { | |
119 // try { | |
120 // currentContext = context; | |
121 // | |
122 // return xPath.selectNodes(context); | |
123 // } | |
124 // catch (JaxenException ex1) { | |
125 // throw new JDOMException("XPath error while evaluating \"" + | |
126 // xPath.toString() + "\": " + ex1.getMessage(), ex1); | |
127 // } | |
128 // finally { | |
129 // currentContext = null; | |
130 // } | |
131 // } | |
132 // | |
133 // /** | |
134 // * Evaluates the wrapped XPath expression and returns the first | |
135 // * entry in the list of selected nodes (or atomics). | |
136 // * | |
137 // * @param context the node to use as context for evaluating | |
138 // * the XPath expression. | |
139 // * | |
140 // * @return the first selected item, which may be of types: {@link Element}, | |
141 // * {@link Attribute}, {@link Text}, {@link CDATA}, | |
142 // * {@link Comment}, {@link ProcessingInstruction}, Boolean, | |
143 // * Double, String, or <code>null</code> if no item was selected. | |
144 // * | |
145 // * @throws JDOMException if the evaluation of the XPath | |
146 // * expression on the specified context | |
147 // * failed. | |
148 // */ | |
149 // public Object selectSingleNode(Object context) throws JDOMException { | |
150 // try { | |
151 // currentContext = context; | |
152 // | |
153 // return xPath.selectSingleNode(context); | |
154 // } | |
155 // catch (JaxenException ex1) { | |
156 // throw new JDOMException("XPath error while evaluating \"" + | |
157 // xPath.toString() + "\": " + ex1.getMessage(), ex1); | |
158 // } | |
159 // finally { | |
160 // currentContext = null; | |
161 // } | |
162 // } | |
163 // | |
164 // /** | |
165 // * Returns the string value of the first node selected by applying | |
166 // * the wrapped XPath expression to the given context. | |
167 // * | |
168 // * @param context the element to use as context for evaluating | |
169 // * the XPath expression. | |
170 // * | |
171 // * @return the string value of the first node selected by applying | |
172 // * the wrapped XPath expression to the given context. | |
173 // * | |
174 // * @throws JDOMException if the XPath expression is invalid or | |
175 // * its evaluation on the specified context | |
176 // * failed. | |
177 // */ | |
178 // public String valueOf(Object context) throws JDOMException { | |
179 // try { | |
180 // currentContext = context; | |
181 // | |
182 // return xPath.stringValueOf(context); | |
183 // } | |
184 // catch (JaxenException ex1) { | |
185 // throw new JDOMException("XPath error while evaluating \"" + | |
186 // xPath.toString() + "\": " + ex1.getMessage(), ex1); | |
187 // } | |
188 // finally { | |
189 // currentContext = null; | |
190 // } | |
191 // } | |
192 // | |
193 // /** | |
194 // * Returns the number value of the first item selected by applying | |
195 // * the wrapped XPath expression to the given context. | |
196 // * | |
197 // * @param context the element to use as context for evaluating | |
198 // * the XPath expression. | |
199 // * | |
200 // * @return the number value of the first item selected by applying | |
201 // * the wrapped XPath expression to the given context, | |
202 // * <code>null</code> if no node was selected or the | |
203 // * special value {@link java.lang.Double#NaN} | |
204 // * (Not-a-Number) if the selected value can not be | |
205 // * converted into a number value. | |
206 // * | |
207 // * @throws JDOMException if the XPath expression is invalid or | |
208 // * its evaluation on the specified context | |
209 // * failed. | |
210 // */ | |
211 // public Number numberValueOf(Object context) throws JDOMException { | |
212 // try { | |
213 // currentContext = context; | |
214 // | |
215 // return xPath.numberValueOf(context); | |
216 // } | |
217 // catch (JaxenException ex1) { | |
218 // throw new JDOMException("XPath error while evaluating \"" + | |
219 // xPath.toString() + "\": " + ex1.getMessage(), ex1); | |
220 // } | |
221 // finally { | |
222 // currentContext = null; | |
223 // } | |
224 // } | |
225 // | |
226 // /** | |
227 // * Defines an XPath variable and sets its value. | |
228 // * | |
229 // * @param name the variable name. | |
230 // * @param value the variable value. | |
231 // * | |
232 // * @throws IllegalArgumentException if <code>name</code> is not | |
233 // * a valid XPath variable name | |
234 // * or if the value type is not | |
235 // * supported by the underlying | |
236 // * implementation | |
237 // */ | |
238 // public void setVariable(String name, Object value) | |
239 // throws IllegalArgumentException { | |
240 // Object o = xPath.getVariableContext(); | |
241 // if (o instanceof SimpleVariableContext) { | |
242 // ((SimpleVariableContext)o).setVariableValue(null, name, value); | |
243 // } | |
244 // } | |
245 // | |
246 // /** | |
247 // * Adds a namespace definition to the list of namespaces known of | |
248 // * this XPath expression. | |
249 // * <p> | |
250 // * <strong>Note</strong>: In XPath, there is no such thing as a | |
251 // * 'default namespace'. The empty prefix <b>always</b> resolves | |
252 // * to the empty namespace URI.</p> | |
253 // * | |
254 // * @param namespace the namespace. | |
255 // */ | |
256 // public void addNamespace(Namespace namespace) { | |
257 // try { | |
258 // xPath.addNamespace(namespace.getPrefix(), namespace.getURI()); | |
259 // } | |
260 // catch (JaxenException ex1) { /* Can't happen here. */ } | |
261 // } | |
262 // | |
263 // /** | |
264 // * Returns the wrapped XPath expression as a string. | |
265 // * | |
266 // * @return the wrapped XPath expression as a string. | |
267 // */ | |
268 // public String getXPath() { | |
269 // return (xPath.toString()); | |
270 // } | |
271 // | |
272 // /** | |
273 // * Compiles and sets the XPath expression wrapped by this object. | |
274 // * | |
275 // * @param expr the XPath expression to wrap. | |
276 // * | |
277 // * @throws JDOMException if the XPath expression is invalid. | |
278 // */ | |
279 // private void setXPath(String expr) throws JDOMException { | |
280 // try { | |
281 // xPath = new JDOMXPath(expr); | |
282 // xPath.setNamespaceContext(new NSContext()); | |
283 // } | |
284 // catch (Exception ex1) { | |
285 // throw new JDOMException( | |
286 // "Invalid XPath expression: \"" + expr + "\"", ex1); | |
287 // } | |
288 // } | |
289 // | |
290 // public String toString() { | |
291 // return (xPath.toString()); | |
292 // } | |
293 // | |
294 // public boolean equals(Object o) { | |
295 // if (o instanceof JaxenXPath) { | |
296 // JaxenXPath x = (JaxenXPath)o; | |
297 // | |
298 // return (super.equals(o) && | |
299 // xPath.toString().equals(x.xPath.toString())); | |
300 // } | |
301 // return false; | |
302 // } | |
303 // | |
304 // public int hashCode() { | |
305 // return xPath.hashCode(); | |
306 // } | |
307 // | |
308 // private class NSContext extends SimpleNamespaceContext { | |
309 // public NSContext() { | |
310 // super(); | |
311 // } | |
312 // | |
313 // /** | |
314 // * <i>[Jaxen NamespaceContext interface support]</i> Translates | |
315 // * the provided namespace prefix into the matching bound | |
316 // * namespace URI. | |
317 // * | |
318 // * @param prefix the namespace prefix to resolve. | |
319 // * | |
320 // * @return the namespace URI matching the prefix. | |
321 // */ | |
322 // public String translateNamespacePrefixToUri(String prefix) { | |
323 // if ((prefix == null) || (prefix.length() == 0)) { | |
324 // return null; | |
325 // } | |
326 // | |
327 // String uri = super.translateNamespacePrefixToUri(prefix); | |
328 // if (uri == null) { | |
329 // Object ctx = currentContext; | |
330 // if (ctx != null) { | |
331 // Element elt = null; | |
332 // | |
333 // // Get closer element node | |
334 // if (ctx instanceof Element) { | |
335 // elt = (Element)ctx; | |
336 // } else if (ctx instanceof Attribute) { | |
337 // elt = ((Attribute)ctx).getParent(); | |
338 // } else if (ctx instanceof Content) { | |
339 // elt = ((Content) ctx).getParentElement(); | |
340 // } else if (ctx instanceof Document) { | |
341 // elt = ((Document)ctx).getRootElement(); | |
342 // } | |
343 // | |
344 // if (elt != null) { | |
345 // Namespace ns = elt.getNamespace(prefix); | |
346 // if (ns != null) { | |
347 // uri = ns.getURI(); | |
348 // } | |
349 // } | |
350 // } | |
351 // } | |
352 // return uri; | |
353 // } | |
354 // } | |
355 //} | |
356 |