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