1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.jxpath.ri.axes;
18
19 import org.apache.commons.jxpath.Pointer;
20 import org.apache.commons.jxpath.ri.EvalContext;
21 import org.apache.commons.jxpath.ri.model.NodePointer;
22
23
24
25
26
27
28
29
30
31 public class InitialContext extends EvalContext {
32 private boolean started = false;
33 private boolean collection;
34 private NodePointer nodePointer;
35
36
37
38
39
40 public InitialContext(EvalContext parentContext) {
41 super(parentContext);
42 nodePointer =
43 (NodePointer) parentContext.getCurrentNodePointer().clone();
44 if (nodePointer != null) {
45 collection =
46 (nodePointer.getIndex() == NodePointer.WHOLE_COLLECTION);
47 }
48 }
49
50 public Pointer getSingleNodePointer() {
51 return nodePointer;
52 }
53
54 public NodePointer getCurrentNodePointer() {
55 return nodePointer;
56 }
57
58 public Object getValue() {
59 return nodePointer.getValue();
60 }
61
62 public boolean nextNode() {
63 return setPosition(position + 1);
64 }
65
66 public boolean setPosition(int position) {
67 this.position = position;
68 if (collection) {
69 if (position >= 1 && position <= nodePointer.getLength()) {
70 nodePointer.setIndex(position - 1);
71 return true;
72 }
73 return false;
74 }
75 return position == 1;
76 }
77
78 public boolean nextSet() {
79 if (started) {
80 return false;
81 }
82 started = true;
83 return true;
84 }
85 }