how to iterate on sling folders? | Community
Skip to main content
May 17, 2018
Solved

how to iterate on sling folders?

  • May 17, 2018
  • 2 replies
  • 1490 views

I want to iterate on the sling folder and get the information on it in java.

"SELECT * FROM [nt:base] AS s WHERE [jcr:primaryType]=\"sling:Folder\" AND ISDESCENDANTNODE([/etc/foldername]) and ...."

In java,

Iterator<Resource> queryResult = resolver.findResources("SELECT * FROM [nt:base] AS s WHERE [jcr:primaryType]=\"sling:Folder\" AND ISDESCENDANTNODE([/etc/foldername]) and ....", Query.JCR_SQL2);

while (queryResult.hasNext()) {

Resource res = queryResult.next();

//but here how to get the information stored on the sling folder

}

how to read the name and ID property values?

Please help me with this issue in accessing the ID and name stored in the sling folder.

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by joerghoh

Do not use queries for that! Way too much overhead. Instead iterate directly the children list:

Resource folder = resourceResolver.getResource("/path/to/the/folder");

Iterator<Resource> children = folder.listChildren();

children.forEach (c ->

  ValueMap vm = c.adaptTo(ValueMap.class);

  String prop1 = vm.get("name", String.class);

  ...

);

2 replies

joerghoh
Adobe Employee
joerghohAdobe EmployeeAccepted solution
Adobe Employee
May 17, 2018

Do not use queries for that! Way too much overhead. Instead iterate directly the children list:

Resource folder = resourceResolver.getResource("/path/to/the/folder");

Iterator<Resource> children = folder.listChildren();

children.forEach (c ->

  ValueMap vm = c.adaptTo(ValueMap.class);

  String prop1 = vm.get("name", String.class);

  ...

);

May 17, 2018

Thank you, it works!