##### Coverage Report - org.jaxen.VariableContext

Classes in this File | Line Coverage | Branch Coverage | Complexity
VariableContext |
N/A |
N/A |
| 1.0;1

1 |  |
     /*
2 |  |
      * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/VariableContext.java,v 1.9 2005/09/25 11:40:36 elharo Exp $
3 |  |
      * $Revision: 1.9 $
4 |  |
      * $Date: 2005/09/25 11:40:36 $
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: VariableContext.java,v 1.9 2005/09/25 11:40:36 elharo Exp $
60 |  |
      */
61 |  |
62 |  |
63 |  |
     package org.jaxen;
64 |  |
65 |  |
     /** Resolves variable bindings within an XPath expression.
66 |  |
      *
67 |  |
      *  <p>
68 |  |
      *  Variables within an XPath expression are denoted using
69 |  |
      *  notation such as <code>$varName</code> or
70 |  |
      *  <code>$nsPrefix:varName</code>, and may
71 |  |
      *  refer to a <code>Boolean</code>, <code>Double</code>, <code>String</code>,
72 |  |
      *  node-set (<code>List</code>) or individual XML node.
73 |  |
      *  </p>
74 |  |
      *
75 |  |
      *  <p>
76 |  |
      *  When a variable is bound to a node-set, the
77 |  |
      *  actual Java object returned should be a <code>java.util.List</code>
78 |  |
      *  containing XML nodes from the object-model (e.g. dom4j, JDOM, DOM, etc.)
79 |  |
      *  being used with the XPath.
80 |  |
      *  </p>
81 |  |
      *
82 |  |
      *  <p>
83 |  |
      *  A variable may validly be assigned the <code>null</code> value,
84 |  |
      *  but an unbound variable (one that this context does not know about)
85 |  |
      *  should cause an {@link UnresolvableException} to be thrown.
86 |  |
      *  </p>
87 |  |
      *
88 |  |
      *  @see SimpleVariableContext
89 |  |
      *  @see NamespaceContext
90 |  |
      *
91 |  |
      *  @author <a href="mailto:bob@werken.com">bob mcwhirter</a>
92 |  |
      *  @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
93 |  |
      */
94 |  |
     public interface VariableContext
95 |  |
     {
96 |  |
         /** An implementation should return the value of an XPath variable
97 |  |
          *  based on the namespace URI and local name of the variable-reference
98 |  |
          *  expression.
99 |  |
          *
100 |  |
          *  <p>
101 |  |
          *  It must not use the prefix parameter to select a variable,
102 |  |
          *  because a prefix could be bound to any namespace; the prefix parameter
103 |  |
          *  could be used in debugging output or other generated information.
104 |  |
          *  The prefix may otherwise be ignored.
105 |  |
          *  </p>
106 |  |
          *
107 |  |
          *  @param namespaceURI  the namespace URI to which the prefix parameter
108 |  |
          *                       is bound in the XPath expression. If the variable
109 |  |
          *                       reference expression had no prefix, the namespace
110 |  |
          *                       URI is <code>null</code>.
111 |  |
          *  @param prefix        the prefix that was used in the variable reference
112 |  |
          *                       expression; this value is ignored and has no effect
113 |  |
          *  @param localName     the local name of the variable-reference
114 |  |
          *                       expression. If there is no prefix, then this is
115 |  |
          *                       the whole name of the variable.
116 |  |
          *
117 |  |
          *  @return  the variable's value (which can be <code>null</code>)
118 |  |
          *  @throws UnresolvableException  when the variable cannot be resolved
119 |  |
          */
120 |  |
         public Object getVariableValue( String namespaceURI,
121 |  |
                                         String prefix,
122 |  |
                                         String localName )
123 |  |
             throws UnresolvableException;
124 |  |
     }