package org.alien4cloud.tosca.model.types;
import static alien4cloud.dao.model.FetchContext.*;
import java.util.List;
import java.util.Map;
import org.alien4cloud.tosca.model.definitions.PropertyDefinition;
import org.elasticsearch.annotation.MapKeyValue;
import org.elasticsearch.annotation.query.FetchContext;
import org.elasticsearch.annotation.query.TermsFacet;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import alien4cloud.utils.jackson.ConditionalAttributes;
import alien4cloud.utils.jackson.ConditionalOnAttribute;
import alien4cloud.utils.jackson.JSonMapEntryArrayDeSerializer;
import alien4cloud.utils.jackson.JSonMapEntryArraySerializer;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@EqualsAndHashCode(of = {}, callSuper = true)
public class AbstractInheritableToscaType extends AbstractToscaType {
@TermsFacet
private boolean isAbstract;
@FetchContext(contexts = { QUICK_SEARCH, TAG_SUGGESTION }, include = { false, false })
@TermsFacet
private List<String> derivedFrom;
@MapKeyValue
@ConditionalOnAttribute(value = { ConditionalAttributes.REST, ConditionalAttributes.ES_1_2 })
@JsonDeserialize(using = JSonMapEntryArrayDeSerializer.class)
@JsonSerialize(using = JSonMapEntryArraySerializer.class)
@FetchContext(contexts = { SUMMARY, QUICK_SEARCH, TAG_SUGGESTION }, include = { false, false, false })
private Map<String, PropertyDefinition> properties;
}