{
if (session.getAccessManager().hasPermission(nodeData().getACL(), new String[]{PermissionType.READ},
session.getUserState().getIdentity()))
{
PropertyNamePatternFilter filter = new PropertyNamePatternFilter(namePattern, session);
List<PropertyData> childs = null;
if (filter.isLookingAllData())
{
childs = childPropertiesData();
}
else
{
childs =
new ArrayList<PropertyData>(dataManager.getChildPropertiesData(nodeData(), filter
.getQPathEntryFilters()));
Collections.sort(childs, new PropertiesDataOrderComparator<PropertyData>());
}
if (childs.size() < session.getLazyReadThreshold())
{
// full iterator
List<PropertyImpl> props = new ArrayList<PropertyImpl>();
for (int i = 0, length = childs.size(); i < length; i++)
{
PropertyData child = childs.get(i);
if (filter.accept(child))
{
PropertyImpl item = (PropertyImpl)dataManager.readItem(child, nodeData(), true, false);
session.getActionHandler().postRead(item);
props.add(item);
}