1 /* 2 * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/util/SingleObjectIterator.java,v 1.8 2006/11/09 18:20:12 elharo Exp $ 3 * $Revision: 1.8 $ 4 * $Date: 2006/11/09 18:20:12 $ 5 * 6 * ==================================================================== 7 * 8 * Copyright 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 are 13 * met: 14 * 15 * * Redistributions of source code must retain the above copyright 16 * notice, this list of conditions and the following disclaimer. 17 * 18 * * Redistributions in binary form must reproduce the above copyright 19 * notice, this list of conditions and the following disclaimer in the 20 * documentation and/or other materials provided with the distribution. 21 * 22 * * Neither the name of the Jaxen Project nor the names of its 23 * contributors may be used to endorse or promote products derived 24 * from this software without specific prior written permission. 25 * 26 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 27 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 28 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 29 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER 30 * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 31 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 32 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 33 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 34 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 35 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 36 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 37 * 38 * ==================================================================== 39 * This software consists of voluntary contributions made by many 40 * individuals on behalf of the Jaxen Project and was originally 41 * created by bob mcwhirter <bob@werken.com> and 42 * James Strachan <jstrachan@apache.org>. For more information on the 43 * Jaxen Project, please see <http://www.jaxen.org/>. 44 * 45 * $Id: SingleObjectIterator.java,v 1.8 2006/11/09 18:20:12 elharo Exp $ 46 */ 47 48 49 package org.jaxen.util; 50 51 import java.util.Iterator; 52 import java.util.NoSuchElementException; 53 54 /*** 55 * Simple utility class that wraps an iterator around one object. 56 * This is a little more efficent than creating a one-object list. 57 * 58 */ 59 public class SingleObjectIterator implements Iterator 60 { 61 62 private Object object; 63 private boolean seen; 64 65 /*** 66 * Creates a new single object iterator. 67 * 68 * @param object the object to iterate over 69 */ 70 public SingleObjectIterator(Object object) 71 { 72 this.object = object; 73 this.seen = false; 74 } 75 76 77 /*** 78 * Returns true if this iterator's element has not yet been seen; false if it has. 79 * 80 * @return true if this iterator has another element; false if it doesn't 81 * 82 * @see java.util.Iterator#hasNext() 83 */ 84 public boolean hasNext() 85 { 86 return ! this.seen; 87 } 88 89 /*** 90 * Returns the single element in this iterator if it has not yet 91 * been seen. 92 * 93 * @return the next element in this iterator 94 * 95 * @throws NoSuchElementException if the element has already been seen 96 * 97 * @see java.util.Iterator#next() 98 */ 99 public Object next() 100 { 101 if ( hasNext() ) 102 { 103 this.seen = true; 104 return this.object; 105 } 106 107 throw new NoSuchElementException(); 108 } 109 110 /*** 111 * This operation is not supported. 112 * 113 * @throws UnsupportedOperationException always 114 */ 115 public void remove() 116 { 117 throw new UnsupportedOperationException(); 118 } 119 120 }