ProviderSettingsManagerImpl.java 2.39 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  org.apache.felix.scr.annotations.Component
 *  org.apache.felix.scr.annotations.Reference
 *  org.apache.felix.scr.annotations.ReferenceCardinality
 *  org.apache.felix.scr.annotations.ReferencePolicy
 *  org.apache.felix.scr.annotations.Service
 *  org.apache.sling.api.resource.Resource
 *  org.apache.sling.api.resource.ValueMap
 *  org.apache.sling.api.wrappers.ValueMapDecorator
 */
package com.adobe.cq.contentinsight.impl;

import com.adobe.cq.contentinsight.ProviderSettingsManager;
import com.adobe.cq.contentinsight.ProviderSettingsProvider;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.apache.felix.scr.annotations.ReferencePolicy;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ValueMap;
import org.apache.sling.api.wrappers.ValueMapDecorator;

@Component(metatype=0)
@Service
public class ProviderSettingsManagerImpl
implements ProviderSettingsManager {
    @Reference(referenceInterface=ProviderSettingsProvider.class, bind="bindProvider", unbind="unbindProvider", cardinality=ReferenceCardinality.OPTIONAL_MULTIPLE, policy=ReferencePolicy.DYNAMIC)
    private Map<String, ProviderSettingsProvider> providers = Collections.synchronizedMap(new HashMap());

    protected void bindProvider(ProviderSettingsProvider provider, Map<?, ?> properties) {
        this.providers.put(provider.getName(), provider);
    }

    protected void unbindProvider(ProviderSettingsProvider provider) {
        this.providers.remove(provider.getName());
    }

    @Override
    public ValueMap getProviderSettings(Resource res) {
        HashMap<String, ValueMap> settings = new HashMap<String, ValueMap>();
        for (String name : this.providers.keySet()) {
            settings.put(name, this.providers.get(name).getSettings(res));
        }
        return new ValueMapDecorator(settings);
    }

    @Override
    public boolean hasActiveProviders(Resource res) {
        for (String name : this.providers.keySet()) {
            if (!this.providers.get(name).isActive(res)) continue;
            return true;
        }
        return false;
    }
}