Hi, I want to dump all JCR content to mongodb for analysis. I see there is https://issues.apache.org/jira/browse/SLING-3485 . And org.apache.sling.servlets.get.impl.helpers.ResourceTraversor does what I want to do.
But I am stuck with older version of Sling. Are there other ways to dump JSON of a node tree? I have the following code but it cannot be compiled because ResourceTraversor cannot be found: final Pattern ENTRY = Pattern.compile("/\\d+/\\d+/[^/]+/jcr:content$"); class JsonDumpNodeVisitor extends TraversingItemVisitor { private final ResourceResolver resolver; private final PrintWriter writer; public JsonDumpNodeVisitor(ResourceResolver resolver, PrintWriter writer) { this.resolver = resolver; this.writer = writer; } @Override protected void entering(Property property, int level) throws RepositoryException { } @Override protected void entering(Node node, int level) throws RepositoryException { final String nodeType = node.getPrimaryNodeType().getName(); final String path = node.getPath(); final Matcher m = ENTRY.matcher(path); if (m.find() && "cq:PageContent".equals(nodeType)) { final ResourceTraversor traversor = new ResourceTraversor(-1, Long.MAX_VALUE, resolver.getResource(path), false); traversor.collectResources(); writer.write(traversor.getJSONObject().toString()); } } @Override protected void leaving(Property property, int level) throws RepositoryException { } @Override protected void leaving(Node node, int level) throws RepositoryException { } } final Node node = resourceResolver.getResource(rootPath).adaptTo(Node.class); final TraversingItemVisitor visitor = new JsonDumpNodeVisotor(resourceResolver, out); node.accept(visitor);