View Javadoc
1   /*
2    * reserved comment block
3    * DO NOT REMOVE OR ALTER!
4    */
5   /*
6    * Copyright 2002,2003-2004 The Apache Software Foundation.
7    *
8    * Licensed under the Apache License, Version 2.0 (the "License");
9    * you may not use this file except in compliance with the License.
10   * You may obtain a copy of the License at
11   *
12   *      http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing, software
15   * distributed under the License is distributed on an "AS IS" BASIS,
16   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17   * See the License for the specific language governing permissions and
18   * limitations under the License.
19   */
20  
21  package com.sun.org.apache.xerces.internal.impl.xs.util;
22  
23  import java.util.AbstractList;
24  
25  import com.sun.org.apache.xerces.internal.xs.ShortList;
26  import com.sun.org.apache.xerces.internal.xs.XSException;
27  
28  /**
29   * Containts a list of Object's.
30   *
31   * @xerces.internal
32   *
33   * @author Sandy Gao, IBM
34   *
35   * @version $Id: ShortListImpl.java,v 1.7 2010-11-01 04:40:06 joehw Exp $
36   */
37  public final class ShortListImpl extends AbstractList implements ShortList {
38  
39      /**
40       * An immutable empty list.
41       */
42      public static final ShortListImpl EMPTY_LIST = new ShortListImpl(new short[0], 0);
43  
44      // The array to hold all data
45      private final short[] fArray;
46      // Number of elements in this list
47      private final int fLength;
48  
49      /**
50       * Construct an XSObjectList implementation
51       *
52       * @param array     the data array
53       * @param length    the number of elements
54       */
55      public ShortListImpl(short[] array, int length) {
56          fArray = array;
57          fLength = length;
58      }
59  
60      /**
61       * The number of <code>Objects</code> in the list. The range of valid
62       * child node indices is 0 to <code>length-1</code> inclusive.
63       */
64      public int getLength() {
65          return fLength;
66      }
67  
68      /**
69       *  Checks if the <code>unsigned short</code> <code>item</code> is a
70       * member of this list.
71       * @param item  <code>unsigned short</code> whose presence in this list
72       *   is to be tested.
73       * @return  True if this list contains the <code>unsigned short</code>
74       *   <code>item</code>.
75       */
76      public boolean contains(short item) {
77          for (int i = 0; i < fLength; i++) {
78              if (fArray[i] == item) {
79                  return true;
80              }
81          }
82          return false;
83      }
84  
85      public short item(int index) throws XSException {
86          if (index < 0 || index >= fLength) {
87              throw new XSException(XSException.INDEX_SIZE_ERR, null);
88          }
89          return fArray[index];
90      }
91  
92      public boolean equals(Object obj) {
93          if (obj == null || !(obj instanceof ShortList)) {
94              return false;
95          }
96          ShortList rhs = (ShortList)obj;
97  
98          if (fLength != rhs.getLength()) {
99              return false;
100         }
101         for (int i = 0;i < fLength; ++i) {
102             if (fArray[i] != rhs.item(i)) {
103                 return false;
104             }
105         }
106         return true;
107     }
108 
109     /*
110      * List methods
111      */
112 
113     public Object get(int index) {
114         if (index >= 0 && index < fLength) {
115             return new Short(fArray[index]);
116         }
117         throw new IndexOutOfBoundsException("Index: " + index);
118     }
119 
120     public int size() {
121         return getLength();
122     }
123 
124 } // class ShortListImpl