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