Author: schor Date: Mon Nov 2 20:38:36 2015 New Revision: 1712148 URL: http://svn.apache.org/viewvc?rev=1712148&view=rev Log: [UIMA-4663] fix list hierarchy - convert some superclasses to interfaces with default methods, fix the argument types for some methods.
Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/CommonArray.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/CommonList.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyFSList.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyFloatList.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyIntegerList.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSList.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatList.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerList.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyFSList.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyFloatList.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyIntegerList.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyStringList.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringList.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/CommonArray.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/CommonArray.java?rev=1712148&r1=1712147&r2=1712148&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/CommonArray.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/CommonArray.java Mon Nov 2 20:38:36 2015 @@ -31,4 +31,6 @@ public interface CommonArray { int size(); void copyValuesFrom(CommonArray v); + + int get_id(); } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/CommonList.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/CommonList.java?rev=1712148&r1=1712147&r2=1712148&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/CommonList.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/CommonList.java Mon Nov 2 20:38:36 2015 @@ -23,40 +23,18 @@ import java.util.IdentityHashMap; import java.util.Set; import org.apache.uima.cas.CASRuntimeException; -import org.apache.uima.cas.impl.CASImpl; -import org.apache.uima.cas.impl.TypeImpl; -import org.apache.uima.jcas.JCas; /** * This class is the super class of list nodes (both empty and non empty) */ -public abstract class CommonList extends TOP { - - // Never called. - protected CommonList() { // Disable default constructor - } - - public CommonList(JCas jcas) { - super(jcas); - } - - /** - * used by generator - * Make a new AnnotationBase - * @param c - - * @param t - - */ - - public CommonList(TypeImpl t, CASImpl c) { - super(t, c); - } +public interface CommonList { /** * Get the nth node. * @param i - * @return the nth node, which may be an "empty" node */ - public CommonList getNthNode(int i) { + default CommonList getNthNode(int i) { if (this instanceof EmptyList) { throw new CASRuntimeException(CASRuntimeException.JCAS_GET_NTH_ON_EMPTY_LIST, "EmptyList"); } @@ -77,25 +55,21 @@ public abstract class CommonList extends } } - public CommonList getNonEmptyNthNode(int i) { + default CommonList getNonEmptyNthNode(int i) { CommonList node = getNthNode(i); if (node instanceof EmptyList) { throw new CASRuntimeException(CASRuntimeException.JCAS_GET_NTH_PAST_END, i); } return node; } - - public abstract CommonList getTail(); // tail offset changes - - public abstract void setTail(CommonList v); // tail offset changes - + /** * length of a list, handling list loops. * returns the number of unique nodes in the list * @param fs - a list element * @return the number of items in the list */ - public int getLength() { + default int getLength() { // detect loops final Set<CommonList> visited = new IdentityHashMap<CommonList, Boolean>().keySet(); @@ -112,20 +86,20 @@ public abstract class CommonList extends return length; } - public static void setNewValueInExistingNode(CommonList node, String v) { + static void setNewValueInExistingNode(CommonList node, String v) { // node.setHead(null); throw new CASRuntimeException(); // not yet impl } - public abstract CommonList createNonEmptyNode(); - public abstract CommonList createNonEmptyNode(CommonList tail); - public abstract CommonList getEmptyNode(); // returns a shared constant empty node - public abstract String get_headAsString(); + CommonList createNonEmptyNode(); + CommonList createNonEmptyNode(CommonList tail); + CommonList getEmptyNode(); // returns a shared constant empty node + String get_headAsString(); /** * insert a new nonempty node following this node * @return the new node */ - public CommonList insertNode() { + default CommonList insertNode() { assert(this instanceof NonEmptyList); CommonList newNode = createNonEmptyNode(); CommonList tail = getTail(); @@ -134,4 +108,12 @@ public abstract class CommonList extends return newNode; } + default CommonList getTail() { + throw new UnsupportedOperationException(); + } + + default void setTail(CommonList v) { + throw new UnsupportedOperationException(); + } + } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyFSList.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyFSList.java?rev=1712148&r1=1712147&r2=1712148&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyFSList.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyFSList.java Mon Nov 2 20:38:36 2015 @@ -55,5 +55,4 @@ public class EmptyFSList extends FSList super(t, c); } - } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyFloatList.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyFloatList.java?rev=1712148&r1=1712147&r2=1712148&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyFloatList.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyFloatList.java Mon Nov 2 20:38:36 2015 @@ -54,5 +54,5 @@ public class EmptyFloatList extends Floa public EmptyFloatList(TypeImpl t, CASImpl c) { super(t, c); } - -} + + } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyIntegerList.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyIntegerList.java?rev=1712148&r1=1712147&r2=1712148&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyIntegerList.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyIntegerList.java Mon Nov 2 20:38:36 2015 @@ -54,5 +54,5 @@ public class EmptyIntegerList extends In public EmptyIntegerList(TypeImpl t, CASImpl c) { super(t, c); } - + } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSList.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSList.java?rev=1712148&r1=1712147&r2=1712148&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSList.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSList.java Mon Nov 2 20:38:36 2015 @@ -24,7 +24,7 @@ import org.apache.uima.cas.impl.CASImpl; import org.apache.uima.cas.impl.TypeImpl; import org.apache.uima.jcas.JCas; -public abstract class FSList extends CommonList { +public abstract class FSList extends TOP implements CommonList { // Never called. protected FSList() {// Disable default constructor @@ -70,20 +70,5 @@ public abstract class FSList extends Com // return ((NonEmptyFSList)this).getHead().toString(); } - /* (non-Javadoc) - * @see org.apache.uima.jcas.cas.CommonList#getTail() - */ - @Override - public CommonList getTail() { - return ((NonEmptyFSList)this).getTail(); - } - - /* (non-Javadoc) - * @see org.apache.uima.jcas.cas.CommonList#setTail(org.apache.uima.jcas.cas.CommonList) - */ - @Override - public void setTail(CommonList v) { - ((NonEmptyFSList)this).setTail(v); - } } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatList.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatList.java?rev=1712148&r1=1712147&r2=1712148&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatList.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatList.java Mon Nov 2 20:38:36 2015 @@ -23,7 +23,7 @@ import org.apache.uima.cas.impl.CASImpl; import org.apache.uima.cas.impl.TypeImpl; import org.apache.uima.jcas.JCas; -public abstract class FloatList extends CommonList { +public abstract class FloatList extends TOP implements CommonList { // Never called. protected FloatList() {// Disable default constructor @@ -71,22 +71,5 @@ public abstract class FloatList extends public String get_headAsString() { return Float.toString(((NonEmptyFloatList)this).getHead()); } - - /* (non-Javadoc) - * @see org.apache.uima.jcas.cas.CommonList#getTail() - */ - @Override - public CommonList getTail() { - return ((NonEmptyFloatList)this).getTail(); - } - - /* (non-Javadoc) - * @see org.apache.uima.jcas.cas.CommonList#setTail(org.apache.uima.jcas.cas.CommonList) - */ - @Override - public void setTail(CommonList v) { - ((NonEmptyFloatList)this).setTail(v); // value cast is for checking - - } } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerList.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerList.java?rev=1712148&r1=1712147&r2=1712148&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerList.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerList.java Mon Nov 2 20:38:36 2015 @@ -23,7 +23,7 @@ import org.apache.uima.cas.impl.CASImpl; import org.apache.uima.cas.impl.TypeImpl; import org.apache.uima.jcas.JCas; -public abstract class IntegerList extends CommonList { +public abstract class IntegerList extends TOP implements CommonList { // Never called. protected IntegerList() { // Disable default constructor @@ -70,23 +70,6 @@ public abstract class IntegerList extend @Override public String get_headAsString() { return Integer.toString(((NonEmptyIntegerList)this).getHead()); - } - - /* (non-Javadoc) - * @see org.apache.uima.jcas.cas.CommonList#getTail() - */ - @Override - public CommonList getTail() { - return ((NonEmptyIntegerList)this).getTail(); - } - - /* (non-Javadoc) - * @see org.apache.uima.jcas.cas.CommonList#setTail(org.apache.uima.jcas.cas.CommonList) - */ - @Override - public void setTail(CommonList v) { - ((NonEmptyIntegerList)this).setTail(v); - } - + } } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyFSList.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyFSList.java?rev=1712148&r1=1712147&r2=1712148&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyFSList.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyFSList.java Mon Nov 2 20:38:36 2015 @@ -92,12 +92,16 @@ public class NonEmptyFSList extends FSLi public FSList getTail() { return _F_tail; } /* setter for tail * */ - public void setTail(CommonList v) { - _F_tail = (FSList) v; + public void setTail(FSList v) { + _F_tail = v; // no corruption check - can't be a key _casView.maybeLogUpdate(this, tail_featCode); } + public void setTail(CommonList v) { + setTail((FSList) v); + } + public TOP getNthElement(int i) { return ((NonEmptyFSList)getNonEmptyNthNode(i)).getHead(); } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyFloatList.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyFloatList.java?rev=1712148&r1=1712147&r2=1712148&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyFloatList.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyFloatList.java Mon Nov 2 20:38:36 2015 @@ -92,11 +92,13 @@ public class NonEmptyFloatList extends F public FloatList getTail() { return _F_tail; } /* setter for tail * */ - @Override - public void setTail(CommonList v) { - _F_tail = (FloatList) v; + public void setTail(FloatList v) { + _F_tail = v; // no corruption check - can't be a key _casView.maybeLogUpdate(this, tail_featCode); } - + + public void setTail(CommonList v) { + setTail((FloatList) v); + } } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyIntegerList.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyIntegerList.java?rev=1712148&r1=1712147&r2=1712148&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyIntegerList.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyIntegerList.java Mon Nov 2 20:38:36 2015 @@ -95,13 +95,16 @@ public class NonEmptyIntegerList extends public IntegerList getTail() { return _F_tail; } /* setter for tail * */ - public void setTail(CommonList v) { - assert(v instanceof IntegerList); - _F_tail = (IntegerList) v; + public void setTail(IntegerList v) { + _F_tail = v; // no corruption check - can't be a key _casView.maybeLogUpdate(this, tail_featCode); } + public void setTail(CommonList v) { + setTail((IntegerList)v); + } + public void setHead(List<String> stringValues, int i) { setHead(Integer.parseInt(stringValues.get(i))); } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyStringList.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyStringList.java?rev=1712148&r1=1712147&r2=1712148&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyStringList.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyStringList.java Mon Nov 2 20:38:36 2015 @@ -88,10 +88,14 @@ public class NonEmptyStringList extends public StringList getTail() { return _F_tail; } /* setter for tail * */ - public void setTail(CommonList v) { - _F_tail = (StringList) v; + public void setTail(StringList v) { + _F_tail = v; // no corruption check - can't be a key _casView.maybeLogUpdate(this, tail_featCode); } + + public void setTail(CommonList v) { + setTail((StringList)v); + } } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringList.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringList.java?rev=1712148&r1=1712147&r2=1712148&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringList.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringList.java Mon Nov 2 20:38:36 2015 @@ -23,7 +23,7 @@ import org.apache.uima.cas.impl.CASImpl; import org.apache.uima.cas.impl.TypeImpl; import org.apache.uima.jcas.JCas; -public abstract class StringList extends CommonList { +public abstract class StringList extends TOP implements CommonList { // Never called. protected StringList() { // Disable default constructor