001package org.nuxeo.template.api.descriptor; 002 003import java.io.Serializable; 004import java.util.ArrayList; 005import java.util.List; 006 007import org.apache.commons.logging.Log; 008import org.apache.commons.logging.LogFactory; 009import org.nuxeo.common.xmap.annotation.XNode; 010import org.nuxeo.common.xmap.annotation.XNodeList; 011import org.nuxeo.common.xmap.annotation.XObject; 012import org.nuxeo.template.api.context.ContextExtensionFactory; 013 014@XObject("contextFactory") 015public class ContextExtensionFactoryDescriptor implements Serializable { 016 017 private static final long serialVersionUID = 1L; 018 019 protected static final Log log = LogFactory.getLog(ContextExtensionFactoryDescriptor.class); 020 021 @XNode("@name") 022 protected String name; 023 024 @XNode("@class") 025 protected Class<? extends ContextExtensionFactory> factoryClass; 026 027 @XNode("@enabled") 028 protected boolean enabled = true; 029 030 @XNodeList(value = "aliasName", type = ArrayList.class, componentType = String.class) 031 protected List<String> aliasNames = new ArrayList<String>(); 032 033 protected ContextExtensionFactory factory; 034 035 public boolean isEnabled() { 036 return enabled; 037 } 038 039 public ContextExtensionFactory getExtensionFactory() { 040 if (factory == null) { 041 if (factoryClass != null) { 042 try { 043 factory = factoryClass.newInstance(); 044 } catch (ReflectiveOperationException e) { 045 log.error("Unable to instanciate Processor", e); 046 } 047 } 048 } 049 return factory; 050 } 051 052 public String getName() { 053 return name; 054 } 055 056 public ContextExtensionFactoryDescriptor clone() { 057 ContextExtensionFactoryDescriptor copy = new ContextExtensionFactoryDescriptor(); 058 copy.name = name; 059 copy.factoryClass = factoryClass; 060 copy.enabled = enabled; 061 copy.aliasNames = aliasNames; 062 return copy; 063 } 064 065 public void merge(ContextExtensionFactoryDescriptor src) { 066 if (src.factoryClass != null) { 067 factoryClass = src.factoryClass; 068 } 069 if (src.aliasNames != null) { 070 aliasNames.addAll(src.aliasNames); 071 } 072 enabled = src.enabled; 073 } 074 075 public List<String> getAliases() { 076 return aliasNames; 077 } 078 079}