1 38 39 40 package com.sun.xml.fastinfoset.util; 41 42 import com.sun.xml.fastinfoset.QualifiedName; 43 import com.sun.xml.fastinfoset.CommonResourceBundle; 44 45 public class QualifiedNameArray extends ValueArray { 46 47 public QualifiedName[] _array; 48 49 private QualifiedNameArray _readOnlyArray; 50 51 public QualifiedNameArray(int initialCapacity, int maximumCapacity) { 52 _array = new QualifiedName[initialCapacity]; 53 _maximumCapacity = maximumCapacity; 54 } 55 56 public QualifiedNameArray() { 57 this(DEFAULT_CAPACITY, MAXIMUM_CAPACITY); 58 } 59 60 public final void clear() { 61 for (int i = _readOnlyArraySize; i < _size; i++) { 62 _array[i] = null; 63 } 64 _size = _readOnlyArraySize; 65 } 66 67 public final QualifiedName[] getArray() { 68 return _array; 69 } 70 71 public final void setReadOnlyArray(ValueArray readOnlyArray, boolean clear) { 72 if (!(readOnlyArray instanceof QualifiedNameArray)) { 73 throw new IllegalArgumentException (CommonResourceBundle.getInstance(). 74 getString("message.illegalClass", new Object []{readOnlyArray})); 75 } 76 77 setReadOnlyArray((QualifiedNameArray)readOnlyArray, clear); 78 } 79 80 public final void setReadOnlyArray(QualifiedNameArray readOnlyArray, boolean clear) { 81 if (readOnlyArray != null) { 82 _readOnlyArray = readOnlyArray; 83 _readOnlyArraySize = readOnlyArray.getSize(); 84 85 if (clear) { 86 clear(); 87 } 88 89 _array = getCompleteArray(); 90 _size = _readOnlyArraySize; 91 } 92 } 93 94 public final QualifiedName[] getCompleteArray() { 95 if (_readOnlyArray == null) { 96 return _array; 97 } else { 98 final QualifiedName[] ra = _readOnlyArray.getCompleteArray(); 99 final QualifiedName[] a = new QualifiedName[_readOnlyArraySize + _array.length]; 100 System.arraycopy(ra, 0, a, 0, _readOnlyArraySize); 101 return a; 102 } 103 } 104 105 public final QualifiedName get(int i) { 106 return _array[i]; 107 } 108 109 public final void add(QualifiedName s) { 110 if (_size == _array.length) { 111 resize(); 112 } 113 114 _array[_size++] = s; 115 } 116 117 protected final void resize() { 118 if (_size == _maximumCapacity) { 119 throw new ValueArrayResourceException(CommonResourceBundle.getInstance().getString("message.arrayMaxCapacity")); 120 } 121 122 int newSize = _size * 3 / 2 + 1; 123 if (newSize > _maximumCapacity) { 124 newSize = _maximumCapacity; 125 } 126 127 final QualifiedName[] newArray = new QualifiedName[newSize]; 128 System.arraycopy(_array, 0, newArray, 0, _size); 129 _array = newArray; 130 } 131 132 } 133 | Popular Tags |