Author: schor Date: Thu Jan 11 18:40:37 2018 New Revision: 1820908 URL: http://svn.apache.org/viewvc?rev=1820908&view=rev Log: no Jira, change internal impl of Int2ObjHashMap to have 2 generic types
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes.java uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes4.java uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes6.java uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CommonSerDesSequential.java uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiSerializationSharedData.java uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/Int2ObjHashMap.java Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes.java URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes.java?rev=1820908&r1=1820907&r2=1820908&view=diff ============================================================================== --- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes.java (original) +++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes.java Thu Jan 11 18:40:37 2018 @@ -171,7 +171,7 @@ public class BinaryCasSerDes { // * For delta, the addr is the modeled addr for the full CAS including both above and below the line. // * // */ -// final Int2ObjHashMap<TOP> addr2fs; +// final Int2ObjHashMap<TOP, TOP> addr2fs; // /** // * a map from a fs array of boolean/byte/short/long/double to its addr in the modeled aux heap @@ -191,9 +191,9 @@ public class BinaryCasSerDes { * updated when delta deserializing. * reset at end of delta deserializings because multiple mods not supported */ - final private Int2ObjHashMap<TOP> byteAuxAddr2fsa = new Int2ObjHashMap<>(TOP.class); - final private Int2ObjHashMap<TOP> shortAuxAddr2fsa = new Int2ObjHashMap<>(TOP.class); - final private Int2ObjHashMap<TOP> longAuxAddr2fsa = new Int2ObjHashMap<>(TOP.class); + final private Int2ObjHashMap<TOP, TOP> byteAuxAddr2fsa = new Int2ObjHashMap<>(TOP.class); + final private Int2ObjHashMap<TOP, TOP> shortAuxAddr2fsa = new Int2ObjHashMap<>(TOP.class); + final private Int2ObjHashMap<TOP, TOP> longAuxAddr2fsa = new Int2ObjHashMap<>(TOP.class); /** * used to calculate total heap size @@ -399,7 +399,7 @@ public class BinaryCasSerDes { * and then maybe remove the new one (and remember which views to re-add to). * @param heapAddr */ - private void maybeAddBackAndRemoveFs(int heapAddr, Int2ObjHashMap<TOP> addr2fs) { + private void maybeAddBackAndRemoveFs(int heapAddr, Int2ObjHashMap<TOP, TOP> addr2fs) { if (fsStartAddr == -1) { fssIndex = -1; addrOfFsToBeAddedBack = -1; @@ -424,7 +424,7 @@ public class BinaryCasSerDes { * @param heapAddr - the heap addr * @param bds - */ - private void findCorrespondingFs(int heapAddr, Int2ObjHashMap<TOP> addr2fs) { + private void findCorrespondingFs(int heapAddr, Int2ObjHashMap<TOP, TOP> addr2fs) { if (fsStartAddr < heapAddr && heapAddr < fsEndAddr) { return; } @@ -995,7 +995,7 @@ public class BinaryCasSerDes { * @return heapsz (used by caller to do word alignment) * @throws IOException */ - int updateAuxArrayMods(Reading r, Int2ObjHashMap<TOP> auxAddr2fsa, + int updateAuxArrayMods(Reading r, Int2ObjHashMap<TOP, TOP> auxAddr2fsa, Consumer_T_int_withIOException<TOP> setter) throws IOException { final int heapsz = r.readInt(); if (heapsz > 0) { @@ -1596,7 +1596,7 @@ public class BinaryCasSerDes { */ private void createFSsFromHeaps(boolean isDelta, int startPos, CommonSerDesSequential csds) { final int heapsz = heap.getCellsUsed(); - final Int2ObjHashMap<TOP> addr2fs = csds.addr2fs; + final Int2ObjHashMap<TOP, TOP> addr2fs = csds.addr2fs; tsi = baseCas.getTypeSystemImpl(); TOP fs; TypeImpl type; @@ -1785,7 +1785,7 @@ public class BinaryCasSerDes { FeatureImpl feat, List<Runnable> fixups4forwardFsRefs, Consumer<TOP> setter, - Int2ObjHashMap<TOP> addr2fs) { + Int2ObjHashMap<TOP, TOP> addr2fs) { int a = heapFeat(heapIndex, feat); if (a == 0) { return; @@ -1807,7 +1807,7 @@ public class BinaryCasSerDes { return heap.heap[nextFsAddr + 1 + feat.getOffset()]; } - private Sofa getSofaFromAnnotBase(int annotBaseAddr, StringHeap stringHeap2, Int2ObjHashMap<TOP> addr2fs, + private Sofa getSofaFromAnnotBase(int annotBaseAddr, StringHeap stringHeap2, Int2ObjHashMap<TOP, TOP> addr2fs, CommonSerDesSequential csds) { int sofaAddr = heapFeat(annotBaseAddr, tsi.annotBaseSofaFeat); if (0 == sofaAddr) { @@ -1852,7 +1852,7 @@ public class BinaryCasSerDes { * @param slotAddr - the main heap slot addr being updated * @param slotValue - the new value */ - private void updateHeapSlot(BinDeserSupport bds, int slotAddr, int slotValue, Int2ObjHashMap<TOP> addr2fs) { + private void updateHeapSlot(BinDeserSupport bds, int slotAddr, int slotValue, Int2ObjHashMap<TOP, TOP> addr2fs) { TOP fs = bds.fs; TypeImpl type = fs._getTypeImpl(); if (type.isArray()) { Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes4.java URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes4.java?rev=1820908&r1=1820907&r2=1820908&view=diff ============================================================================== --- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes4.java (original) +++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes4.java Thu Jan 11 18:40:37 2018 @@ -362,7 +362,7 @@ public class BinaryCasSerDes4 implements * Contrast with fs2addr and addr2fs in csds - these use the pseudo v2 addresses as the int */ private final Obj2IntIdentityHashMap<TOP> fs2seq = new Obj2IntIdentityHashMap<TOP>(TOP.class, TOP._singleton); -// private final Int2ObjHashMap<TOP> seq2fs = new Int2ObjHashMap<>(TOP.class); +// private final Int2ObjHashMap<TOP, TOP> seq2fs = new Int2ObjHashMap<>(TOP.class); /** * * @param cas - @@ -1574,7 +1574,7 @@ public class BinaryCasSerDes4 implements * Note: This may be identity map, but may not in the case for V3 where some FSs are GC'd */ // private final Obj2IntIdentityHashMap<TOP> fs2seq = new Obj2IntIdentityHashMap<TOP>(TOP.class, TOP.singleton); - private final Int2ObjHashMap<TOP> seq2fs = new Int2ObjHashMap<>(TOP.class); + private final Int2ObjHashMap<TOP, TOP> seq2fs = new Int2ObjHashMap<>(TOP.class); /** * Called after header was read and determined that Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes6.java URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes6.java?rev=1820908&r1=1820907&r2=1820908&view=diff ============================================================================== --- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes6.java (original) +++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes6.java Thu Jan 11 18:40:37 2018 @@ -367,7 +367,7 @@ public class BinaryCasSerDes6 implements * first index: key is type code * 2nd index: key is slot-offset number (0-based) */ - final private Int2ObjHashMap<long[]> prevFsWithLongValues; + final private Int2ObjHashMap<long[], long[]> prevFsWithLongValues; /** * ordered set of FSs found in indexes or linked from other found FSs. Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CommonSerDesSequential.java URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CommonSerDesSequential.java?rev=1820908&r1=1820907&r2=1820908&view=diff ============================================================================== --- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CommonSerDesSequential.java (original) +++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CommonSerDesSequential.java Thu Jan 11 18:40:37 2018 @@ -74,7 +74,7 @@ public class CommonSerDesSequential { * For delta, the addr is the modeled addr for the full CAS including both above and below the line. * */ - final Int2ObjHashMap<TOP> addr2fs = new Int2ObjHashMap<>(TOP.class); + final Int2ObjHashMap<TOP, TOP> addr2fs = new Int2ObjHashMap<>(TOP.class); /** * The FSs in this list are not necessarily sequential, but is in ascending (simulated heap) order, Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiSerializationSharedData.java URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiSerializationSharedData.java?rev=1820908&r1=1820907&r2=1820908&view=diff ============================================================================== --- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiSerializationSharedData.java (original) +++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiSerializationSharedData.java Thu Jan 11 18:40:37 2018 @@ -78,7 +78,7 @@ public class XmiSerializationSharedData * getFsAddrForXmiId() method, necessary to support merging multiple XMI * CASes into the same CAS object. **/ - private Int2ObjHashMap<TOP> xmiIdToFs = new Int2ObjHashMap<>(TOP.class); + private Int2ObjHashMap<TOP, TOP> xmiIdToFs = new Int2ObjHashMap<>(TOP.class); /** * List of OotsElementData objects, each of which captures information about Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/Int2ObjHashMap.java URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/Int2ObjHashMap.java?rev=1820908&r1=1820907&r2=1820908&view=diff ============================================================================== --- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/Int2ObjHashMap.java (original) +++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/Int2ObjHashMap.java Thu Jan 11 18:40:37 2018 @@ -50,7 +50,7 @@ import org.apache.uima.util.impl.Constan * A cleanout of removed items occurs when necessary. * */ -public class Int2ObjHashMap<T> extends Common_hash_support implements Iterable<IntEntry<T>>{ +public class Int2ObjHashMap<T, E extends T> extends Common_hash_support implements Iterable<IntEntry<E>>{ private static final int REMOVED_KEY = Integer.MIN_VALUE; @@ -503,14 +503,24 @@ public class Int2ObjHashMap<T> extends C }; } - public Int2ObjHashMap<T> copy() { + public T[] valuesArray() { + Iterator<T> it = values(); + int size = size(); + T[] r = (T[]) Array.newInstance(componentType, size); + for (int i = 0; i < size; i++) { + r[i] = it.next(); + } + return r; + } + + public Int2ObjHashMap<T, E> copy() { return new Int2ObjHashMap<>(this); } @Override - public Iterator<IntEntry<T>> iterator() { + public Iterator<IntEntry<E>> iterator() { - return new Iterator<IntEntry<T>>() { + return new Iterator<IntEntry<E>>() { /** * Keep this always pointing to a non-0 entry, or @@ -524,11 +534,11 @@ public class Int2ObjHashMap<T> extends C } @Override - public IntEntry next() { + public IntEntry<E> next() { if (!hasNext()) { throw new NoSuchElementException(); } - final IntEntry<T> r = new IntEntry<>(keys[curPosition], values[curPosition]); + final IntEntry<E> r = new IntEntry<E>(keys[curPosition], (E) values[curPosition]); curPosition = moveToNextFilled(curPosition + 1); return r; }