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);
-  }
-  
+  }  
 
 }


Reply via email to