View Javadoc
1   /*
2    * reserved comment block
3    * DO NOT REMOVE OR ALTER!
4    */
5   /*
6    * Copyright 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  package com.sun.org.apache.xerces.internal.impl.dv.util;
21  
22  import java.util.AbstractList;
23  
24  import com.sun.org.apache.xerces.internal.xs.XSException;
25  import com.sun.org.apache.xerces.internal.xs.datatypes.ByteList;
26  
27  /**
28   * Implementation of <code>com.sun.org.apache.xerces.internal.xs.datatypes.ByteList</code>.
29   *
30   * @xerces.internal
31   *
32   * @author Ankit Pasricha, IBM
33   *
34   * @version $Id: ByteListImpl.java,v 1.7 2010-11-01 04:39:46 joehw Exp $
35   */
36  public class ByteListImpl extends AbstractList implements ByteList {
37  
38      // actually data stored in a byte array
39      protected final byte[] data;
40  
41      // canonical representation of the data
42      protected String canonical;
43  
44      public ByteListImpl(byte[] data) {
45          this.data = data;
46      }
47  
48      /**
49       * The number of <code>byte</code>s in the list. The range of
50       * valid child object indices is 0 to <code>length-1</code> inclusive.
51       */
52      public int getLength() {
53          return data.length;
54      }
55  
56      /**
57       * Checks if the <code>byte</code> <code>item</code> is a
58       * member of this list.
59       * @param item  <code>byte</code> whose presence in this list
60       *   is to be tested.
61       * @return  True if this list contains the <code>byte</code>
62       *   <code>item</code>.
63       */
64      public boolean contains(byte item) {
65          for (int i = 0; i < data.length; ++i) {
66              if (data[i] == item) {
67                  return true;
68              }
69          }
70          return false;
71      }
72  
73      /**
74       * Returns the <code>index</code>th item in the collection. The index
75       * starts at 0.
76       * @param index  index into the collection.
77       * @return  The <code>byte</code> at the <code>index</code>th
78       *   position in the <code>ByteList</code>.
79       * @exception XSException
80       *   INDEX_SIZE_ERR: if <code>index</code> is greater than or equal to the
81       *   number of objects in the list.
82       */
83      public byte item(int index)
84          throws XSException {
85  
86          if(index < 0 || index > data.length - 1) {
87              throw new XSException(XSException.INDEX_SIZE_ERR, null);
88          }
89          return data[index];
90      }
91  
92      /*
93       * List methods
94       */
95  
96      public Object get(int index) {
97          if (index >= 0 && index < data.length) {
98              return new Byte(data[index]);
99          }
100         throw new IndexOutOfBoundsException("Index: " + index);
101     }
102 
103     public int size() {
104         return getLength();
105     }
106 }