public Iterator getTenants()

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;
    }