Author: schor
Date: Mon Nov  2 12:39:21 2015
New Revision: 1711946

URL: http://svn.apache.org/viewvc?rev=1711946&view=rev
Log:
[UIMA-4663] add interfaces representing common operations among groups of JCas 
classes.

Added:
    
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/CommonPrimitiveArray.java
    
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyList.java

Added: 
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=1711946&view=auto
==============================================================================
--- 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/CommonArray.java
 (added)
+++ 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/CommonArray.java
 Mon Nov  2 12:39:21 2015
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.uima.jcas.cas;
+
+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 arrays of Feature Structures
+ */
+public interface CommonArray {
+  
+  int size();
+  
+  void copyValuesFrom(CommonArray v);
+}

Added: 
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=1711946&view=auto
==============================================================================
--- 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/CommonList.java
 (added)
+++ 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/CommonList.java
 Mon Nov  2 12:39:21 2015
@@ -0,0 +1,137 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.uima.jcas.cas;
+
+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);
+  }
+
+  /**
+   * Get the nth node.
+   * @param i -
+   * @return the nth node, which may be an "empty" node
+   */
+       public CommonList getNthNode(int i) {
+         if (this instanceof EmptyList) {
+                       throw new 
CASRuntimeException(CASRuntimeException.JCAS_GET_NTH_ON_EMPTY_LIST, 
"EmptyList");
+               }
+               if (i < 0) {
+                       throw new 
CASRuntimeException(CASRuntimeException.JCAS_GET_NTH_NEGATIVE_INDEX, i);
+               }
+               int originali = i;
+               CommonList node = this;
+
+               for (;; i--) {
+                       if (i == 0) {
+                               return node;
+                       }
+                       node = node.getTail();
+      if (node instanceof EmptyList) {
+        throw new 
CASRuntimeException(CASRuntimeException.JCAS_GET_NTH_PAST_END, originali);
+      }
+               }
+       }
+       
+       public 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() {
+         // detect loops
+         final Set<CommonList> visited = new IdentityHashMap<CommonList, 
Boolean>().keySet();
+         
+         int length = 0;
+         CommonList node = this;
+         while (node instanceof NonEmptyList) {
+           length ++;
+           visited.add(node);
+           node = node.getTail();
+           if (visited.contains(node)) {
+             break;
+           }
+         }
+         return length;
+       }
+        
+       public 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();
+       /**
+        * insert a new nonempty node following this node
+        * @return the new node
+        */
+       public CommonList insertNode() {
+         assert(this instanceof NonEmptyList);
+         CommonList newNode = createNonEmptyNode();
+         CommonList tail = getTail();
+         setTail(newNode);
+         newNode.setTail(tail);
+         return newNode;         
+       }
+
+}

Added: 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/CommonPrimitiveArray.java
URL: 
http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/CommonPrimitiveArray.java?rev=1711946&view=auto
==============================================================================
--- 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/CommonPrimitiveArray.java
 (added)
+++ 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/CommonPrimitiveArray.java
 Mon Nov  2 12:39:21 2015
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.uima.jcas.cas;
+
+import org.apache.uima.cas.impl.CASImpl;
+import org.apache.uima.cas.impl.TypeImpl;
+import org.apache.uima.jcas.JCas;
+
+/**
+ * This interface is implemented by arrays of non-FeatureStructure components 
+ *   boolean, byte, short, int, long, float, double, String, JavaObject
+ */
+public interface CommonPrimitiveArray extends CommonArray {
+}

Added: 
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=1711946&view=auto
==============================================================================
--- 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyList.java
 (added)
+++ 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyList.java
 Mon Nov  2 12:39:21 2015
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.uima.jcas.cas;
+
+/**
+ * a marker interface for empty lists
+ */
+public interface EmptyList {
+}


Reply via email to