AssetSiteReferenceProvider.java 3.02 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.adobe.granite.references.Reference
 *  com.adobe.granite.references.ReferenceProvider
 *  com.day.cq.commons.predicate.AbstractResourcePredicate
 *  com.day.cq.commons.predicate.PredicateProvider
 *  com.day.cq.dam.api.Asset
 *  com.day.cq.wcm.api.Page
 *  com.day.cq.wcm.commons.ReferenceSearch
 *  com.day.cq.wcm.commons.ReferenceSearch$Info
 *  org.apache.commons.collections.Predicate
 *  org.apache.felix.scr.annotations.Component
 *  org.apache.felix.scr.annotations.Reference
 *  org.apache.felix.scr.annotations.Service
 *  org.apache.sling.api.resource.Resource
 *  org.apache.sling.api.resource.ResourceResolver
 */
package com.day.cq.dam.core.impl;

import com.adobe.granite.references.ReferenceProvider;
import com.day.cq.commons.predicate.AbstractResourcePredicate;
import com.day.cq.commons.predicate.PredicateProvider;
import com.day.cq.dam.api.Asset;
import com.day.cq.wcm.api.Page;
import com.day.cq.wcm.commons.ReferenceSearch;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import org.apache.commons.collections.Predicate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;

@Component(metatype=0)
@Service(value={ReferenceProvider.class})
public class AssetSiteReferenceProvider
implements ReferenceProvider {
    @Reference
    private PredicateProvider pp;
    public static final String REFERENCE_TYPE = "siteReference";

    public List<com.adobe.granite.references.Reference> getReferences(Resource resource) {
        ArrayList<com.adobe.granite.references.Reference> references = new ArrayList<com.adobe.granite.references.Reference>();
        if (null != resource && resource.adaptTo(Asset.class) != null) {
            ResourceResolver resolver = resource.getResourceResolver();
            String contentPath = resource.getPath();
            Predicate p = this.pp.getPredicate("wcmcontent");
            ReferenceSearch rs = new ReferenceSearch();
            if (p != null && p instanceof AbstractResourcePredicate) {
                rs.setPredicate((AbstractResourcePredicate)p);
            }
            Collection resultSet = rs.search(resolver, contentPath).values();
            for (ReferenceSearch.Info info : resultSet) {
                String pagePath = info.getPage().getPath();
                references.add(new com.adobe.granite.references.Reference(resource, resolver.getResource(pagePath), "siteReference"));
            }
        }
        return references;
    }

    public String getType() {
        return "siteReference";
    }

    protected void bindPp(PredicateProvider predicateProvider) {
        this.pp = predicateProvider;
    }

    protected void unbindPp(PredicateProvider predicateProvider) {
        if (this.pp == predicateProvider) {
            this.pp = null;
        }
    }
}