Coverage report

  %line %branch
org.apache.commons.jexl.util.ArrayIterator
0% 
0% 

 1  
 /*
 2  
  * Copyright 1999-2001,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  
 
 17  
 package org.apache.commons.jexl.util;
 18  
 
 19  
 
 20  
 
 21  
 import java.util.Iterator;
 22  
 import java.util.NoSuchElementException;
 23  
 import java.lang.reflect.Array;
 24  
 
 25  
 
 26  
 /**
 27  
  *  <p>
 28  
  *  An Iterator wrapper for an Object[]. This will
 29  
  *  allow us to deal with all array like structures
 30  
  *  in a consistent manner.
 31  
  *  </p>
 32  
  *  <p>
 33  
  *  WARNING : this class's operations are NOT synchronized.
 34  
  *  It is meant to be used in a single thread, newly created
 35  
  *  for each use in the #foreach() directive.
 36  
  *  If this is used or shared, synchronize in the
 37  
  *  next() method.
 38  
  *  </p>
 39  
  *
 40  
  * @author <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a>
 41  
  * @author <a href="mailto:geirm@apache.org">Geir Magnusson Jr.</a>
 42  
  * @version $Id: ArrayIterator.java,v 1.3 2004/02/28 13:45:21 yoavs Exp $
 43  
  */
 44  
 public class ArrayIterator implements Iterator
 45  
 {
 46  
     /**
 47  
      * The objects to iterate.
 48  
      */
 49  
     private Object array;
 50  
 
 51  
     /**
 52  
      * The current position and size in the array.
 53  
      */
 54  
     private int pos;
 55  
     private int size;
 56  
 
 57  
     /**
 58  
      * Creates a new iterator instance for the specified array.
 59  
      *
 60  
      * @param array The array for which an iterator is desired.
 61  
      */
 62  
     public ArrayIterator(Object array)
 63  0
     {
 64  
         /*
 65  
          * if this isn't an array, then throw.  Note that this is 
 66  
          * for internal use - so this should never happen - if it does
 67  
          *  we screwed up.
 68  
          */
 69  
          
 70  0
         if ( !array.getClass().isArray() )
 71  
         {   
 72  0
             throw new IllegalArgumentException( 
 73  
                 "Programmer error : internal ArrayIterator invoked w/o array");
 74  
         }
 75  
             
 76  0
         this.array = array;
 77  0
         pos = 0;
 78  0
         size = Array.getLength( this.array );
 79  0
     }
 80  
 
 81  
     /**
 82  
      * Move to next element in the array.
 83  
      *
 84  
      * @return The next object in the array.
 85  
      */
 86  
     public Object next()
 87  
     {
 88  0
         if (pos < size )
 89  0
             return Array.get( array, pos++);
 90  
                 
 91  
         /*
 92  
          *  we screwed up...
 93  
          */
 94  
          
 95  0
         throw new NoSuchElementException("No more elements: " + pos +
 96  
                                          " / " + size);
 97  
     }
 98  
     
 99  
     /**
 100  
      * Check to see if there is another element in the array.
 101  
      *
 102  
      * @return Whether there is another element.
 103  
      */
 104  
     public boolean hasNext()
 105  
     {
 106  0
         return (pos < size );
 107  
     }
 108  
 
 109  
     /**
 110  
      * No op--merely added to satify the <code>Iterator</code> interface.
 111  
      */
 112  
     public void remove()
 113  
     {
 114  0
         throw new UnsupportedOperationException();
 115  
     }
 116  
 }

This report is generated by jcoverage, Maven and Maven JCoverage Plugin.