KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jaxen > util > AncestorOrSelfAxisIterator


1 package org.jaxen.util;
2
3 /*
4  * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/util/AncestorOrSelfAxisIterator.java,v 1.9 2005/04/08 14:22:08 elharo Exp $
5  * $Revision: 1.9 $
6  * $Date: 2005/04/08 14:22:08 $
7  *
8  * ====================================================================
9  *
10  * Copyright (C) 2000-2005 bob mcwhirter & James Strachan.
11  * All rights reserved.
12  *
13  * Redistribution and use in source and binary forms, with or without
14  * modification, are permitted provided that the following conditions
15  * are met:
16  *
17  * 1. Redistributions of source code must retain the above copyright
18  * notice, this list of conditions, and the following disclaimer.
19  *
20  * 2. Redistributions in binary form must reproduce the above copyright
21  * notice, this list of conditions, and the disclaimer that follows
22  * these conditions in the documentation and/or other materials
23  * provided with the distribution.
24  *
25  * 3. The name "Jaxen" must not be used to endorse or promote products
26  * derived from this software without prior written permission. For
27  * written permission, please contact license@jaxen.org.
28  *
29  * 4. Products derived from this software may not be called "Jaxen", nor
30  * may "Jaxen" appear in their name, without prior written permission
31  * from the Jaxen Project Management (pm@jaxen.org).
32  *
33  * In addition, we request (but do not require) that you include in the
34  * end-user documentation provided with the redistribution and/or in the
35  * software itself an acknowledgement equivalent to the following:
36  * "This product includes software developed by the
37  * Jaxen Project (http://www.jaxen.org/)."
38  * Alternatively, the acknowledgment may be graphical using the logos
39  * available at http://www.jaxen.org/
40  *
41  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
42  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
43  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
44  * DISCLAIMED. IN NO EVENT SHALL THE Jaxen AUTHORS OR THE PROJECT
45  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
46  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
47  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
48  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
49  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
50  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
51  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
52  * SUCH DAMAGE.
53  *
54  * ====================================================================
55  * This software consists of voluntary contributions made by many
56  * individuals on behalf of the Jaxen Project and was originally
57  * created by bob mcwhirter <bob@werken.com> and
58  * James Strachan <jstrachan@apache.org>. For more information on the
59  * Jaxen Project, please see <http://www.jaxen.org/>.
60  *
61  * $Id: AncestorOrSelfAxisIterator.java,v 1.9 2005/04/08 14:22:08 elharo Exp $
62 */

63
64 import java.util.Iterator JavaDoc;
65 import java.util.NoSuchElementException JavaDoc;
66
67 import org.jaxen.Navigator;
68 import org.jaxen.UnsupportedAxisException;
69 import org.jaxen.JaxenRuntimeException;
70
71 public class AncestorOrSelfAxisIterator implements Iterator JavaDoc
72 {
73     private Object JavaDoc contextNode;
74     private Navigator navigator;
75
76     public AncestorOrSelfAxisIterator(Object JavaDoc contextNode,
77                                       Navigator navigator)
78     {
79         // XXX should we throw a NullPointerException here if contextNode is null?
80
this.contextNode = contextNode;
81         this.navigator = navigator;
82     }
83
84     public boolean hasNext()
85     {
86         return contextNode != null;
87     }
88
89     public Object JavaDoc next()
90     {
91         try
92         {
93             if (hasNext()) {
94                 Object JavaDoc result = contextNode;
95                 contextNode = navigator.getParentNode(contextNode);
96                 return result;
97             }
98             throw new NoSuchElementException JavaDoc(); // XXX provide exception message
99
}
100         catch (UnsupportedAxisException e)
101         {
102             throw new JaxenRuntimeException(e);
103         }
104     }
105
106     public void remove()
107     {
108         throw new UnsupportedOperationException JavaDoc();
109     }
110 }
111
Popular Tags