Coverage Report - org.jaxen.saxpath.XPathHandler

Classes in this File Line Coverage Branch Coverage Complexity
XPathHandler
N/A 
N/A 
1

 1  
 /*
 2  
  * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/saxpath/XPathHandler.java,v 1.8 2005/06/28 13:44:46 elharo Exp $
 3  
  * $Revision: 1.8 $
 4  
  * $Date: 2005/06/28 13:44:46 $
 5  
  *
 6  
  * ====================================================================
 7  
  *
 8  
  * Copyright (C) 2000-2002 bob mcwhirter & James Strachan.
 9  
  * All rights reserved.
 10  
  *
 11  
  * Redistribution and use in source and binary forms, with or without
 12  
  * modification, are permitted provided that the following conditions
 13  
  * are met:
 14  
  *
 15  
  * 1. Redistributions of source code must retain the above copyright
 16  
  *    notice, this list of conditions, and the following disclaimer.
 17  
  *
 18  
  * 2. Redistributions in binary form must reproduce the above copyright
 19  
  *    notice, this list of conditions, and the disclaimer that follows
 20  
  *    these conditions in the documentation and/or other materials
 21  
  *    provided with the distribution.
 22  
  *
 23  
  * 3. The name "Jaxen" must not be used to endorse or promote products
 24  
  *    derived from this software without prior written permission.  For
 25  
  *    written permission, please contact license@jaxen.org.
 26  
  *
 27  
  * 4. Products derived from this software may not be called "Jaxen", nor
 28  
  *    may "Jaxen" appear in their name, without prior written permission
 29  
  *    from the Jaxen Project Management (pm@jaxen.org).
 30  
  *
 31  
  * In addition, we request (but do not require) that you include in the
 32  
  * end-user documentation provided with the redistribution and/or in the
 33  
  * software itself an acknowledgement equivalent to the following:
 34  
  *     "This product includes software developed by the
 35  
  *      Jaxen Project <http://www.jaxen.org/>."
 36  
  * Alternatively, the acknowledgment may be graphical using the logos
 37  
  * available at http://www.jaxen.org/
 38  
  *
 39  
  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 40  
  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 41  
  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 42  
  * DISCLAIMED.  IN NO EVENT SHALL THE Jaxen AUTHORS OR THE PROJECT
 43  
  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 44  
  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 45  
  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
 46  
  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 47  
  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 48  
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 49  
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 50  
  * SUCH DAMAGE.
 51  
  *
 52  
  * ====================================================================
 53  
  * This software consists of voluntary contributions made by many
 54  
  * individuals on behalf of the Jaxen Project and was originally
 55  
  * created by bob mcwhirter <bob@werken.com> and
 56  
  * James Strachan <jstrachan@apache.org>.  For more information on the
 57  
  * Jaxen Project, please see <http://www.jaxen.org/>.
 58  
  *
 59  
  * $Id: XPathHandler.java,v 1.8 2005/06/28 13:44:46 elharo Exp $
 60  
  */
 61  
 
 62  
 
 63  
 
 64  
 
 65  
 package org.jaxen.saxpath;
 66  
 
 67  
 
 68  
 /** Interface for event-based XPath parsing.
 69  
  *
 70  
  *  <p>
 71  
  *  A {@link org.jaxen.saxpath.XPathReader} generates callbacks into
 72  
  *  an <code>XPathHandler</code> to allow for custom
 73  
  *  handling of the parse.
 74  
  *  </p>
 75  
  *
 76  
  *  <p>
 77  
  *  The callbacks very closely match the productions
 78  
  *  listed in the W3C XPath specification.  Gratuitous
 79  
  *  productions (e.g. Expr/startExpr()/endExpr()) are not
 80  
  *  included in this API.
 81  
  *  </p>
 82  
  *
 83  
  *  @author bob mcwhirter (bob@werken.com)
 84  
  */
 85  
 public interface XPathHandler
 86  
 {
 87  
     /** Receive notification of the start of an XPath expression parse.
 88  
      */
 89  
     void startXPath() throws org.jaxen.saxpath.SAXPathException;
 90  
 
 91  
     /** Receive notification of the end of an XPath expression parse.
 92  
      */
 93  
     void endXPath() throws org.jaxen.saxpath.SAXPathException;
 94  
 
 95  
     /** Receive notification of the start of a path expression.
 96  
      */
 97  
     void startPathExpr() throws org.jaxen.saxpath.SAXPathException;
 98  
 
 99  
     /** Receive notification of the end of a path expression.
 100  
      */
 101  
     void endPathExpr() throws org.jaxen.saxpath.SAXPathException;
 102  
 
 103  
     /** Receive notification of the start of an absolute location path expression.
 104  
      */
 105  
     void startAbsoluteLocationPath() throws org.jaxen.saxpath.SAXPathException;
 106  
 
 107  
     /** Receive notification of the end of an absolute location path expression.
 108  
      */
 109  
     void endAbsoluteLocationPath() throws org.jaxen.saxpath.SAXPathException;
 110  
 
 111  
     /** Receive notification of the start of a relative location path expression.
 112  
      */
 113  
     void startRelativeLocationPath() throws org.jaxen.saxpath.SAXPathException;
 114  
 
 115  
     /** Receive notification of the end of a relative location path expression.
 116  
      */
 117  
     void endRelativeLocationPath() throws org.jaxen.saxpath.SAXPathException;
 118  
 
 119  
     /** Receive notification of the start of a name step.
 120  
      *
 121  
      *  @param axis the axis of this step
 122  
      *  @param prefix the namespace prefix for the name to test,
 123  
      *         or the empty string if no prefix is specified
 124  
      *  @param localName the local part of the name to test
 125  
      */
 126  
     void startNameStep(int axis,
 127  
                        String prefix,
 128  
                        String localName) throws org.jaxen.saxpath.SAXPathException;
 129  
 
 130  
     /** Receive notification of the end of a NameStep
 131  
      */
 132  
     void endNameStep() throws org.jaxen.saxpath.SAXPathException;
 133  
 
 134  
     /** Receive notification of the start of a text() step.
 135  
      *
 136  
      *  @param axis the axis of this step
 137  
      */
 138  
     void startTextNodeStep(int axis) throws org.jaxen.saxpath.SAXPathException;
 139  
 
 140  
     /** Receive notification of the end of a text() step.
 141  
      */
 142  
     void endTextNodeStep() throws org.jaxen.saxpath.SAXPathException;
 143  
 
 144  
     /** Receive notification of the start of a comment() step.
 145  
      *
 146  
      *  @param axis the axis of this step
 147  
      */
 148  
     void startCommentNodeStep(int axis) throws org.jaxen.saxpath.SAXPathException;
 149  
 
 150  
     /** Receive notification of the end of a comment() step.
 151  
      */
 152  
     void endCommentNodeStep() throws org.jaxen.saxpath.SAXPathException;
 153  
 
 154  
     /** Receive notification of the start of a node() step.
 155  
      *
 156  
      *  @param axis the axis of this step
 157  
      */
 158  
     void startAllNodeStep(int axis) throws org.jaxen.saxpath.SAXPathException;
 159  
 
 160  
     /** Receive notification of the end of a node() step.
 161  
      */
 162  
     void endAllNodeStep() throws org.jaxen.saxpath.SAXPathException;
 163  
 
 164  
     /** Receive notification of the start of a processing-instruction(...) step.
 165  
      *
 166  
      *  @param axis the axis of this step
 167  
      *  @param name the name of the processing-instruction, or
 168  
      *         the empty string if none is specified
 169  
      */
 170  
     void startProcessingInstructionNodeStep(int axis,
 171  
                                             String name) throws org.jaxen.saxpath.SAXPathException;
 172  
 
 173  
     /** Receive notification of the end of a processing-instruction(...) step.
 174  
      */
 175  
     void endProcessingInstructionNodeStep() throws org.jaxen.saxpath.SAXPathException;
 176  
 
 177  
     /** Receive notification of the start of a predicate.
 178  
      */
 179  
     void startPredicate() throws org.jaxen.saxpath.SAXPathException;
 180  
 
 181  
     /** Receive notification of the end of a predicate.
 182  
      */
 183  
     void endPredicate() throws org.jaxen.saxpath.SAXPathException;
 184  
 
 185  
     /** Receive notification of the start of a filter expression.
 186  
      */
 187  
     void startFilterExpr() throws org.jaxen.saxpath.SAXPathException;
 188  
 
 189  
     /** Receive notification of the end of a filter expression.
 190  
      */
 191  
     void endFilterExpr() throws org.jaxen.saxpath.SAXPathException;
 192  
 
 193  
     /** Receive notification of the start of an 'or' expression.
 194  
      */
 195  
     void startOrExpr() throws org.jaxen.saxpath.SAXPathException;
 196  
 
 197  
     /** Receive notification of the end of an 'or' expression.
 198  
      *
 199  
      *  @param create flag that indicates if this expression
 200  
      *         should truly be instantiated, or if it was just
 201  
      *         a pass-through, based upon the grammar productions
 202  
      */
 203  
     void endOrExpr(boolean create) throws org.jaxen.saxpath.SAXPathException;
 204  
 
 205  
     /** Receive notification of the start of an 'and' expression.
 206  
      */
 207  
     void startAndExpr() throws org.jaxen.saxpath.SAXPathException;
 208  
 
 209  
     /** Receive notification of the end of an 'and' expression.
 210  
      *
 211  
      *  @param create flag that indicates if this expression
 212  
      *         should truly be instantiated, or if it was just
 213  
      *         a pass-through, based upon the grammar productions
 214  
      */
 215  
     void endAndExpr(boolean create) throws org.jaxen.saxpath.SAXPathException;
 216  
 
 217  
     /** Receive notification of the start of an equality ('=' or '!=') expression.
 218  
      */
 219  
     void startEqualityExpr() throws org.jaxen.saxpath.SAXPathException;
 220  
 
 221  
     /** Receive notification of the end of an equality ('=' or '!=') expression.
 222  
      *
 223  
      *  @param equalityOperator the operator specific to this particular
 224  
      *         equality expression.  If null, this expression
 225  
      *         is only a pass-through, and should not actually
 226  
      *         be instantiated.
 227  
      */
 228  
     void endEqualityExpr(int equalityOperator) throws org.jaxen.saxpath.SAXPathException;
 229  
 
 230  
     /** Receive notification of the start of a relational ('&lt;', '>', '&lt;=', or '>=') expression.
 231  
      */
 232  
     void startRelationalExpr() throws org.jaxen.saxpath.SAXPathException;
 233  
 
 234  
     /** Receive notification of the start of a relational ('&lt;', '>', '&lt;=', or '>=') expression.
 235  
      *
 236  
      *  @param relationalOperator the operator specific to this particular
 237  
      *         relational expression.  If NO_OP, this expression
 238  
      *         is only a pass-through, and should not actually
 239  
      *         be instantiated.
 240  
      */
 241  
     void endRelationalExpr(int relationalOperator) throws org.jaxen.saxpath.SAXPathException;
 242  
 
 243  
     /** Receive notification of the start of an additive ('+' or '-') expression.
 244  
      */
 245  
     void startAdditiveExpr() throws org.jaxen.saxpath.SAXPathException;
 246  
 
 247  
     /** Receive notification of the end of an additive ('+' or '-') expression.
 248  
      *
 249  
      *  @param additiveOperator the operator specific to this particular
 250  
      *         additive expression.   If NO_OP, this expression
 251  
      *         is only a pass-through, and should not actually
 252  
      *         be instantiated.
 253  
      */
 254  
     void endAdditiveExpr(int additiveOperator) throws org.jaxen.saxpath.SAXPathException;
 255  
 
 256  
     /** Receive notification of the start of a multiplicative ('*', 'div' or 'mod') expression.
 257  
      */
 258  
     void startMultiplicativeExpr() throws org.jaxen.saxpath.SAXPathException;
 259  
 
 260  
     /** Receive notification of the start of a multiplicative ('*', 'div' or 'mod') expression.
 261  
      *
 262  
      *  @param multiplicativeOperator the operator specific to this particular
 263  
      *         multiplicative expression.  If null, this expression
 264  
      *         is only a pass-through, and should not actually
 265  
      *         be instantiated.
 266  
      */
 267  
     void endMultiplicativeExpr(int multiplicativeOperator) throws org.jaxen.saxpath.SAXPathException;
 268  
 
 269  
     /** Receive notification of the start of a unary ('+' or '-') expression.
 270  
      */
 271  
     void startUnaryExpr() throws org.jaxen.saxpath.SAXPathException;
 272  
 
 273  
     /** Receive notification of the end of a unary ('+' or '-') expression.
 274  
      *
 275  
      *  @param unaryOperator the operator specific to this particular
 276  
      *         unary expression. If NO_OP, this expression is only
 277  
      *         a pass-through, and should not actually be instantiated.
 278  
      *         If not {@link org.jaxen.saxpath.Operator#NO_OP}, it will 
 279  
      *         always be {@link org.jaxen.saxpath.Operator#NEGATIVE}.
 280  
      */
 281  
     void endUnaryExpr(int unaryOperator) throws org.jaxen.saxpath.SAXPathException;
 282  
 
 283  
     /** Receive notification of the start of a union ('|') expression.
 284  
      */
 285  
     void startUnionExpr() throws org.jaxen.saxpath.SAXPathException;
 286  
 
 287  
     /** Receive notification of the end of a union ('|') expression.
 288  
      *
 289  
      *  @param create flag that indicates if this expression
 290  
      *         should truly be instantiated, or if it was just
 291  
      *         a pass-through, based upon the grammar productions
 292  
      */
 293  
     void endUnionExpr(boolean create) throws org.jaxen.saxpath.SAXPathException;
 294  
 
 295  
     /** Receive notification of a number expression.
 296  
      *
 297  
      *  @param number the number value
 298  
      */
 299  
     void number(int number) throws org.jaxen.saxpath.SAXPathException;
 300  
 
 301  
     /** Receive notification of a number expression.
 302  
      *
 303  
      *  @param number the number value
 304  
      */
 305  
     void number(double number) throws org.jaxen.saxpath.SAXPathException;
 306  
 
 307  
     /** Receive notification of a literal expression.
 308  
      *
 309  
      *  @param literal the string literal value
 310  
      */
 311  
     void literal(String literal) throws org.jaxen.saxpath.SAXPathException;
 312  
 
 313  
     /** Receive notification of a variable-reference expression.
 314  
      *
 315  
      *  @param prefix the namespace prefix of the variable
 316  
      *  @param variableName the local name of the variable
 317  
      */
 318  
     void variableReference(String prefix,
 319  
                            String variableName) throws org.jaxen.saxpath.SAXPathException;
 320  
 
 321  
     /** Receive notification of a function call.
 322  
      *
 323  
      *  @param prefix the namespace prefix of the function
 324  
      *  @param functionName the local name of the function
 325  
      */
 326  
     void startFunction(String prefix,
 327  
                        String functionName) throws org.jaxen.saxpath.SAXPathException;
 328  
 
 329  
     /** Receive notification of the end of a function call
 330  
      */
 331  
     void endFunction() throws org.jaxen.saxpath.SAXPathException;
 332  
 }