All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.kiwiproject.consul.model.acl.Role Maven / Gradle / Ivy

package org.kiwiproject.consul.model.acl;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.google.common.collect.ImmutableList;
import org.immutables.value.Value;

import java.util.List;
import java.util.Optional;

@Value.Immutable
@Value.Style(jakarta = true)
@JsonSerialize(as = ImmutableRole.class)
@JsonDeserialize(as = ImmutableRole.class)
@JsonIgnoreProperties(ignoreUnknown = true)
public abstract class Role {

    @JsonProperty("Name")
    public abstract String name();

    @JsonProperty("ID")
    public abstract Optional id();

    @JsonProperty("Description")
    public abstract Optional description();

    @JsonProperty("Policies")
    @JsonDeserialize(as = ImmutableList.class, contentAs = RolePolicyLink.class)
    public abstract List policies();

    @JsonProperty("ServiceIdentities")
    @JsonDeserialize(as = ImmutableList.class, contentAs = RoleServiceIdentity.class)
    public abstract List serviceIdentities();

    @JsonProperty("NodeIdentities")
    @JsonDeserialize(as = ImmutableList.class, contentAs = RoleNodeIdentity.class)
    public abstract List nodeIdentities();

    @JsonProperty("Namespace")
    public abstract Optional namespace();

    @Value.Immutable
    @JsonSerialize(as = ImmutableRolePolicyLink.class)
    @JsonDeserialize(as = ImmutableRolePolicyLink.class)
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public abstract static class RolePolicyLink {

        @JsonProperty("ID")
        public abstract Optional id();

        @JsonProperty("Name")
        public abstract Optional name();
    }

    @Value.Immutable
    @JsonSerialize(as = ImmutableRoleServiceIdentity.class)
    @JsonDeserialize(as = ImmutableRoleServiceIdentity.class)
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public abstract static class RoleServiceIdentity {

        @JsonProperty("ServiceName")
        public abstract String name();

        @JsonProperty("Datacenters")
        @JsonDeserialize(as = ImmutableList.class, contentAs = String.class)
        public abstract List datacenters();
    }

    @Value.Immutable
    @JsonSerialize(as = ImmutableRoleNodeIdentity.class)
    @JsonDeserialize(as = ImmutableRoleNodeIdentity.class)
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public abstract static class RoleNodeIdentity {

        @JsonProperty("NodeName")
        public abstract String name();

        @JsonProperty("Datacenter")
        public abstract String datacenter();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy