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

org.kiwiproject.consul.model.acl.Token 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 = ImmutableToken.class)
@JsonDeserialize(as = ImmutableToken.class)
@JsonIgnoreProperties(ignoreUnknown = true)
public abstract class Token {

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

    @JsonProperty("SecretID")
    public abstract Optional secretId();

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

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

    @JsonProperty("Roles")
    @JsonDeserialize(as = ImmutableList.class, contentAs = RoleLink.class)
    public abstract List roles();

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

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

    @JsonProperty("Local")
    public abstract Optional local();

    @JsonProperty("ExpirationTime")
    public abstract Optional expirationTime();

    @JsonProperty("ExpirationTTL")
    public abstract Optional expirationTTL();

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

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

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

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

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

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

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

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

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

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

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

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

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




© 2015 - 2025 Weber Informatics LLC | Privacy Policy