Author: schor
Date: Mon Nov 23 21:41:21 2015
New Revision: 1715972
URL: http://svn.apache.org/viewvc?rev=1715972&view=rev
Log:
[UIMA-4697] updates to built-in list and array de/serialization support
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/EmptyList.java
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyStringList.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/NonEmptyList.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=1715972&r1=1715971&r2=1715972&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 23 21:41:21 2015
@@ -33,4 +33,10 @@ public interface CommonArray extends Fea
void copyValuesFrom(CommonArray v);
+ /**
+ * Creates a new string array and copies this array's values into it.
+ *
+ * @return A Java array copy of this array.
+ */
+ String[] toStringArray();
}
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=1715972&r1=1715971&r2=1715972&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 23 21:41:21 2015
@@ -19,15 +19,31 @@
package org.apache.uima.jcas.cas;
+import java.util.ArrayList;
+import java.util.Collections;
import java.util.IdentityHashMap;
+import java.util.List;
import java.util.Set;
+import java.util.function.Consumer;
+import org.apache.uima.cas.CAS;
import org.apache.uima.cas.CASRuntimeException;
+import org.apache.uima.cas.FeatureStructure;
+import org.apache.uima.cas.function.Consumer_withSaxException;
+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;
+import org.xml.sax.SAXException;
/**
* This class is the super class of list nodes (both empty and non empty)
+ *
*/
-public interface CommonList {
+public interface CommonList extends FeatureStructure {
+
+ static final List<String> EMPTY_LIST_STRING = Collections.emptyList();
/**
* Get the nth node.
@@ -70,31 +86,52 @@ public interface CommonList {
* @return the number of items in the list
*/
default int getLength() {
- // detect loops
- final Set<CommonList> visited = new IdentityHashMap<CommonList,
Boolean>().keySet();
-
- int length = 0;
+ final int[] length = {0};
+ try {
+ walkList( n -> length[0]++, () -> {});
+ } catch (SAXException e) {
+ // never happen
+ }
+ return length[0];
+ }
+
+ default void walkList(Consumer_withSaxException<NonEmptyList> consumer,
Runnable foundLoop) throws SAXException {
+ final Set<CommonList> visited = Collections.newSetFromMap(new
IdentityHashMap<>());
CommonList node = this;
while (node instanceof NonEmptyList) {
- length ++;
- visited.add(node);
+ consumer.accept((NonEmptyList) node);
node = node.getTail();
- if (visited.contains(node)) {
+ if (node == null) {
break;
}
+ if (visited.contains(node) && foundLoop != null) {
+ foundLoop.run();
+ }
}
- return length;
- }
-
- static void setNewValueInExistingNode(CommonList node, String v) {
-// node.setHead(null);
- throw new CASRuntimeException(); // not yet impl
}
-
+
CommonList createNonEmptyNode();
- CommonList createNonEmptyNode(CommonList tail);
- CommonList getEmptyNode(); // returns a shared constant empty node
- String get_headAsString();
+
+ /**
+ * overridden in nonempty nodes
+ * Return the head value of a list as a string suitable for
serialization.
+ *
+ * For FeatureStructure values, return the _id.
+ * @return value suitable for serialization
+ */
+ default String get_headAsString() {
+ throw new UnsupportedOperationException();
+ };
+
+ /**
+ * overridden in nonempty nodes
+ * used when deserializing
+ * @param v value to set, as a string
+ */
+ default void set_headFromString(String v) {
+ throw new UnsupportedOperationException();
+ }
+
/**
* insert a new nonempty node following this node
* @return the new node
@@ -116,4 +153,85 @@ public interface CommonList {
throw new UnsupportedOperationException();
}
+ /**
+ * List to String for XMI and JSON serialization, for the special format
where
+ * all the list elements are in one serialized item
+ *
+ * Go thru a list, calling the ListOutput append method to append strings
(to arrays, or string buffers)
+ * Stop at the end node, or a null, or a loop (no error reported here)
+ * @param curNode - the current node in the list
+ * @param sharedData -
+ * @param cds -
+ * @param out - a Consumer of strings
+ */
+ default void anyListToOutput(XmiSerializationSharedData sharedData,
CasSerializerSupport.CasDocSerializer cds, Consumer<String> out) {
+
+// final int type = cas.getHeapValue(curNode);
+// final int headFeat = getHeadFeatCode(type);
+// final int tailFeat = getTailFeatCode(type);
+// final int neListType = getNeListType(type);
+ final Set<CommonList> visited = Collections.newSetFromMap(new
IdentityHashMap<>());
+
+ CommonList curNode = this;
+ while (curNode != null) {
+ if (curNode instanceof EmptyList) {
+ break; // would be the end element.
+ }
+
+ if (!visited.add(curNode)) {
+ break; // hit loop
+ }
+
+// out.accept(curNode.get_headAsString());
+
+ if (curNode instanceof NonEmptyFSList) {
+ TOP val = ((NonEmptyFSList)curNode).getHead();
+ if (val == null) {
+ if (sharedData != null) {
+ OotsElementData oed =
sharedData.getOutOfTypeSystemFeatures((TOP)curNode);
+ if (oed != null) {
+ assert oed.attributes.size() == 1; //only the head feature can
possibly be here
+ XmlAttribute attr = oed.attributes.get(0);
+ assert CAS.FEATURE_BASE_NAME_HEAD.equals(attr.name);
+ out.accept(attr.value);
+ } else {
+ out.accept("0");
+ }
+ } else {
+ out.accept("0");
+ }
+ } else {
+ out.accept(cds.getXmiId(val));
+ }
+
+ } else {
+ // is instance of float, integer, or string list
+ out.accept(curNode.get_headAsString());
+ }
+
+
+
+ curNode = curNode.getTail();
+ } // end of while loop
+ }
+
+ default List<String> anyListToStringList(XmiSerializationSharedData
sharedData, CasSerializerSupport.CasDocSerializer cds) {
+ final List<String> list = new ArrayList<String>();
+ anyListToOutput(sharedData, cds, s -> list.add(s));
+ return list;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.uima.cas.FeatureStructure#id()
+ */
+ @Override
+ default int id() {
+ return ((FeatureStructureImplC)this).id();
+ }
+
+ default CommonList getEmptyList() {
+ TOP node = (TOP) this;
+ return (CommonList) node._getView().getEmptyList(node._getTypeCode());
+ }
+
}
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=1715972&r1=1715971&r2=1715972&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 23 21:41:21 2015
@@ -21,6 +21,7 @@ package org.apache.uima.jcas.cas;
import org.apache.uima.cas.impl.CASImpl;
import org.apache.uima.cas.impl.TypeImpl;
+import org.apache.uima.cas.impl.TypeImpl_list;
import org.apache.uima.jcas.JCas;
import org.apache.uima.jcas.JCasRegistry;
@@ -33,13 +34,16 @@ public class EmptyFSList extends FSList
public int getTypeIndexID() {
return typeIndexID;
}
-
- public final static EmptyFSList singleton = new EmptyFSList();
-
+
// Never called. Disable default constructor
protected EmptyFSList() {
}
+ /* used by type system impl to initialize empty singleton in typeImpl */
+ public EmptyFSList(TypeImpl_list ti) {
+ super(ti, null);
+ }
+
public EmptyFSList(JCas jcas) {
super(jcas);
}
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=1715972&r1=1715971&r2=1715972&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 23 21:41:21 2015
@@ -21,6 +21,7 @@ package org.apache.uima.jcas.cas;
import org.apache.uima.cas.impl.CASImpl;
import org.apache.uima.cas.impl.TypeImpl;
+import org.apache.uima.cas.impl.TypeImpl_list;
import org.apache.uima.jcas.JCas;
import org.apache.uima.jcas.JCasRegistry;
@@ -34,12 +35,14 @@ public class EmptyFloatList extends Floa
return typeIndexID;
}
- public final static EmptyFloatList singleton = new EmptyFloatList();
-
// Never called. Disable default constructor
protected EmptyFloatList() {
}
+ public EmptyFloatList(TypeImpl_list ti) {
+ super(ti, null);
+ }
+
public EmptyFloatList(JCas jcas) {
super(jcas);
}
@@ -55,4 +58,6 @@ public class EmptyFloatList extends Floa
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=1715972&r1=1715971&r2=1715972&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 23 21:41:21 2015
@@ -21,6 +21,8 @@ package org.apache.uima.jcas.cas;
import org.apache.uima.cas.impl.CASImpl;
import org.apache.uima.cas.impl.TypeImpl;
+import org.apache.uima.cas.impl.TypeImpl_list;
+import org.apache.uima.cas.impl.TypeSystemImpl;
import org.apache.uima.jcas.JCas;
import org.apache.uima.jcas.JCasRegistry;
@@ -34,12 +36,14 @@ public class EmptyIntegerList extends In
return typeIndexID;
}
- public final static EmptyIntegerList singleton = new EmptyIntegerList();
-
// Never called. Disable default constructor
protected EmptyIntegerList() {
}
+ public EmptyIntegerList(TypeImpl_list ti) {
+ super(ti, null);
+ }
+
public EmptyIntegerList(JCas jcas) {
super(jcas);
}
Modified:
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyList.java
URL:
http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyList.java?rev=1715972&r1=1715971&r2=1715972&view=diff
==============================================================================
---
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyList.java
(original)
+++
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyList.java
Mon Nov 23 21:41:21 2015
@@ -19,8 +19,9 @@
package org.apache.uima.jcas.cas;
+import org.apache.uima.cas.FeatureStructure;
+
/**
* a marker interface for empty lists
*/
-public interface EmptyList {
-}
+public interface EmptyList extends FeatureStructure {}
Modified:
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyStringList.java
URL:
http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyStringList.java?rev=1715972&r1=1715971&r2=1715972&view=diff
==============================================================================
---
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyStringList.java
(original)
+++
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyStringList.java
Mon Nov 23 21:41:21 2015
@@ -21,6 +21,8 @@ package org.apache.uima.jcas.cas;
import org.apache.uima.cas.impl.CASImpl;
import org.apache.uima.cas.impl.TypeImpl;
+import org.apache.uima.cas.impl.TypeImpl_list;
+import org.apache.uima.cas.impl.TypeSystemImpl;
import org.apache.uima.jcas.JCas;
import org.apache.uima.jcas.JCasRegistry;
@@ -34,12 +36,14 @@ public class EmptyStringList extends Str
return typeIndexID;
}
- public final static EmptyStringList singleton = new EmptyStringList();
-
// Never called. Disable default constructor
protected EmptyStringList() {
}
+ public EmptyStringList(TypeImpl_list ti) {
+ super(ti, null);
+ }
+
public EmptyStringList(JCas jcas) {
super(jcas);
}
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=1715972&r1=1715971&r2=1715972&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 23 21:41:21 2015
@@ -19,13 +19,13 @@
package org.apache.uima.jcas.cas;
-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;
+import org.apache.uima.jcas.JCasRegistry;
public abstract class FSList extends TOP implements CommonList {
-
+
// Never called.
protected FSList() {// Disable default constructor
}
@@ -45,30 +45,9 @@ public abstract class FSList extends TOP
super(t, c);
}
- public NonEmptyFSList createNonEmptyNode(CommonList tail) {
- NonEmptyFSList node = new NonEmptyFSList(this._typeImpl, this._casView);
- node.setTail((FSList) tail);
+ public NonEmptyFSList createNonEmptyNode() {
+ NonEmptyFSList node = new
NonEmptyFSList(this._casView.getTypeSystemImpl().fsNeListType, this._casView);
return node;
}
-
- public NonEmptyFSList createNonEmptyNode() { return
createNonEmptyNode(null); }
-
- /* (non-Javadoc)
- * @see org.apache.uima.jcas.cas.CommonList#getEmptyNode()
- */
- @Override
- public EmptyFSList getEmptyNode() {
- return EmptyFSList.singleton;
- }
-
- /* (non-Javadoc)
- * @see org.apache.uima.jcas.cas.CommonList#get_headAsString()
- */
- @Override
- public String get_headAsString() {
- throw new CASRuntimeException(); // not yet impl
-// return ((NonEmptyFSList)this).getHead().toString();
- }
-
-
+
}
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=1715972&r1=1715971&r2=1715972&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 23 21:41:21 2015
@@ -48,28 +48,10 @@ public abstract class FloatList extends
return ((NonEmptyFloatList) getNonEmptyNthNode(i)).getHead();
}
- public NonEmptyFloatList createNonEmptyNode(CommonList tail) {
- NonEmptyFloatList node = new NonEmptyFloatList(this._typeImpl,
this._casView);
- node.setTail((FloatList) tail);
- return node;
- }
- public NonEmptyFloatList createNonEmptyNode() { return
createNonEmptyNode(null); }
-
- /* (non-Javadoc)
- * @see org.apache.uima.jcas.cas.CommonList#getEmptyNode()
- */
- @Override
- public EmptyFloatList getEmptyNode() {
- return EmptyFloatList.singleton;
- }
-
- /* (non-Javadoc)
- * @see org.apache.uima.jcas.cas.CommonList#get_headAsString()
- */
@Override
- public String get_headAsString() {
- return Float.toString(((NonEmptyFloatList)this).getHead());
+ public NonEmptyFloatList createNonEmptyNode() {
+ NonEmptyFloatList node = new
NonEmptyFloatList(this._casView.getTypeSystemImpl().floatNeListType,
this._casView);
+ return node;
}
-
}
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=1715972&r1=1715971&r2=1715972&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 23 21:41:21 2015
@@ -48,28 +48,9 @@ public abstract class IntegerList extend
return ((NonEmptyIntegerList) getNonEmptyNthNode(i)).getHead();
}
- public NonEmptyIntegerList createNonEmptyNode(CommonList tail) {
- NonEmptyIntegerList node = new NonEmptyIntegerList(this._typeImpl,
this._casView);
- node.setTail((IntegerList) tail);
+ public NonEmptyIntegerList createNonEmptyNode() {
+ NonEmptyIntegerList node = new
NonEmptyIntegerList(this._casView.getTypeSystemImpl().intNeListType,
this._casView);
return node;
}
- public NonEmptyIntegerList createNonEmptyNode() { return
createNonEmptyNode(null); }
-
- /* (non-Javadoc)
- * @see org.apache.uima.jcas.cas.CommonList#getEmptyNode()
- */
- @Override
- public EmptyIntegerList getEmptyNode() {
- return EmptyIntegerList.singleton;
- }
-
- /* (non-Javadoc)
- * @see org.apache.uima.jcas.cas.CommonList#get_headAsString()
- */
- @Override
- public String get_headAsString() {
- return Integer.toString(((NonEmptyIntegerList)this).getHead());
- }
-
}
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=1715972&r1=1715971&r2=1715972&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 23 21:41:21 2015
@@ -19,6 +19,7 @@
package org.apache.uima.jcas.cas;
+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;
@@ -91,4 +92,5 @@ public class NonEmptyFSList extends FSLi
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=1715972&r1=1715971&r2=1715972&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 23 21:41:21 2015
@@ -87,4 +87,21 @@ public class NonEmptyFloatList extends F
public void setTail(CommonList v) {
setTail((FloatList) v);
}
+
+ /* (non-Javadoc)
+ * @see org.apache.uima.jcas.cas.CommonList#get_headAsString()
+ */
+ @Override
+ public String get_headAsString() {
+ return Float.toString(((NonEmptyFloatList)this).getHead());
+ }
+
+ /* (non-Javadoc)
+ * @see
org.apache.uima.jcas.cas.CommonList#set_headAsString(java.lang.String)
+ */
+ @Override
+ public void set_headFromString(String v) {
+ setHead(Float.parseFloat(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=1715972&r1=1715971&r2=1715972&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 23 21:41:21 2015
@@ -95,4 +95,21 @@ public class NonEmptyIntegerList extends
setHead(Integer.parseInt(stringValues.get(i)));
}
+ /* (non-Javadoc)
+ * @see org.apache.uima.jcas.cas.CommonList#get_headAsString()
+ */
+ @Override
+ public String get_headAsString() {
+ return Integer.toString(((NonEmptyIntegerList)this).getHead());
+ }
+
+ /* (non-Javadoc)
+ * @see
org.apache.uima.jcas.cas.CommonList#set_headFromString(java.lang.String)
+ */
+ @Override
+ public void set_headFromString(String v) {
+ setHead(Integer.parseInt(v));
+ }
+
+
}
Modified:
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyList.java
URL:
http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyList.java?rev=1715972&r1=1715971&r2=1715972&view=diff
==============================================================================
---
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyList.java
(original)
+++
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyList.java
Mon Nov 23 21:41:21 2015
@@ -22,6 +22,6 @@ package org.apache.uima.jcas.cas;
/**
* a marker interface for nonempty lists
*/
-public interface NonEmptyList {
+public interface NonEmptyList extends CommonList {
CommonList getTail();
}
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=1715972&r1=1715971&r2=1715972&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 23 21:41:21 2015
@@ -19,10 +19,8 @@
package org.apache.uima.jcas.cas;
-import org.apache.uima.cas.CAS;
import org.apache.uima.cas.impl.CASImpl;
import org.apache.uima.cas.impl.TypeImpl;
-import org.apache.uima.cas.impl.TypeSystemImpl;
import org.apache.uima.jcas.JCas;
import org.apache.uima.jcas.JCasRegistry;
@@ -89,5 +87,21 @@ public class NonEmptyStringList extends
public void setTail(CommonList v) {
setTail((StringList)v);
}
+
+ /* (non-Javadoc)
+ * @see org.apache.uima.jcas.cas.CommonList#get_headAsString()
+ */
+ @Override
+ public String get_headAsString() {
+ return ((NonEmptyStringList)this).getHead();
+ }
+ /* (non-Javadoc)
+ * @see
org.apache.uima.jcas.cas.CommonList#set_headFromString(java.lang.String)
+ */
+ @Override
+ public void set_headFromString(String v) {
+ setHead(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=1715972&r1=1715971&r2=1715972&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 23 21:41:21 2015
@@ -48,46 +48,9 @@ public abstract class StringList extends
return ((NonEmptyStringList) getNonEmptyNthNode(i)).getHead();
}
- public NonEmptyStringList createNonEmptyNode(CommonList tail) {
- NonEmptyStringList node = new NonEmptyStringList(this._typeImpl,
this._casView);
- node.setTail((StringList) tail);
+ public NonEmptyStringList createNonEmptyNode() {
+ NonEmptyStringList node = new
NonEmptyStringList(this._casView.getTypeSystemImpl().stringNeListType,
this._casView);
return node;
- }
-
- public NonEmptyStringList createNonEmptyNode() { return
createNonEmptyNode(null); }
-
- /* (non-Javadoc)
- * @see org.apache.uima.jcas.cas.CommonList#getEmptyNode()
- */
- @Override
- public EmptyStringList getEmptyNode() {
- return EmptyStringList.singleton;
- }
-
-
- /* (non-Javadoc)
- * @see org.apache.uima.jcas.cas.CommonList#get_headAsString()
- */
- @Override
- public String get_headAsString() {
- return ((NonEmptyStringList)this).getHead();
- }
-
- /* (non-Javadoc)
- * @see org.apache.uima.jcas.cas.CommonList#getTail()
- */
- @Override
- public CommonList getTail() {
- return ((NonEmptyStringList)this).getTail();
- }
-
- /* (non-Javadoc)
- * @see
org.apache.uima.jcas.cas.CommonList#setTail(org.apache.uima.jcas.cas.CommonList)
- */
- @Override
- public void setTail(CommonList v) {
- ((NonEmptyStringList)this).setTail(v);
- }
-
+ }
}