You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by sc...@apache.org on 2017/10/17 13:11:48 UTC
svn commit: r1812398 - in /uima/uv3/uimaj-v3/trunk/uimaj-core/src:
main/java/org/apache/uima/cas/ main/java/org/apache/uima/jcas/cas/
test/java/org/apache/uima/jcas/test/
Author: schor
Date: Tue Oct 17 13:11:47 2017
New Revision: 1812398
URL: http://svn.apache.org/viewvc?rev=1812398&view=rev
Log:
[UIMA-5620] adding generics, add isEmpty() to lists, add contains() to lists and most arrays
Modified:
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/ArrayFS.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/BooleanArrayFS.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/ByteArrayFS.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/CommonArrayFS.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/DoubleArrayFS.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/FSIndex.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/FloatArrayFS.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/IntArrayFS.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/LongArrayFS.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/ShortArrayFS.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/StringArrayFS.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ArrayFSImpl.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/BooleanArray.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ByteArray.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/CommonList.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/CommonPrimitiveArray.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/DoubleArray.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyFSList.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSArray.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSHashSet.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSList.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatArray.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatList.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerArray.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerArrayList.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerList.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/LongArray.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyFSList.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyIntegerList.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ShortArray.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringArray.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringList.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/test/java/org/apache/uima/jcas/test/JCasTest.java
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/ArrayFS.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/ArrayFS.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/ArrayFS.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/ArrayFS.java Tue Oct 17 13:11:47 2017
@@ -19,12 +19,14 @@
package org.apache.uima.cas;
+import org.apache.uima.jcas.cas.TOP;
+
/**
* Feature structure array interface. To create a FS array object, use
* {@link org.apache.uima.cas.CAS#createArrayFS(int length)} or
* new FSArray(aJCas, length)
*/
-public interface ArrayFS extends CommonArrayFS {
+public interface ArrayFS<E extends FeatureStructure> extends CommonArrayFS<E> {
/**
* Get the i-th feature structure from the array.
@@ -33,7 +35,7 @@ public interface ArrayFS extends CommonA
* @exception ArrayIndexOutOfBoundsException
* If the index is out of bounds.
*/
- FeatureStructure get(int i) throws ArrayIndexOutOfBoundsException;
+ <U extends TOP> U get(int i) throws ArrayIndexOutOfBoundsException;
/**
* Set the i-th value.
@@ -45,7 +47,7 @@ public interface ArrayFS extends CommonA
* @exception ArrayIndexOutOfBoundsException
* If <code>i</code> is out of bounds.
*/
- void set(int i, FeatureStructure fs) throws ArrayIndexOutOfBoundsException;
+ void set(int i, E fs) throws ArrayIndexOutOfBoundsException;
/**
* Copy the contents of the array from <code>start</code> to <code>end</code> to the
@@ -81,7 +83,7 @@ public interface ArrayFS extends CommonA
* If <code>srcOffset < 0</code> or <code>length > size()</code> or
* <code>destOffset + length > destArray.length</code>.
*/
- void copyFromArray(FeatureStructure[] src, int srcOffset, int destOffset, int length)
+ <T extends E> void copyFromArray(T[] src, int srcOffset, int destOffset, int length)
throws ArrayIndexOutOfBoundsException;
/**
@@ -90,5 +92,7 @@ public interface ArrayFS extends CommonA
* @return A Java array copy of this FS array.
*/
FeatureStructure[] toArray();
+
+ TOP[] toArray(TOP[] a);
}
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/BooleanArrayFS.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/BooleanArrayFS.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/BooleanArrayFS.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/BooleanArrayFS.java Tue Oct 17 13:11:47 2017
@@ -24,7 +24,7 @@ package org.apache.uima.cas;
* {@link org.apache.uima.cas.CAS#createBooleanArrayFS CAS.createBooleanArrayFS(int)} or
* new BooleanArray(aJCas, length)
*/
-public interface BooleanArrayFS extends CommonArrayFS {
+public interface BooleanArrayFS extends CommonArrayFS<Boolean> {
/**
* Get the i-th string from the array.
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/ByteArrayFS.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/ByteArrayFS.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/ByteArrayFS.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/ByteArrayFS.java Tue Oct 17 13:11:47 2017
@@ -24,7 +24,7 @@ package org.apache.uima.cas;
* {@link org.apache.uima.cas.CAS#createByteArrayFS CAS.createByteArrayFS(int)}
* or new ByteArray(aJCas, length)
*/
-public interface ByteArrayFS extends CommonArrayFS {
+public interface ByteArrayFS extends CommonArrayFS<Byte> {
/**
* Get the i-th string from the array.
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/CommonArrayFS.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/CommonArrayFS.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/CommonArrayFS.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/CommonArrayFS.java Tue Oct 17 13:11:47 2017
@@ -21,8 +21,10 @@ package org.apache.uima.cas;
/**
* Common parts of the Array interfaces.
+ * Doesn't implement AbstactNonModifiableCollection because
+ * the specializations of things like toArray using primitives don't work
*/
-public interface CommonArrayFS extends FeatureStructure {
+public interface CommonArrayFS<E> extends FeatureStructure {
/**
* Return the size of the array.
@@ -105,5 +107,12 @@ public interface CommonArrayFS extends F
* Copy values from another array of the same kind
* @param v the other array
*/
- void copyValuesFrom(CommonArrayFS v);
+ void copyValuesFrom(CommonArrayFS<E> v);
+
+ /**
+ * @return true if the array is empty
+ */
+ default boolean isEmpty() {
+ return size() == 0;
+ }
}
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/DoubleArrayFS.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/DoubleArrayFS.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/DoubleArrayFS.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/DoubleArrayFS.java Tue Oct 17 13:11:47 2017
@@ -25,7 +25,7 @@ package org.apache.uima.cas;
*
*
*/
-public interface DoubleArrayFS extends CommonArrayFS {
+public interface DoubleArrayFS extends CommonArrayFS<Double> {
/**
* Get the i-th element from the array.
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/FSIndex.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/FSIndex.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/FSIndex.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/FSIndex.java Tue Oct 17 13:11:47 2017
@@ -19,6 +19,7 @@
package org.apache.uima.cas;
+import java.util.Collection;
import java.util.stream.Stream;
/**
@@ -64,7 +65,7 @@ import java.util.stream.Stream;
* @param T the topmost type in this Index
*
*/
-public interface FSIndex<T extends FeatureStructure> extends Iterable<T> {
+public interface FSIndex<T extends FeatureStructure> extends Collection<T> {
/**
* Indexing strategy: sorted index. A sorted index contains all elements, including duplicates.
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/FloatArrayFS.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/FloatArrayFS.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/FloatArrayFS.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/FloatArrayFS.java Tue Oct 17 13:11:47 2017
@@ -26,7 +26,7 @@ package org.apache.uima.cas;
*
*
*/
-public interface FloatArrayFS extends CommonArrayFS {
+public interface FloatArrayFS extends CommonArrayFS<Float> {
/**
* Get the element at position <code>index</code>.
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/IntArrayFS.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/IntArrayFS.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/IntArrayFS.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/IntArrayFS.java Tue Oct 17 13:11:47 2017
@@ -24,7 +24,7 @@ package org.apache.uima.cas;
* {@link org.apache.uima.cas.CAS#createIntArrayFS CAS.createIntArrayFS(int)} or
* new IntegerArray(aJCas, length)
*/
-public interface IntArrayFS extends CommonArrayFS {
+public interface IntArrayFS extends CommonArrayFS<Integer> {
/**
* Get the element at position <code>index</code>.
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/LongArrayFS.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/LongArrayFS.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/LongArrayFS.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/LongArrayFS.java Tue Oct 17 13:11:47 2017
@@ -24,7 +24,7 @@ package org.apache.uima.cas;
* {@link org.apache.uima.cas.CAS#createLongArrayFS CAS.createLongArrayFS(int)}
* or new LongArray(aJCas, length)
*/
-public interface LongArrayFS extends CommonArrayFS {
+public interface LongArrayFS extends CommonArrayFS<Long> {
/**
* Get the i-th element from the array.
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/ShortArrayFS.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/ShortArrayFS.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/ShortArrayFS.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/ShortArrayFS.java Tue Oct 17 13:11:47 2017
@@ -24,7 +24,7 @@ package org.apache.uima.cas;
* {@link org.apache.uima.cas.CAS#createShortArrayFS CAS.createShortArrayFS(int)} or
* new ShortArray(aJCas, length)
*/
-public interface ShortArrayFS extends CommonArrayFS {
+public interface ShortArrayFS extends CommonArrayFS<Short> {
/**
* Get the i-th element from the array.
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/StringArrayFS.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/StringArrayFS.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/StringArrayFS.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/StringArrayFS.java Tue Oct 17 13:11:47 2017
@@ -24,7 +24,7 @@ package org.apache.uima.cas;
* {@link org.apache.uima.cas.CAS#createStringArrayFS CAS.createStringArrayFS(int)}
* or new StringArray(aJCas, length)
*/
-public interface StringArrayFS extends CommonArrayFS {
+public interface StringArrayFS extends CommonArrayFS<String> {
/**
* Get the i-th string from the array.
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ArrayFSImpl.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ArrayFSImpl.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ArrayFSImpl.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ArrayFSImpl.java Tue Oct 17 13:11:47 2017
@@ -19,6 +19,7 @@
package org.apache.uima.jcas.cas;
import org.apache.uima.cas.ArrayFS;
+import org.apache.uima.cas.FeatureStructure;
/**
* For backwards compatibility with V2, only
@@ -26,6 +27,6 @@ import org.apache.uima.cas.ArrayFS;
* @deprecated use FSArray instead
*/
@Deprecated
-public interface ArrayFSImpl extends ArrayFS {
+public interface ArrayFSImpl<E extends FeatureStructure> extends ArrayFS<E> {
}
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/BooleanArray.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/BooleanArray.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/BooleanArray.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/BooleanArray.java Tue Oct 17 13:11:47 2017
@@ -23,7 +23,6 @@ import java.util.Arrays;
import java.util.Iterator;
import java.util.NoSuchElementException;
-import org.apache.uima.cas.BooleanArrayFS;
import org.apache.uima.cas.CAS;
import org.apache.uima.cas.CommonArrayFS;
import org.apache.uima.cas.impl.BooleanArrayFSImpl;
@@ -33,7 +32,7 @@ import org.apache.uima.jcas.JCas;
import org.apache.uima.jcas.JCasRegistry;
/** JCas class model for BooleanArray */
-public final class BooleanArray extends TOP implements CommonPrimitiveArray, BooleanArrayFSImpl, Iterable<Boolean> {
+public final class BooleanArray extends TOP implements CommonPrimitiveArray<Boolean>, BooleanArrayFSImpl, Iterable<Boolean> {
/* public static string for use where constants are needed, e.g. in some Java Annotations */
public final static String _TypeName = CAS.TYPE_NAME_BOOLEAN_ARRAY;
@@ -172,7 +171,7 @@ public final class BooleanArray extends
* @see org.apache.uima.jcas.cas.CommonArray#copyValuesFrom(org.apache.uima.jcas.cas.CommonArray)
*/
@Override
- public void copyValuesFrom(CommonArrayFS v) {
+ public void copyValuesFrom(CommonArrayFS<Boolean> v) {
BooleanArray bv = (BooleanArray) v;
System.arraycopy(bv.theArray, 0, theArray, 0, theArray.length);
_casView.maybeLogArrayUpdates(this, 0, size());
@@ -216,4 +215,5 @@ public final class BooleanArray extends
booleanArray.copyFromArray(a, 0, 0, a.length);
return booleanArray;
}
+
}
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ByteArray.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ByteArray.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ByteArray.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ByteArray.java Tue Oct 17 13:11:47 2017
@@ -23,7 +23,6 @@ import java.util.Arrays;
import java.util.Iterator;
import java.util.NoSuchElementException;
-import org.apache.uima.cas.ByteArrayFS;
import org.apache.uima.cas.CAS;
import org.apache.uima.cas.CommonArrayFS;
import org.apache.uima.cas.impl.ByteArrayFSImpl;
@@ -33,7 +32,7 @@ import org.apache.uima.jcas.JCas;
import org.apache.uima.jcas.JCasRegistry;
/** JCas class model for ByteArray */
-public final class ByteArray extends TOP implements CommonPrimitiveArray, ByteArrayFSImpl, Iterable<Byte> {
+public final class ByteArray extends TOP implements CommonPrimitiveArray<Byte>, ByteArrayFSImpl, Iterable<Byte> {
/* public static string for use where constants are needed, e.g. in some Java Annotations */
public final static String _TypeName = CAS.TYPE_NAME_BYTE_ARRAY;
@@ -169,7 +168,7 @@ public final class ByteArray extends TOP
* @see org.apache.uima.jcas.cas.CommonArray#copyValuesFrom(org.apache.uima.jcas.cas.CommonArray)
*/
@Override
- public void copyValuesFrom(CommonArrayFS v) {
+ public void copyValuesFrom(CommonArrayFS<Byte> v) {
ByteArray bv = (ByteArray) v;
System.arraycopy(bv.theArray, 0, theArray, 0, theArray.length);
_casView.maybeLogArrayUpdates(this, 0, size());
@@ -213,4 +212,16 @@ public final class ByteArray extends TOP
return byteArray;
}
+ /**
+ * @param item the item to see if is in the array
+ * @return true if the item is in the array
+ */
+ public boolean contains(byte item) {
+ for (byte b : theArray) {
+ if (b == item) {
+ return true;
+ }
+ }
+ return false;
+ }
}
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/CommonList.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/CommonList.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/CommonList.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/CommonList.java Tue Oct 17 13:11:47 2017
@@ -30,7 +30,6 @@ import org.apache.uima.cas.CAS;
import org.apache.uima.cas.CASRuntimeException;
import org.apache.uima.cas.FeatureStructure;
import org.apache.uima.cas.impl.CasSerializerSupport;
-import org.apache.uima.cas.impl.FeatureStructureImplC;
import org.apache.uima.cas.impl.XmiSerializationSharedData;
import org.apache.uima.cas.impl.XmiSerializationSharedData.OotsElementData;
import org.apache.uima.internal.util.XmlAttribute;
@@ -289,5 +288,12 @@ public interface CommonList extends Feat
anyListToOutput(sharedData, cds, s -> list.add(s));
return list;
}
+
+ /**
+ * @return true if this object represents an empty list
+ */
+ default boolean isEmpty() {
+ return this instanceof EmptyList;
+ }
}
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/CommonPrimitiveArray.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/CommonPrimitiveArray.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/CommonPrimitiveArray.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/CommonPrimitiveArray.java Tue Oct 17 13:11:47 2017
@@ -26,7 +26,7 @@ import org.apache.uima.cas.CommonArrayFS
* boolean, byte, short, int, long, float, double, String, JavaObject
* Internal Use Only.
*/
-public interface CommonPrimitiveArray extends CommonArrayFS {
+public interface CommonPrimitiveArray<T> extends CommonArrayFS<T> {
/**
* Internal Use Only.
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/DoubleArray.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/DoubleArray.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/DoubleArray.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/DoubleArray.java Tue Oct 17 13:11:47 2017
@@ -35,7 +35,7 @@ import org.apache.uima.jcas.JCas;
import org.apache.uima.jcas.JCasRegistry;
/** JCas class model for DoubleArray */
-public final class DoubleArray extends TOP implements CommonPrimitiveArray, DoubleArrayFSImpl, Iterable<Double> {
+public final class DoubleArray extends TOP implements CommonPrimitiveArray<Double>, DoubleArrayFSImpl, Iterable<Double> {
/* public static string for use where constants are needed, e.g. in some Java Annotations */
public final static String _TypeName = CAS.TYPE_NAME_DOUBLE_ARRAY;
@@ -250,4 +250,19 @@ public final class DoubleArray extends T
action.accept(d);
}
}
+
+
+ /**
+ * @param item the item to see if is in the array
+ * @return true if the item is in the array
+ */
+ public boolean contains(double item) {
+ for (double b : theArray) {
+ if (b == item) {
+ return true;
+ }
+ }
+ return false;
+ }
+
}
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyFSList.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyFSList.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyFSList.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyFSList.java Tue Oct 17 13:11:47 2017
@@ -26,7 +26,7 @@ import org.apache.uima.cas.impl.TypeImpl
import org.apache.uima.jcas.JCas;
import org.apache.uima.jcas.JCasRegistry;
-public class EmptyFSList extends FSList implements EmptyList {
+public class EmptyFSList<T extends TOP> extends FSList<T> implements EmptyList {
/* public static string for use where constants are needed, e.g. in some Java Annotations */
public final static String _TypeName = CAS.TYPE_NAME_EMPTY_FS_LIST;
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSArray.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSArray.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSArray.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSArray.java Tue Oct 17 13:11:47 2017
@@ -36,7 +36,10 @@ import org.apache.uima.jcas.JCas;
import org.apache.uima.jcas.JCasRegistry;
/** Java Class model for Cas FSArray type */
-public final class FSArray extends TOP implements Iterable<TOP>, ArrayFSImpl, SelectViaCopyToArray {
+public final class FSArray<T extends FeatureStructure> extends TOP
+ implements ArrayFSImpl<T>,
+ Iterable<T>,
+ SelectViaCopyToArray {
/* public static string for use where constants are needed, e.g. in some Java Annotations */
public final static String _TypeName = CAS.TYPE_NAME_FS_ARRAY;
@@ -55,6 +58,7 @@ public final class FSArray extends TOP i
* @return the type array index
*/
// can't be factored - refs locally defined field
+ @Override
public int getTypeIndexID() {
return typeIndexID;
}
@@ -107,8 +111,9 @@ public final class FSArray extends TOP i
/** return the indexed value from the corresponding Cas FSArray as a Java Model object. */
- public TOP get(int i) {
- return _maybeGetPearFs(theArray[i]);
+ @Override
+ public <U extends TOP> U get(int i) {
+ return (U) _maybeGetPearFs(theArray[i]);
}
// internal use
@@ -117,13 +122,14 @@ public final class FSArray extends TOP i
}
/** updates the Cas, setting the indexed value with the corresponding Cas FeatureStructure. */
- public void set(int i, FeatureStructure v) {
- TOP vt = (TOP) v;
- if (vt != null && _casView.getBaseCAS() != vt._casView.getBaseCAS()) {
+ @Override
+ public void set(int i, T av) {
+ TOP v = (TOP) av;
+ if (v != null && _casView.getBaseCAS() != v._casView.getBaseCAS()) {
/** Feature Structure {0} belongs to CAS {1}, may not be set as the value of an array or list element in a different CAS {2}.*/
- throw new CASRuntimeException(CASRuntimeException.FS_NOT_MEMBER_OF_CAS, vt, vt._casView, _casView);
+ throw new CASRuntimeException(CASRuntimeException.FS_NOT_MEMBER_OF_CAS, v, v._casView, _casView);
}
- theArray[i] = _maybeGetBaseForPearFs(vt);
+ theArray[i] = _maybeGetBaseForPearFs(v);
_casView.maybeLogArrayUpdate(this, null, i);
}
@@ -134,6 +140,7 @@ public final class FSArray extends TOP i
}
/** return the size of the array. */
+ @Override
public int size() {
return theArray.length;
}
@@ -141,7 +148,8 @@ public final class FSArray extends TOP i
/**
* @see org.apache.uima.cas.ArrayFS#copyFromArray(FeatureStructure[], int, int, int)
*/
- public void copyFromArray(FeatureStructure[] src, int srcPos, int destPos, int length) {
+ @Override
+ public <U extends T> void copyFromArray(U[] src, int srcPos, int destPos, int length) {
int srcEnd = srcPos + length;
int destEnd = destPos + length;
if (srcPos < 0 ||
@@ -161,6 +169,7 @@ public final class FSArray extends TOP i
/**
* @see org.apache.uima.cas.ArrayFS#copyToArray(int, FeatureStructure[], int, int)
*/
+ @Override
public void copyToArray(int srcPos, FeatureStructure[] dest, int destPos, int length) {
int srcEnd = srcPos + length;
int destEnd = destPos + length;
@@ -171,24 +180,27 @@ public final class FSArray extends TOP i
String.format("FSArray.copyToArray, srcPos: %,d destPos: %,d length: %,d", srcPos, destPos, length));
}
for (;srcPos < srcEnd && destPos < destEnd;) {
- dest[destPos++] = _maybeGetPearFs(get(srcPos++));
+ dest[destPos++] = _maybeGetPearFs((TOP) get(srcPos++));
}
}
/**
* @see org.apache.uima.cas.ArrayFS#toArray()
*/
+ @Override
public FeatureStructure[] toArray() {
FeatureStructure[] r = new FeatureStructure[size()];
copyToArray(0, r, 0, size());
return r;
}
+ @Override
public FeatureStructure[] _toArrayForSelect() { return toArray(); }
/**
* Not supported, will throw UnsupportedOperationException
*/
+ @Override
public void copyFromArray(String[] src, int srcPos, int destPos, int length) {
throw new UnsupportedOperationException();
}
@@ -210,6 +222,7 @@ public final class FSArray extends TOP i
* <code>length > size()</code> or
* <code>destPos + length > destArray.length</code>.
*/
+ @Override
public void copyToArray(int srcPos, String[] dest, int destPos, int length) {
_casView.checkArrayBounds(theArray.length, srcPos, length);
for (int i = 0; i < length; i++) {
@@ -230,8 +243,8 @@ public final class FSArray extends TOP i
* no conversion to Pear trampolines done
*/
@Override
- public void copyValuesFrom(CommonArrayFS v) {
- FSArray bv = (FSArray) v;
+ public void copyValuesFrom(CommonArrayFS<T> v) {
+ FSArray<T> bv = (FSArray<T>) v;
System.arraycopy(bv.theArray, 0, theArray, 0, theArray.length);
_casView.maybeLogArrayUpdates(this, 0, size());
}
@@ -242,15 +255,15 @@ public final class FSArray extends TOP i
* @param a -
* @return -
*/
- public static FSArray create(JCas jcas, FeatureStructure[] a) {
- FSArray fsa = new FSArray(jcas, a.length);
+ public static <U extends FeatureStructure> FSArray<U> create(JCas jcas, U[] a) {
+ FSArray<U> fsa = new FSArray<U>(jcas, a.length);
fsa.copyFromArray(a, 0, 0, a.length);
return fsa;
}
@Override
- public Iterator<TOP> iterator() {
- return new Iterator<TOP>() {
+ public Iterator<T> iterator() {
+ return new Iterator<T>() {
int i = 0;
@Override
@@ -259,21 +272,57 @@ public final class FSArray extends TOP i
}
@Override
- public TOP next() {
+ public T next() {
if (!hasNext()) {
throw new NoSuchElementException();
}
- return get(i++); // does trampoline conversion
+ return (T) get(i++); // does trampoline conversion
}
};
}
@Override
- public Spliterator<TOP> spliterator() {
- return Arrays.spliterator(theArray);
+ public Spliterator<T> spliterator() {
+ return (Spliterator<T>) Arrays.spliterator(theArray);
}
- public <T extends TOP> Stream<T> stream() {
- return (Stream<T>) StreamSupport.stream(spliterator(), false);
+ public Stream<T> stream() {
+ return StreamSupport.stream(spliterator(), false);
+ }
+
+ public boolean contains(Object o) {
+ if (null == o) {
+ for (TOP e : theArray) {
+ if (e == null) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ if (!(o instanceof TOP)) {
+ return false;
+ }
+ TOP item = (TOP) o;
+ for (TOP e : theArray) {
+ if (item.equals(e)) {
+ return true;
+ }
+ }
+ return false;
}
+
+ public Object[] toArray(Object[] a) {
+ Object[] r = new Object[size()];
+ System.arraycopy(theArray, 0, r, 0, size());
+ return r;
+ }
+
+ public TOP[] toArray(TOP[] a) {
+ TOP[] r = new TOP[size()];
+ System.arraycopy(theArray, 0, r, 0, size());
+ return r;
+ }
+
+
}
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSHashSet.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSHashSet.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSHashSet.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSHashSet.java Tue Oct 17 13:11:47 2017
@@ -153,13 +153,13 @@ public class FSHashSet <T extends TOP> e
* @generated
* @return value of the feature
*/
- private FSArray getFsArray() { return (FSArray)(_getFeatureValueNc(wrapGetIntCatchException(_FH_fsArray)));}
+ private FSArray<T> getFsArray() { return (FSArray<T>)(_getFeatureValueNc(wrapGetIntCatchException(_FH_fsArray)));}
/** setter for fsArray - sets internal use - holds the set of Feature Structures
* @generated
* @param v value to set into the feature
*/
- private void setFsArray(FSArray v) {
+ private void setFsArray(FSArray<T> v) {
_setFeatureValueNcWj(wrapGetIntCatchException(_FH_fsArray), v);
}
@@ -180,11 +180,10 @@ public class FSHashSet <T extends TOP> e
private void lazyInit() {
isPendingInit = false;
fsHashSet.clear();
- FSArray a = getFsArray();
- if (a != null) {
- for (TOP fs : a) {
- fsHashSet.add((T) fs);
- }
+ FSArray<T> a = getFsArray();
+
+ for (T fs : a) {
+ fsHashSet.add((T) fs);
}
}
@@ -195,7 +194,7 @@ public class FSHashSet <T extends TOP> e
public void _save_to_cas_data() {
if (isSaveNeeded) {
isSaveNeeded = false;
- FSArray fsa = getFsArray();
+ FSArray<T> fsa = getFsArray();
if (fsa == null || fsa.size() != fsHashSet.size()) {
fsa = new FSArray(_casView.getJCasImpl(), fsHashSet.size());
setFsArray(fsa);
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSList.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSList.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSList.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSList.java Tue Oct 17 13:11:47 2017
@@ -21,8 +21,6 @@ package org.apache.uima.jcas.cas;
import java.util.Collections;
import java.util.Iterator;
-import java.util.Spliterator;
-import java.util.Spliterators;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
@@ -35,7 +33,7 @@ import org.apache.uima.cas.impl.SelectFS
import org.apache.uima.cas.impl.TypeImpl;
import org.apache.uima.jcas.JCas;
-public abstract class FSList extends TOP implements CommonList, Iterable<TOP> {
+public abstract class FSList<T extends TOP> extends TOP implements CommonList, Iterable<T> {
// Never called.
protected FSList() {// Disable default constructor
@@ -56,20 +54,20 @@ public abstract class FSList extends TOP
super(t, c);
}
- public TOP getNthElement(int i) {
- CommonList node = getNthNode(i);
+ public T getNthElement(int i) {
+ FSList<T> node = (FSList<T>) getNthNode(i);
if (node instanceof EmptyFSList) {
throw new CASRuntimeException(CASRuntimeException.JCAS_GET_NTH_PAST_END, Integer.toString(i));
}
- return ((NonEmptyFSList)node).getHead();
+ return ((NonEmptyFSList<T>)node).getHead();
}
- public NonEmptyFSList createNonEmptyNode() {
- return new NonEmptyFSList(this._casView.getJCasImpl());
+ public NonEmptyFSList<T> createNonEmptyNode() {
+ return new NonEmptyFSList<T>(this._casView.getJCasImpl());
}
- public NonEmptyFSList pushNode() {
- NonEmptyFSList n = createNonEmptyNode();
+ public NonEmptyFSList<T> pushNode() {
+ NonEmptyFSList<T> n = createNonEmptyNode();
n.setTail(this);
return n;
}
@@ -79,7 +77,7 @@ public abstract class FSList extends TOP
* @param <T> generic type being selected
* @return a new instance of SelectFSs
*/
- public <T extends FeatureStructure> SelectFSs<T> select() {
+ public <U extends T> SelectFSs<U> select() {
return new SelectFSs_impl<>(this);
}
@@ -89,7 +87,7 @@ public abstract class FSList extends TOP
* @param <T> generic type being selected
* @return a new instance of SelectFSs
*/
- public <T extends FeatureStructure> SelectFSs<T> select(Type filterByType) {
+ public <U extends T> SelectFSs<U> select(Type filterByType) {
return new SelectFSs_impl<>(this).type(filterByType);
}
@@ -99,7 +97,7 @@ public abstract class FSList extends TOP
* @param <T> generic type being selected
* @return a new instance of SelectFSs
*/
- public <T extends FeatureStructure> SelectFSs<T> select(Class<T> filterByType) {
+ public <U extends T> SelectFSs<U> select(Class<U> filterByType) {
return new SelectFSs_impl<>(this).type(filterByType);
}
@@ -109,7 +107,7 @@ public abstract class FSList extends TOP
* @param <T> generic type being selected
* @return a new instance of SelectFSs
*/
- public <T extends FeatureStructure> SelectFSs<T> select(int filterByType) {
+ public <U extends T> SelectFSs<U> select(int filterByType) {
return new SelectFSs_impl<>(this).type(filterByType);
}
@@ -119,7 +117,7 @@ public abstract class FSList extends TOP
* @param <T> generic type being selected
* @return a new instance of SelectFSs
*/
- public <T extends FeatureStructure> SelectFSs<T> select(String filterByType) {
+ public <U extends T> SelectFSs<U> select(String filterByType) {
return new SelectFSs_impl<>(this).type(filterByType);
}
@@ -129,20 +127,20 @@ public abstract class FSList extends TOP
* @param a the array of Feature Structures to populate the list with
* @return an FSList, with the elements from the array
*/
- public static FSList create(JCas jcas, FeatureStructure[] a) {
- FSList fsl = jcas.getCasImpl().emptyFSList();
+ public static <U extends TOP> FSList<U> create(JCas jcas, FeatureStructure[] a) {
+ FSList<TOP> fsl = jcas.getCasImpl().emptyFSList();
for (int i = a.length - 1; i >= 0; i--) {
fsl = fsl.push((TOP) a[i]);
}
- return fsl;
+ return (FSList<U>) fsl;
}
/* (non-Javadoc)
* @see java.lang.Iterable#iterator()
*/
@Override
- public Iterator<TOP> iterator() {
- return Collections.emptyIterator(); // overridden by NonEmptyFSList
+ public Iterator<T> iterator() {
+ return Collections.<T>emptyIterator(); // overridden by NonEmptyFSList
}
/**
@@ -150,15 +148,15 @@ public abstract class FSList extends TOP
* @param item the item to push onto the list
* @return the new list, with this item as the head value of the first element
*/
- public NonEmptyFSList push(TOP item) {
- return new NonEmptyFSList(_casView.getJCasImpl(), item, this);
+ public NonEmptyFSList<T> push(T item) {
+ return new NonEmptyFSList<T>(_casView.getJCasImpl(), item, this);
}
/**
* @param <T> generic type being returned
* @return a stream over this FSList
*/
- public <T extends TOP> Stream<T> stream() {
+ public Stream<T> stream() {
return (Stream<T>) StreamSupport.stream(spliterator(), false);
}
@@ -166,4 +164,16 @@ public abstract class FSList extends TOP
public EmptyFSList emptyList() {
return this._casView.emptyFSList();
}
+
+ public boolean contains(T v) {
+ FSList<T> node = this;
+ while (node instanceof NonEmptyFSList) {
+ NonEmptyFSList<T> n = (NonEmptyFSList<T>) node;
+ if (n.getHead() == v) {
+ return true;
+ }
+ node = n.getTail();
+ }
+ return false;
+ }
}
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatArray.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatArray.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatArray.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatArray.java Tue Oct 17 13:11:47 2017
@@ -20,6 +20,8 @@
package org.apache.uima.jcas.cas;
import java.util.Arrays;
+import java.util.Iterator;
+import java.util.NoSuchElementException;
import org.apache.uima.cas.CAS;
import org.apache.uima.cas.CommonArrayFS;
@@ -30,7 +32,10 @@ import org.apache.uima.jcas.JCas;
import org.apache.uima.jcas.JCasRegistry;
/** Java Cas model for Cas FloatArray. */
-public final class FloatArray extends TOP implements CommonPrimitiveArray, FloatArrayFSImpl {
+public final class FloatArray extends TOP
+ implements CommonPrimitiveArray<Float>,
+ Iterable<Float>,
+ FloatArrayFSImpl {
/* public static string for use where constants are needed, e.g. in some Java Annotations */
public final static String _TypeName = CAS.TYPE_NAME_FLOAT_ARRAY;
@@ -211,4 +216,43 @@ public final class FloatArray extends TO
floatArray.copyFromArray(a, 0, 0, a.length);
return floatArray;
}
+
+ /* (non-Javadoc)
+ * @see java.lang.Iterable#iterator()
+ */
+ @Override
+ public Iterator<Float> iterator() {
+ return new Iterator<Float>() {
+
+ int i = 0;
+
+ @Override
+ public boolean hasNext() {
+ return i < size();
+ }
+
+ @Override
+ public Float next() {
+ if (!hasNext())
+ throw new NoSuchElementException();
+ return get(i++);
+ }
+
+ };
+ }
+
+
+ /**
+ * @param item the item to see if is in the array
+ * @return true if the item is in the array
+ */
+ public boolean contains(float item) {
+ for (float b : theArray) {
+ if (b == item) {
+ return true;
+ }
+ }
+ return false;
+ }
+
}
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatList.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatList.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatList.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatList.java Tue Oct 17 13:11:47 2017
@@ -21,8 +21,9 @@ package org.apache.uima.jcas.cas;
import java.util.Collections;
import java.util.Iterator;
+import java.util.stream.Stream;
+import java.util.stream.StreamSupport;
-import org.apache.uima.cas.FeatureStructure;
import org.apache.uima.cas.impl.CASImpl;
import org.apache.uima.cas.impl.TypeImpl;
import org.apache.uima.jcas.JCas;
@@ -93,5 +94,20 @@ public abstract class FloatList extends
}
return floatList;
}
-
+
+ public Stream<Float> stream() {
+ return StreamSupport.stream(spliterator(), false);
+ }
+
+ public boolean contains(float v) {
+ FloatList node = this;
+ while (node instanceof NonEmptyFloatList) {
+ NonEmptyFloatList n = (NonEmptyFloatList) node;
+ if (n.getHead() == v) {
+ return true;
+ }
+ node = n.getTail();
+ }
+ return false;
+ }
}
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerArray.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerArray.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerArray.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerArray.java Tue Oct 17 13:11:47 2017
@@ -35,7 +35,7 @@ import org.apache.uima.jcas.JCas;
import org.apache.uima.jcas.JCasRegistry;
/** The Java Class model corresponding to the Cas IntegerArray_JCasImpl type. */
-public final class IntegerArray extends TOP implements CommonPrimitiveArray, IntArrayFSImpl, Iterable<Integer> {
+public final class IntegerArray extends TOP implements CommonPrimitiveArray<Integer>, IntArrayFSImpl, Iterable<Integer> {
/* public static string for use where constants are needed, e.g. in some Java Annotations */
public final static String _TypeName = CAS.TYPE_NAME_INTEGER_ARRAY;
@@ -267,4 +267,17 @@ public final class IntegerArray extends
}
+ /**
+ * @param item the item to see if is in the array
+ * @return true if the item is in the array
+ */
+ public boolean contains(int item) {
+ for (int b : theArray) {
+ if (b == item) {
+ return true;
+ }
+ }
+ return false;
+ }
+
}
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerArrayList.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerArrayList.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerArrayList.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerArrayList.java Tue Oct 17 13:11:47 2017
@@ -56,6 +56,7 @@ import org.apache.uima.jcas.JCasRegistry
* - it is adjustable, like ArrayList
*
* Implementation notes:
+ * - implements Iterable + stream, not Collection, because stream returns IntStream
* - Uses UimaSerializable APIs
* - two implementations of the array list:
* -- one uses the original IntegerArray, via a variant of the asList wrapper that returns ints
@@ -68,7 +69,7 @@ import org.apache.uima.jcas.JCasRegistry
public class IntegerArrayList extends TOP implements
Iterable<Integer>,
- UimaSerializable, CommonArrayFS,
+ UimaSerializable, CommonArrayFS<Integer>,
RandomAccess, Cloneable {
/** @generated
@@ -340,7 +341,7 @@ public class IntegerArrayList extends TO
* @see org.apache.uima.jcas.cas.CommonArray#copyValuesFrom(org.apache.uima.jcas.cas.CommonArray)
*/
@Override
- public void copyValuesFrom(CommonArrayFS v) {
+ public void copyValuesFrom(CommonArrayFS<Integer> v) {
clear();
Spliterator.OfInt si;
@@ -371,14 +372,6 @@ public class IntegerArrayList extends TO
public FeatureStructureImplC _superClone() {return clone();} // enable common clone
/**
- * @return -
- * @see java.util.ArrayList#isEmpty()
- */
- public boolean isEmpty() {
- return size() == 0;
- }
-
- /**
* @param i -
* @return -
*/
@@ -569,8 +562,6 @@ public class IntegerArrayList extends TO
action.accept(ii.nextInt());
}
}
-
-
}
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerList.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerList.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerList.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerList.java Tue Oct 17 13:11:47 2017
@@ -21,6 +21,10 @@ package org.apache.uima.jcas.cas;
import java.util.NoSuchElementException;
import java.util.PrimitiveIterator.OfInt;
+import java.util.Spliterator;
+import java.util.Spliterators;
+import java.util.stream.Stream;
+import java.util.stream.StreamSupport;
import org.apache.uima.cas.impl.CASImpl;
import org.apache.uima.cas.impl.TypeImpl;
@@ -79,6 +83,7 @@ public abstract class IntegerList extend
/* (non-Javadoc)
* @see java.lang.Iterable#iterator()
+ * overridden by NonEmptyIntegerList
*/
@Override
public OfInt iterator() {
@@ -112,4 +117,25 @@ public abstract class IntegerList extend
}
return integerList;
}
+
+ public Stream<Integer> stream() {
+ return StreamSupport.stream(spliterator(), false);
+ }
+
+ @Override
+ public Spliterator.OfInt spliterator() {
+ return Spliterators.spliterator(iterator(), Long.MAX_VALUE, 0);
+ }
+
+ public boolean contains(int v) {
+ IntegerList node = this;
+ while (node instanceof NonEmptyIntegerList) {
+ NonEmptyIntegerList n = (NonEmptyIntegerList) node;
+ if (n.getHead() == v) {
+ return true;
+ }
+ node = n.getTail();
+ }
+ return false;
+ }
}
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/LongArray.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/LongArray.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/LongArray.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/LongArray.java Tue Oct 17 13:11:47 2017
@@ -35,7 +35,7 @@ import org.apache.uima.jcas.JCas;
import org.apache.uima.jcas.JCasRegistry;
/** JCas class model for LongArray */
-public final class LongArray extends TOP implements CommonPrimitiveArray, LongArrayFSImpl, Iterable<Long> {
+public final class LongArray extends TOP implements CommonPrimitiveArray<Long>, LongArrayFSImpl, Iterable<Long> {
/* public static string for use where constants are needed, e.g. in some Java Annotations */
public final static String _TypeName = CAS.TYPE_NAME_LONG_ARRAY;
@@ -254,4 +254,18 @@ public final class LongArray extends TOP
}
}
+
+ /**
+ * @param item the item to see if is in the array
+ * @return true if the item is in the array
+ */
+ public boolean contains(long item) {
+ for (long b : theArray) {
+ if (b == item) {
+ return true;
+ }
+ }
+ return false;
+ }
+
}
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyFSList.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyFSList.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyFSList.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyFSList.java Tue Oct 17 13:11:47 2017
@@ -33,7 +33,7 @@ import org.apache.uima.cas.impl.TypeSyst
import org.apache.uima.jcas.JCas;
import org.apache.uima.jcas.JCasRegistry;
-public class NonEmptyFSList extends FSList implements Iterable<TOP>, NonEmptyList {
+public class NonEmptyFSList<T extends TOP> extends FSList<T> implements NonEmptyList {
/* public static string for use where constants are needed, e.g. in some Java Annotations */
public final static String _TypeName = CAS.TYPE_NAME_NON_EMPTY_FS_LIST;
@@ -86,7 +86,7 @@ public class NonEmptyFSList extends FSLi
* @param head -
* @param tail -
*/
- public NonEmptyFSList(JCas jcas, TOP head, CommonList tail) {
+ public NonEmptyFSList(JCas jcas, T head, CommonList tail) {
this(jcas);
setHead(head);
setTail(tail);
@@ -97,30 +97,29 @@ public class NonEmptyFSList extends FSLi
* @param jcas -
* @param head -
*/
- public NonEmptyFSList(JCas jcas, TOP head) {
+ public NonEmptyFSList(JCas jcas, T head) {
this(jcas, head, jcas.getCasImpl().emptyFSList());
}
// *------------------*
// * Feature: head
/* getter for head * */
- public TOP getHead() { return _getFeatureValueNc(wrapGetIntCatchException(_FH_head)); }
+ public T getHead() { return (T) _getFeatureValueNc(wrapGetIntCatchException(_FH_head)); }
/* setter for head * */
- public void setHead(FeatureStructure v) {
- TOP vt = (TOP) v;
+ public void setHead(T vt) {
if (vt != null && _casView.getBaseCAS() != vt._casView.getBaseCAS()) {
/** Feature Structure {0} belongs to CAS {1}, may not be set as the value of an array or list element in a different CAS {2}.*/
throw new CASRuntimeException(CASRuntimeException.FS_NOT_MEMBER_OF_CAS, vt, vt._casView, _casView);
}
- _setFeatureValueNcWj(wrapGetIntCatchException(_FH_head), v); }
+ _setFeatureValueNcWj(wrapGetIntCatchException(_FH_head), vt); }
// public void _setHeadNcNj(TOP v) { _F_head = v; }
// *------------------*
// * Feature: tail
/* getter for tail * */
- public FSList getTail() { return (FSList) _getFeatureValueNc(wrapGetIntCatchException(_FH_tail)); }
+ public FSList<T> getTail() { return (FSList<T>) _getFeatureValueNc(wrapGetIntCatchException(_FH_tail)); }
/* setter for tail * */
public void setTail(FSList v) {
@@ -135,8 +134,8 @@ public class NonEmptyFSList extends FSLi
setTail((FSList) v);
}
- public TOP getNthElement(int i) {
- return ((NonEmptyFSList)getNonEmptyNthNode(i)).getHead();
+ public T getNthElement(int i) {
+ return ((NonEmptyFSList<T>)getNonEmptyNthNode(i)).getHead();
}
/**
@@ -144,16 +143,16 @@ public class NonEmptyFSList extends FSLi
* @param item to be inserted
* @return the NonEmptyFSList node created
*/
- public NonEmptyFSList add(FeatureStructure item) {
- FSList tail = getTail();
- NonEmptyFSList node = tail.push((TOP) item);
+ public NonEmptyFSList<T> add(T item) {
+ FSList<T> tail = getTail();
+ NonEmptyFSList<T> node = tail.push(item);
setTail(node);
return node;
}
@Override
- public Iterator<TOP> iterator() {
- return new Iterator<TOP>() {
+ public Iterator<T> iterator() {
+ return new Iterator<T>() {
FSList node = NonEmptyFSList.this;
@@ -163,12 +162,12 @@ public class NonEmptyFSList extends FSLi
}
@Override
- public TOP next() {
+ public T next() {
if (!hasNext()) {
throw new NoSuchElementException();
}
- NonEmptyFSList nn = (NonEmptyFSList)node;
- TOP element = nn.getHead();
+ NonEmptyFSList<T> nn = (NonEmptyFSList<T>)node;
+ T element = nn.getHead();
node = nn.getTail();
return element;
}
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyIntegerList.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyIntegerList.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyIntegerList.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyIntegerList.java Tue Oct 17 13:11:47 2017
@@ -21,10 +21,8 @@ package org.apache.uima.jcas.cas;
import java.lang.invoke.CallSite;
import java.lang.invoke.MethodHandle;
-import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;
-import java.util.PrimitiveIterator;
import java.util.PrimitiveIterator.OfInt;
import org.apache.uima.cas.CAS;
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ShortArray.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ShortArray.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ShortArray.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ShortArray.java Tue Oct 17 13:11:47 2017
@@ -25,7 +25,6 @@ import java.util.NoSuchElementException;
import org.apache.uima.cas.CAS;
import org.apache.uima.cas.CommonArrayFS;
-import org.apache.uima.cas.ShortArrayFS;
import org.apache.uima.cas.impl.CASImpl;
import org.apache.uima.cas.impl.ShortArrayFSImpl;
import org.apache.uima.cas.impl.TypeImpl;
@@ -33,7 +32,7 @@ import org.apache.uima.jcas.JCas;
import org.apache.uima.jcas.JCasRegistry;
/** JCas class model for ShortArray */
-public final class ShortArray extends TOP implements CommonPrimitiveArray, ShortArrayFSImpl, Iterable<Short> {
+public final class ShortArray extends TOP implements CommonPrimitiveArray<Short>, ShortArrayFSImpl, Iterable<Short> {
/* public static string for use where constants are needed, e.g. in some Java Annotations */
public final static String _TypeName = CAS.TYPE_NAME_SHORT_ARRAY;
@@ -210,4 +209,18 @@ public final class ShortArray extends TO
return shortArray;
}
+
+ /**
+ * @param item the item to see if is in the array
+ * @return true if the item is in the array
+ */
+ public boolean contains(short item) {
+ for (short b : theArray) {
+ if (b == item) {
+ return true;
+ }
+ }
+ return false;
+ }
+
}
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringArray.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringArray.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringArray.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringArray.java Tue Oct 17 13:11:47 2017
@@ -22,10 +22,10 @@ package org.apache.uima.jcas.cas;
import java.util.Arrays;
import java.util.Iterator;
import java.util.NoSuchElementException;
+import java.util.stream.Stream;
import org.apache.uima.cas.CAS;
import org.apache.uima.cas.CommonArrayFS;
-import org.apache.uima.cas.StringArrayFS;
import org.apache.uima.cas.impl.CASImpl;
import org.apache.uima.cas.impl.StringArrayFSImpl;
import org.apache.uima.cas.impl.TypeImpl;
@@ -34,7 +34,7 @@ import org.apache.uima.jcas.JCas;
import org.apache.uima.jcas.JCasRegistry;
/** JCas class model for StringArray */
-public final class StringArray extends TOP implements Iterable<String>, CommonPrimitiveArray, StringArrayFSImpl {
+public final class StringArray extends TOP implements Iterable<String>, CommonPrimitiveArray<String>, StringArrayFSImpl {
/* public static string for use where constants are needed, e.g. in some Java Annotations */
public final static String _TypeName = CAS.TYPE_NAME_STRING_ARRAY;
@@ -203,5 +203,8 @@ public final class StringArray extends T
return Misc.contains(theArray, v);
}
+ public Stream<String> stream() {
+ return Arrays.stream(theArray);
+ }
}
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringList.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringList.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringList.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringList.java Tue Oct 17 13:11:47 2017
@@ -21,9 +21,12 @@ package org.apache.uima.jcas.cas;
import java.util.Collections;
import java.util.Iterator;
+import java.util.stream.Stream;
+import java.util.stream.StreamSupport;
import org.apache.uima.cas.impl.CASImpl;
import org.apache.uima.cas.impl.TypeImpl;
+import org.apache.uima.internal.util.Misc;
import org.apache.uima.jcas.JCas;
public abstract class StringList extends TOP implements CommonList, Iterable<String> {
@@ -87,4 +90,23 @@ public abstract class StringList extends
return stringList;
}
+ /**
+ * @param <T> generic type being returned
+ * @return a stream over this FSList
+ */
+ public Stream<String> stream() {
+ return StreamSupport.stream(spliterator(), false);
+ }
+
+ public boolean contains(String v) {
+ StringList node = this;
+ while (node instanceof NonEmptyStringList) {
+ NonEmptyStringList n = (NonEmptyStringList) node;
+ if (Misc.equalStrings(v, n.getHead())) {
+ return true;
+ }
+ node = n.getTail();
+ }
+ return false;
+ }
}
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/test/java/org/apache/uima/jcas/test/JCasTest.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/test/java/org/apache/uima/jcas/test/JCasTest.java?rev=1812398&r1=1812397&r2=1812398&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/test/java/org/apache/uima/jcas/test/JCasTest.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/test/java/org/apache/uima/jcas/test/JCasTest.java Tue Oct 17 13:11:47 2017
@@ -825,7 +825,7 @@ public class JCasTest extends TestCase {
}
public void testFSListAPI() {
- FSList sl = new EmptyFSList(jcas);
+ FSList<TOP> sl = new EmptyFSList(jcas);
TOP fs1 = new TOP(jcas);
TOP fs2 = new TOP(jcas);
sl = sl.push(fs2);
@@ -833,6 +833,12 @@ public class JCasTest extends TestCase {
TOP[] fss = new TOP[2];
int i = 0;
+ Iterator<TOP> it = sl.iterator();
+ while (it.hasNext()) {
+ fss[i++] = it.next();
+ }
+
+ i = 0;
for (TOP s : sl) {
fss[i++] = s;
}
@@ -842,13 +848,15 @@ public class JCasTest extends TestCase {
}
public void testFSArrayAPI() {
- FSArray sa = new FSArray(jcas, 2);
+ FSArray<FeatureStructure> sa = new FSArray(jcas, 2);
TOP fs1 = new TOP(jcas);
TOP fs2 = new TOP(jcas);
TOP[] values = {fs1, fs2};
sa.copyFromArray(values, 0, 0, 2);
int i = 0;
+ Iterator<FeatureStructure> it = sa.iterator();
+
for (FeatureStructure s : sa) {
assert(s.equals(values[i++]));
}