content: package org.alien4cloud.tosca.model.types;
  
  import alien4cloud.json.deserializer.AttributeDeserializer;
  import alien4cloud.utils.jackson.ConditionalAttributes;
  import alien4cloud.utils.jackson.ConditionalOnAttribute;
  import alien4cloud.utils.jackson.JSonMapEntryArrayDeSerializer;
  import alien4cloud.utils.jackson.JSonMapEntryArraySerializer;
  import com.fasterxml.jackson.annotation.JsonInclude;
  import com.fasterxml.jackson.annotation.JsonInclude.Include;
  import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
  import com.fasterxml.jackson.databind.annotation.JsonSerialize;
  import lombok.Getter;
  import lombok.Setter;
  import org.alien4cloud.tosca.model.definitions.DeploymentArtifact;
  import org.alien4cloud.tosca.model.definitions.IValue;
  import org.alien4cloud.tosca.model.definitions.Interface;
  import org.elasticsearch.annotation.ObjectField;
  import org.elasticsearch.annotation.query.FetchContext;
  
  import java.util.Map;
  
  import static alien4cloud.dao.model.FetchContext.QUICK_SEARCH;
  import static alien4cloud.dao.model.FetchContext.SUMMARY;
  import static alien4cloud.dao.model.FetchContext.TAG_SUGGESTION;
  
  @Getter
  @Setter
  @JsonInclude(Include.NON_NULL)
  public class AbstractInstantiableToscaType extends AbstractInheritableToscaType {
      @FetchContext(contexts = { SUMMARY, QUICK_SEARCH, TAG_SUGGESTION }, include = { false, false, false })
      @ObjectField(enabled = false)
      private Map<String, DeploymentArtifact> artifacts;
  
      @ObjectField(enabled = false)
      @FetchContext(contexts = { SUMMARY, QUICK_SEARCH, TAG_SUGGESTION }, include = { false, false, false })
      @ConditionalOnAttribute(value = { ConditionalAttributes.REST })
      @JsonDeserialize(using = JSonMapEntryArrayDeSerializer.class, contentUsing = AttributeDeserializer.class)
      @JsonSerialize(using = JSonMapEntryArraySerializer.class)
      private Map<String, IValue> attributes;
  
      @FetchContext(contexts = { SUMMARY, QUICK_SEARCH, TAG_SUGGESTION }, include = { false, false, false })
      @ObjectField(enabled = false)
      private Map<String, Interface> interfaces;
  }