X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Facr%2FContentUtils.java;h=5609cf7778ca65555824c500e48d3769be944f69;hb=da9d144b6b241e1526a3bd255dff905a7969a5bc;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..5609cf777 100644 --- a/org.argeo.cms/src/org/argeo/cms/acr/ContentUtils.java +++ b/org.argeo.cms/src/org/argeo/cms/acr/ContentUtils.java @@ -6,17 +6,26 @@ import java.util.function.BiConsumer; import javax.xml.namespace.QName; import org.argeo.api.acr.Content; +import org.argeo.api.cms.CmsSession; +/** 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 +46,6 @@ public class ContentUtils { } } - - // public static boolean isString(T t) { // return t instanceof String; // }