in src/main/java/org/apache/sling/tenant/internal/TenantProviderImpl.java [204:244]
public Iterator<Tenant> getTenants(final String tenantFilter) {
final Filter filter;
if (tenantFilter != null && tenantFilter.length() > 0) {
try {
filter = FrameworkUtil.createFilter(tenantFilter);
} catch (InvalidSyntaxException e) {
throw new IllegalArgumentException(e.getMessage(), e);
}
} else {
filter = null;
}
Iterator<Tenant> result = call(new ResourceResolverTask<Iterator<Tenant>>() {
@SuppressWarnings("unchecked")
@Override
public Iterator<Tenant> call(ResourceResolver resolver) {
Resource tenantRootRes = resolver.getResource(tenantRootPath);
if ( tenantRootRes != null ) {
List<Tenant> tenantList = new ArrayList<Tenant>();
Iterator<Resource> tenantResourceList = tenantRootRes.listChildren();
while (tenantResourceList.hasNext()) {
Resource tenantRes = tenantResourceList.next();
if (filter == null || filter.matches(ResourceUtil.getValueMap(tenantRes))) {
TenantImpl tenant = new TenantImpl(tenantRes);
tenantList.add(tenant);
}
}
return tenantList.iterator();
}
return Collections.EMPTY_LIST.iterator();
}
});
if (result == null) {
// no filter or no resource resolver for calling
result = Collections.<Tenant> emptyList().iterator();
}
return result;
}