checkValid();
try
{
NodeNamePatternFilter filter = new NodeNamePatternFilter(namePattern, session);
List<NodeData> childs = null;
if (filter.isLookingAllData())
{
childs = childNodesData();
}
else
{
childs = new ArrayList<NodeData>(dataManager.getChildNodesData(nodeData(), filter.getQPathEntryFilters()));
Collections.sort(childs, new NodeDataOrderComparator());
}
if (childs.size() < session.getLazyReadThreshold())
{
// full iterator
List<NodeImpl> nodes = new ArrayList<NodeImpl>();
for (int i = 0, length = childs.size(); i < length; i++)
{
NodeData child = childs.get(i);
if (filter.accept(child)
&& session.getAccessManager().hasPermission(child.getACL(), new String[]{PermissionType.READ},
session.getUserState().getIdentity()))
{
NodeImpl item = (NodeImpl)dataManager.readItem(child, nodeData(), true, false);
session.getActionHandler().postRead(item);