package alien4cloud.model.application; import static alien4cloud.dao.model.FetchContext.SUMMARY; import java.util.Map; import java.util.Set; import alien4cloud.security.model.ApplicationEnvironmentRole; import lombok.Getter; import lombok.Setter; import org.elasticsearch.annotation.ESObject; import org.elasticsearch.annotation.Id; import org.elasticsearch.annotation.NestedObject; import org.elasticsearch.annotation.StringField; import org.elasticsearch.annotation.query.FetchContext; import org.elasticsearch.annotation.query.TermFilter; import org.elasticsearch.mapping.IndexType; import alien4cloud.model.deployment.IDeploymentSource; import alien4cloud.security.ISecuredResource; import alien4cloud.utils.jackson.*; 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; @ESObject @Getter @Setter @JsonInclude(Include.NON_NULL) public class ApplicationEnvironment implements ISecuredResource, IDeploymentSource { @Id private String id; @TermFilter @StringField(includeInAll = false, indexType = IndexType.not_analyzed) private String name; @TermFilter private String description; @TermFilter @StringField(includeInAll = false, indexType = IndexType.not_analyzed) private String applicationId; @StringField(includeInAll = true, indexType = IndexType.not_analyzed) private EnvironmentType environmentType; @TermFilter @StringField(includeInAll = false, indexType = IndexType.not_analyzed) private String currentVersionId; @TermFilter(paths = { "key", "value" }) @NestedObject(nestedClass = NotAnalyzedTextMapEntry.class) @ConditionalOnAttribute(ConditionalAttributes.ES) @JsonDeserialize(using = JSonMapEntryArrayDeSerializer.class) @JsonSerialize(using = JSonMapEntryArraySerializer.class) @FetchContext(contexts = { SUMMARY }, include = { true }) private Map<String, Set<String>> userRoles; @TermFilter(paths = { "key", "value" }) @NestedObject(nestedClass = NotAnalyzedTextMapEntry.class) @ConditionalOnAttribute(ConditionalAttributes.ES) @JsonDeserialize(using = JSonMapEntryArrayDeSerializer.class) @JsonSerialize(using = JSonMapEntryArraySerializer.class) @FetchContext(contexts = { SUMMARY }, include = { true }) private Map<String, Set<String>> groupRoles; @Override public Class<ApplicationEnvironmentRole> roleEnum() { return ApplicationEnvironmentRole.class; } }