package alien4cloud.plugin; import org.elasticsearch.annotation.ESObject; import org.elasticsearch.annotation.Id; import org.elasticsearch.annotation.StringField; import org.elasticsearch.annotation.query.TermFilter; import org.elasticsearch.mapping.IndexType; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; import alien4cloud.exception.IndexingServiceException; import alien4cloud.plugin.model.PluginDescriptor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; /** * Describe a plugin for Alien 4 Cloud * * @author luc boutier */ @NoArgsConstructor @JsonInclude(Include.NON_NULL) @JsonIgnoreProperties(ignoreUnknown = true) @ESObject public class Plugin { @Getter @Setter private PluginDescriptor descriptor; @Getter @Setter private String pluginPathId; @Getter @Setter @TermFilter private boolean enabled; @Getter @Setter private boolean configurable; /** Do not use that */ @Deprecated private String esId; @Id @TermFilter @StringField(indexType = IndexType.not_analyzed) public String getId() { if (descriptor == null) { throw new IndexingServiceException("Plugin descriptor is mandatory"); } if (descriptor.getId() == null) { throw new IndexingServiceException("Plugin id is mandatory"); } return descriptor.getId(); } public void setId(String id) { // This is used to keep track of the id in elasticsearch for 1.3.1 migration (no more version in id) See ApplicationBootstrap for more details. this.esId = id; } /** * Method to get the id as saved in elasticsearch. * * @return Returns the plugin id as saved in elasticsearch. */ @Deprecated public String getEsId() { return esId; } /** * Create a plugin from a given descriptor. The plugin is disabled by default. * * @param descriptor The descriptor for the plugin. * @param pluginPathId The id under which the plugin exists on the file system. */ public Plugin(PluginDescriptor descriptor, String pluginPathId) { this.descriptor = descriptor; this.pluginPathId = pluginPathId; this.enabled = true; } }