001package org.nuxeo.template.service;
002
003import java.util.HashMap;
004import java.util.Map;
005
006import org.nuxeo.runtime.model.ContributionFragmentRegistry;
007import org.nuxeo.template.api.descriptor.ContextExtensionFactoryDescriptor;
008
009public class ContextFactoryRegistry extends ContributionFragmentRegistry<ContextExtensionFactoryDescriptor> {
010
011    protected Map<String, ContextExtensionFactoryDescriptor> factories = new HashMap<String, ContextExtensionFactoryDescriptor>();
012
013    @Override
014    public ContextExtensionFactoryDescriptor clone(ContextExtensionFactoryDescriptor desc) {
015        return desc.clone();
016    }
017
018    @Override
019    public void contributionRemoved(String id, ContextExtensionFactoryDescriptor desc) {
020        factories.remove(id);
021    }
022
023    @Override
024    public void contributionUpdated(String id, ContextExtensionFactoryDescriptor mergedDesc,
025            ContextExtensionFactoryDescriptor orgDesc) {
026
027        if (mergedDesc == null || !mergedDesc.isEnabled()) {
028            factories.remove(id);
029        } else {
030            factories.put(id, mergedDesc);
031        }
032    }
033
034    @Override
035    public String getContributionId(ContextExtensionFactoryDescriptor desc) {
036        return desc.getName();
037    }
038
039    @Override
040    public void merge(ContextExtensionFactoryDescriptor src, ContextExtensionFactoryDescriptor dest) {
041        dest.merge(src);
042    }
043
044    public Map<String, ContextExtensionFactoryDescriptor> getExtensionFactories() {
045        return factories;
046    }
047}