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 2018/01/23 20:12:35 UTC

svn commit: r1822045 - in /uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima: cas/impl/CasSerializerSupport.java jcas/cas/CommonList.java

Author: schor
Date: Tue Jan 23 20:12:34 2018
New Revision: 1822045

URL: http://svn.apache.org/viewvc?rev=1822045&view=rev
Log:
no Jira, cleanup impl of common walk list - no longer uses consumer that throws sax exception.  Make a separate version for that.

Modified:
    uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CasSerializerSupport.java
    uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/CommonList.java

Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CasSerializerSupport.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CasSerializerSupport.java?rev=1822045&r1=1822044&r2=1822045&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CasSerializerSupport.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CasSerializerSupport.java Tue Jan 23 20:12:34 2018
@@ -43,6 +43,7 @@ import org.apache.uima.cas.CASRuntimeExc
 import org.apache.uima.cas.FSIndex;
 import org.apache.uima.internal.util.Misc;
 import org.apache.uima.internal.util.XmlElementName;
+import org.apache.uima.internal.util.function.Consumer_withSaxException;
 import org.apache.uima.jcas.cas.CommonList;
 import org.apache.uima.jcas.cas.CommonPrimitiveArray;
 import org.apache.uima.jcas.cas.FSArray;
@@ -1085,7 +1086,7 @@ public class CasSerializerSupport {
      *          Address of an FSList
      */
     private void enqueueFSListElements(FSList<TOP> node) throws SAXException {
-      node.walkList( n -> enqueueFsAndMaybeFeatures(((NonEmptyFSList<TOP>)n).getHead()), null);
+      node.walkList_saxException(n -> enqueueFsAndMaybeFeatures(((NonEmptyFSList<TOP>)n).getHead()), null);
     }
 
     /*

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=1822045&r1=1822044&r2=1822045&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 Jan 23 20:12:34 2018
@@ -93,11 +93,7 @@ public interface CommonList extends Feat
 	 */
 	default int getLength() {
 	  final int[] length = {0};
-	  try {
-      walkList( n -> length[0]++, () -> {});
-    } catch (SAXException e) {
-      // never happen
-    }
+    walkList(n -> length[0]++, () -> {});
 	  return length[0];
 	}
 	
@@ -108,21 +104,44 @@ public interface CommonList extends Feat
 	 * @param foundLoop run if a loop happens
 	 * @throws SAXException -
 	 */
-	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) {
-	    consumer.accept((NonEmptyList) node);
-	    node = node.getCommonTail();
-	    if (node == null) {
-	      break;
-	    }
-	    if (visited.contains(node) && foundLoop != null) {
-	      foundLoop.run();
-	    }
-	  }
-	}
-	
+  default void walkList_saxException(Consumer_withSaxException<NonEmptyList> consumer, Runnable foundLoop)
+      throws SAXException {
+    final Set<CommonList> visited = Collections.newSetFromMap(new IdentityHashMap<>());
+    CommonList node = this;
+    while (node instanceof NonEmptyList) {
+      consumer.accept((NonEmptyList) node);
+      node = node.getCommonTail();
+      if (node == null) {
+        break;
+      }
+      if (visited.contains(node) && foundLoop != null) {
+        foundLoop.run();
+      }
+    }
+  }
+
+  /**
+   * Walks a list, executing the consumer on each element.
+   * If a loop is found, the foundloop method is run.
+   * @param consumer  a Consumer (with no declared exceptions) 
+   * @param foundLoop run if a loop happens
+   */
+  default void walkList(Consumer<NonEmptyList> consumer, Runnable foundLoop) {
+    final Set<CommonList> visited = Collections.newSetFromMap(new IdentityHashMap<>());
+    CommonList node = this;
+    while (node instanceof NonEmptyList) {
+      consumer.accept((NonEmptyList) node);
+      node = node.getCommonTail();
+      if (node == null) {
+        break;
+      }
+      if (visited.contains(node) && foundLoop != null) {
+        foundLoop.run();
+      }
+    }
+  }
+
+  
 	/**
 	 * Creates a non empty node
 	 * @return a new non empty node