1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package org.jaxen.expr.iter;
35
36 import java.io.Serializable;
37 import java.util.Iterator;
38
39 import org.jaxen.ContextSupport;
40 import org.jaxen.UnsupportedAxisException;
41
42 /***
43 * Provide access to the XPath axes.
44 *
45 * @author Bob McWhirter
46 * @author James Strachan
47 * @author Stephen Colebourne
48 */
49 public abstract class IterableAxis implements Serializable {
50
51 /*** The axis type */
52 private int value;
53
54 /***
55 * Constructor.
56 *
57 * @param axisValue
58 */
59 public IterableAxis(int axisValue) {
60 this.value = axisValue;
61 }
62
63 /***
64 * Gets the axis value.
65 *
66 * @return the axis value
67 */
68 public int value() {
69 return this.value;
70 }
71
72 /***
73 * Gets the iterator for a specific XPath axis.
74 *
75 * @param contextNode the current context node to work from
76 * @param support the additional context information
77 * @return an iterator for the axis
78 * @throws UnsupportedAxisException
79 */
80 public abstract Iterator iterator(Object contextNode, ContextSupport support) throws UnsupportedAxisException;
81
82 /***
83 * Gets the iterator for a specific XPath axis that supports named access.
84 *
85 * @param contextNode the current context node to work from
86 * @param support the additional context information
87 * @param localName the local name of the nodes to return
88 * @param namespacePrefix the prefix of the namespace of the nodes to return
89 * @param namespaceURI the URI of the namespace of the nodes to return
90 */
91 public Iterator namedAccessIterator(
92 Object contextNode,
93 ContextSupport support,
94 String localName,
95 String namespacePrefix,
96 String namespaceURI)
97 throws UnsupportedAxisException {
98
99 throw new UnsupportedOperationException("Named access unsupported");
100 }
101
102 /***
103 * Does this axis support named access?
104 *
105 * @param support the additional context information
106 * @return true if named access supported. If not iterator() will be used
107 */
108 public boolean supportsNamedAccess(ContextSupport support) {
109 return false;
110 }
111
112 }