Mercurial > repos > pfrommolt > ngsrich
view 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 |
line wrap: on
line source
///*-- // // $Id: JaxenXPath.java,v 1.20 2007/11/10 05:29:02 jhunter Exp $ // // Copyright (C) 2000-2007 Jason Hunter & Brett McLaughlin. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // 1. Redistributions of source code must retain the above copyright // notice, this list of conditions, and the following disclaimer. // // 2. Redistributions in binary form must reproduce the above copyright // notice, this list of conditions, and the disclaimer that follows // these conditions in the documentation and/or other materials // provided with the distribution. // // 3. The name "JDOM" must not be used to endorse or promote products // derived from this software without prior written permission. For // written permission, please contact <request_AT_jdom_DOT_org>. // // 4. Products derived from this software may not be called "JDOM", nor // may "JDOM" appear in their name, without prior written permission // from the JDOM Project Management <request_AT_jdom_DOT_org>. // // In addition, we request (but do not require) that you include in the // end-user documentation provided with the redistribution and/or in the // software itself an acknowledgement equivalent to the following: // "This product includes software developed by the // JDOM Project (http://www.jdom.org/)." // Alternatively, the acknowledgment may be graphical using the logos // available at http://www.jdom.org/images/logos. // // THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE // DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF // USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT // OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF // SUCH DAMAGE. // // This software consists of voluntary contributions made by many // individuals on behalf of the JDOM Project and was originally // created by Jason Hunter <jhunter_AT_jdom_DOT_org> and // Brett McLaughlin <brett_AT_jdom_DOT_org>. For more information // on the JDOM Project, please see <http://www.jdom.org/>. // // */ // //package org.jdom.xpath; // // //import java.util.*; // //import org.jaxen.*; //import org.jaxen.jdom.*; //import org.jdom.*; // // ///** // * A non-public concrete XPath implementation for Jaxen. // * // * @version $Revision: 1.20 $, $Date: 2007/11/10 05:29:02 $ // * @author Laurent Bihanic // */ //class JaxenXPath extends XPath { // package protected // // private static final String CVS_ID = // "@(#) $RCSfile: JaxenXPath.java,v $ $Revision: 1.20 $ $Date: 2007/11/10 05:29:02 $ $Name: jdom_1_1_1 $"; // // /** // * The compiled XPath object to select nodes. This attribute can // * not be made final as it needs to be set upon object // * deserialization. // */ // private transient JDOMXPath xPath; // // /** // * The current context for XPath expression evaluation. // */ // private Object currentContext; // // /** // * Creates a new XPath wrapper object, compiling the specified // * XPath expression. // * // * @param expr the XPath expression to wrap. // * // * @throws JDOMException if the XPath expression is invalid. // */ // public JaxenXPath(String expr) throws JDOMException { // setXPath(expr); // } // // /** // * Evaluates the wrapped XPath expression and returns the list // * of selected items. // * // * @param context the node to use as context for evaluating // * the XPath expression. // * // * @return the list of selected items, which may be of types: {@link Element}, // * {@link Attribute}, {@link Text}, {@link CDATA}, // * {@link Comment}, {@link ProcessingInstruction}, Boolean, // * Double, or String. // * // * @throws JDOMException if the evaluation of the XPath // * expression on the specified context // * failed. // */ // public List selectNodes(Object context) throws JDOMException { // try { // currentContext = context; // // return xPath.selectNodes(context); // } // catch (JaxenException ex1) { // throw new JDOMException("XPath error while evaluating \"" + // xPath.toString() + "\": " + ex1.getMessage(), ex1); // } // finally { // currentContext = null; // } // } // // /** // * Evaluates the wrapped XPath expression and returns the first // * entry in the list of selected nodes (or atomics). // * // * @param context the node to use as context for evaluating // * the XPath expression. // * // * @return the first selected item, which may be of types: {@link Element}, // * {@link Attribute}, {@link Text}, {@link CDATA}, // * {@link Comment}, {@link ProcessingInstruction}, Boolean, // * Double, String, or <code>null</code> if no item was selected. // * // * @throws JDOMException if the evaluation of the XPath // * expression on the specified context // * failed. // */ // public Object selectSingleNode(Object context) throws JDOMException { // try { // currentContext = context; // // return xPath.selectSingleNode(context); // } // catch (JaxenException ex1) { // throw new JDOMException("XPath error while evaluating \"" + // xPath.toString() + "\": " + ex1.getMessage(), ex1); // } // finally { // currentContext = null; // } // } // // /** // * Returns the string value of the first node selected by applying // * the wrapped XPath expression to the given context. // * // * @param context the element to use as context for evaluating // * the XPath expression. // * // * @return the string value of the first node selected by applying // * the wrapped XPath expression to the given context. // * // * @throws JDOMException if the XPath expression is invalid or // * its evaluation on the specified context // * failed. // */ // public String valueOf(Object context) throws JDOMException { // try { // currentContext = context; // // return xPath.stringValueOf(context); // } // catch (JaxenException ex1) { // throw new JDOMException("XPath error while evaluating \"" + // xPath.toString() + "\": " + ex1.getMessage(), ex1); // } // finally { // currentContext = null; // } // } // // /** // * Returns the number value of the first item selected by applying // * the wrapped XPath expression to the given context. // * // * @param context the element to use as context for evaluating // * the XPath expression. // * // * @return the number value of the first item selected by applying // * the wrapped XPath expression to the given context, // * <code>null</code> if no node was selected or the // * special value {@link java.lang.Double#NaN} // * (Not-a-Number) if the selected value can not be // * converted into a number value. // * // * @throws JDOMException if the XPath expression is invalid or // * its evaluation on the specified context // * failed. // */ // public Number numberValueOf(Object context) throws JDOMException { // try { // currentContext = context; // // return xPath.numberValueOf(context); // } // catch (JaxenException ex1) { // throw new JDOMException("XPath error while evaluating \"" + // xPath.toString() + "\": " + ex1.getMessage(), ex1); // } // finally { // currentContext = null; // } // } // // /** // * Defines an XPath variable and sets its value. // * // * @param name the variable name. // * @param value the variable value. // * // * @throws IllegalArgumentException if <code>name</code> is not // * a valid XPath variable name // * or if the value type is not // * supported by the underlying // * implementation // */ // public void setVariable(String name, Object value) // throws IllegalArgumentException { // Object o = xPath.getVariableContext(); // if (o instanceof SimpleVariableContext) { // ((SimpleVariableContext)o).setVariableValue(null, name, value); // } // } // // /** // * Adds a namespace definition to the list of namespaces known of // * this XPath expression. // * <p> // * <strong>Note</strong>: In XPath, there is no such thing as a // * 'default namespace'. The empty prefix <b>always</b> resolves // * to the empty namespace URI.</p> // * // * @param namespace the namespace. // */ // public void addNamespace(Namespace namespace) { // try { // xPath.addNamespace(namespace.getPrefix(), namespace.getURI()); // } // catch (JaxenException ex1) { /* Can't happen here. */ } // } // // /** // * Returns the wrapped XPath expression as a string. // * // * @return the wrapped XPath expression as a string. // */ // public String getXPath() { // return (xPath.toString()); // } // // /** // * Compiles and sets the XPath expression wrapped by this object. // * // * @param expr the XPath expression to wrap. // * // * @throws JDOMException if the XPath expression is invalid. // */ // private void setXPath(String expr) throws JDOMException { // try { // xPath = new JDOMXPath(expr); // xPath.setNamespaceContext(new NSContext()); // } // catch (Exception ex1) { // throw new JDOMException( // "Invalid XPath expression: \"" + expr + "\"", ex1); // } // } // // public String toString() { // return (xPath.toString()); // } // // public boolean equals(Object o) { // if (o instanceof JaxenXPath) { // JaxenXPath x = (JaxenXPath)o; // // return (super.equals(o) && // xPath.toString().equals(x.xPath.toString())); // } // return false; // } // // public int hashCode() { // return xPath.hashCode(); // } // // private class NSContext extends SimpleNamespaceContext { // public NSContext() { // super(); // } // // /** // * <i>[Jaxen NamespaceContext interface support]</i> Translates // * the provided namespace prefix into the matching bound // * namespace URI. // * // * @param prefix the namespace prefix to resolve. // * // * @return the namespace URI matching the prefix. // */ // public String translateNamespacePrefixToUri(String prefix) { // if ((prefix == null) || (prefix.length() == 0)) { // return null; // } // // String uri = super.translateNamespacePrefixToUri(prefix); // if (uri == null) { // Object ctx = currentContext; // if (ctx != null) { // Element elt = null; // // // Get closer element node // if (ctx instanceof Element) { // elt = (Element)ctx; // } else if (ctx instanceof Attribute) { // elt = ((Attribute)ctx).getParent(); // } else if (ctx instanceof Content) { // elt = ((Content) ctx).getParentElement(); // } else if (ctx instanceof Document) { // elt = ((Document)ctx).getRootElement(); // } // // if (elt != null) { // Namespace ns = elt.getNamespace(prefix); // if (ns != null) { // uri = ns.getURI(); // } // } // } // } // return uri; // } // } //}