KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > commons > jxpath > ri > axes > InitialContext


1 /*
2  * Copyright 1999-2004 The Apache Software Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package org.apache.commons.jxpath.ri.axes;
17
18 import org.apache.commons.jxpath.Pointer;
19 import org.apache.commons.jxpath.ri.EvalContext;
20 import org.apache.commons.jxpath.ri.model.NodePointer;
21
22 /**
23  * A single-set EvalContext that provides access to the current node of
24  * the parent context and nothing else. It does not pass the iteration
25  * on to the parent context.
26  *
27  * @author Dmitri Plotnikov
28  * @version $Revision: 1.15 $ $Date: 2004/07/30 13:51:01 $
29  */

30 public class InitialContext extends EvalContext {
31     private boolean startedSet = false;
32     private boolean started = false;
33     private boolean collection;
34     private NodePointer nodePointer;
35
36     public InitialContext(EvalContext parentContext) {
37         super(parentContext);
38         nodePointer =
39             (NodePointer) parentContext.getCurrentNodePointer().clone();
40         if (nodePointer != null) {
41             collection =
42                 (nodePointer.getIndex() == NodePointer.WHOLE_COLLECTION);
43         }
44     }
45
46     public Pointer getSingleNodePointer() {
47         return nodePointer;
48     }
49
50     public NodePointer getCurrentNodePointer() {
51         return nodePointer;
52     }
53     
54     public Object JavaDoc getValue() {
55         return nodePointer.getValue();
56     }
57     
58     public boolean nextNode() {
59         return setPosition(position + 1);
60     }
61
62     public boolean setPosition(int position) {
63         this.position = position;
64         if (collection) {
65             if (position >= 1 && position <= nodePointer.getLength()) {
66                 nodePointer.setIndex(position - 1);
67                 return true;
68             }
69             return false;
70         }
71         else {
72             return position == 1;
73         }
74     }
75
76     public boolean nextSet() {
77         if (started) {
78             return false;
79         }
80         started = true;
81         return true;
82     }
83 }
Popular Tags