X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Facr%2FContentUtils.java;h=2dcaeafaada5349810b0b659de825ffd3b390871;hb=dcdbf77c4ec46f1dcad5d3fa011fe072e921f187;hp=d0ce5d1535bcf954242533f0a4d2febafdf16b55;hpb=cc1dd97ebcc32e1bd754073ad23def182f460452;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/acr/ContentUtils.java b/org.argeo.cms/src/org/argeo/cms/acr/ContentUtils.java index d0ce5d153..2dcaeafaa 100644 --- a/org.argeo.cms/src/org/argeo/cms/acr/ContentUtils.java +++ b/org.argeo.cms/src/org/argeo/cms/acr/ContentUtils.java @@ -7,16 +7,24 @@ import javax.xml.namespace.QName; import org.argeo.api.acr.Content; +/** Utilities and routines around {@link Content}. */ public class ContentUtils { public static void traverse(Content content, BiConsumer doIt) { - traverse(content, doIt, 0); + traverse(content, doIt, (Integer) null); } - public static void traverse(Content content, BiConsumer doIt, int currentDepth) { + public static void traverse(Content content, BiConsumer doIt, Integer maxDepth) { + doTraverse(content, doIt, 0, maxDepth); + } + + private static void doTraverse(Content content, BiConsumer doIt, int currentDepth, + Integer maxDepth) { doIt.accept(content, currentDepth); + if (maxDepth != null && currentDepth == maxDepth) + return; int nextDepth = currentDepth + 1; for (Content child : content) { - traverse(child, doIt, nextDepth); + doTraverse(child, doIt, nextDepth, maxDepth); } } @@ -37,8 +45,6 @@ public class ContentUtils { } } - - // public static boolean isString(T t) { // return t instanceof String; // }