001package org.nuxeo.template.service; 002 003import java.util.Collection; 004import java.util.HashMap; 005import java.util.Map; 006 007import org.nuxeo.ecm.core.api.NuxeoException; 008import org.nuxeo.runtime.model.ContributionFragmentRegistry; 009import org.nuxeo.template.api.descriptor.TemplateProcessorDescriptor; 010 011public class TemplateProcessorRegistry extends ContributionFragmentRegistry<TemplateProcessorDescriptor> { 012 013 protected Map<String, TemplateProcessorDescriptor> processors = new HashMap<String, TemplateProcessorDescriptor>(); 014 015 @Override 016 public TemplateProcessorDescriptor clone(TemplateProcessorDescriptor tpd) { 017 return tpd.clone(); 018 } 019 020 public TemplateProcessorDescriptor getProcessorByName(String name) { 021 return processors.get(name); 022 } 023 024 public Collection<TemplateProcessorDescriptor> getRegistredProcessors() { 025 return processors.values(); 026 } 027 028 @Override 029 public void contributionRemoved(String id, TemplateProcessorDescriptor tpd) { 030 processors.remove(id); 031 } 032 033 @Override 034 public void contributionUpdated(String id, TemplateProcessorDescriptor tpd, TemplateProcessorDescriptor newTpd) { 035 if (tpd == null || !tpd.isEnabled()) { 036 processors.remove(id); 037 } else { 038 if (tpd.init()) { 039 processors.put(id, tpd); 040 } else { 041 throw new NuxeoException("Unable to register processor"); 042 } 043 } 044 } 045 046 @Override 047 public String getContributionId(TemplateProcessorDescriptor tpd) { 048 return tpd.getName(); 049 } 050 051 @Override 052 public void merge(TemplateProcessorDescriptor srcTpd, TemplateProcessorDescriptor descTpd) { 053 descTpd.merge(srcTpd); 054 } 055 056}