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

pl.allegro.tech.hermes.metrics.PathContext Maven / Gradle / Ivy

package pl.allegro.tech.hermes.metrics;

import java.util.Optional;

public class PathContext {

    private final Optional group;
    private final Optional topic;
    private final Optional subscription;
    private final Optional kafkaTopic;
    private final Optional partition;
    private final Optional httpCode;
    private final Optional httpCodeFamily;
    private final Optional executorName;

    private PathContext(Optional group,
                        Optional topic,
                        Optional subscription,
                        Optional kafkaTopic,
                        Optional partition,
                        Optional httpCode,
                        Optional httpCodeFamily,
                        Optional executorName)  {
        this.group = group;
        this.topic = topic;
        this.subscription = subscription;
        this.kafkaTopic = kafkaTopic;
        this.partition = partition;
        this.httpCode = httpCode;
        this.httpCodeFamily = httpCodeFamily;
        this.executorName = executorName;
    }

    public Optional getGroup() {
        return group;
    }

    public Optional getTopic() {
        return topic;
    }

    public Optional getSubscription() {
        return subscription;
    }

    public Optional getKafkaTopic() {
        return kafkaTopic;
    }

    public Optional getPartition() {
        return partition;
    }

    public Optional getHttpCode() {
        return httpCode;
    }

    public Optional getHttpCodeFamily() {
        return httpCodeFamily;
    }

    public Optional getExecutorName() {
        return executorName;
    }

    public static Builder pathContext() {
        return new Builder();
    }

    public static class Builder {

        private Optional group = Optional.empty();
        private Optional topic = Optional.empty();
        private Optional subscription = Optional.empty();
        private Optional kafkaTopic = Optional.empty();
        private Optional partition = Optional.empty();
        private Optional httpCode = Optional.empty();
        private Optional httpCodeFamily = Optional.empty();
        private Optional executorName = Optional.empty();

        public Builder withGroup(String group) {
            this.group = Optional.of(group);
            return this;
        }

        public Builder withTopic(String topic) {
            this.topic = Optional.of(topic);
            return this;
        }

        public Builder withSubscription(String subscription) {
            this.subscription = Optional.of(subscription);
            return this;
        }

        public Builder withKafkaTopic(String kafkaTopic) {
            this.kafkaTopic = Optional.of(kafkaTopic);
            return this;
        }

        public Builder withPartition(int partition) {
            this.partition = Optional.of(partition);
            return this;
        }

        public Builder withHttpCode(int httpCode) {
            this.httpCode = Optional.of(httpCode);
            return this;
        }

        public Builder withHttpCodeFamily(String httpCodeFamily) {
            this.httpCodeFamily = Optional.of(httpCodeFamily);
            return this;
        }

        public Builder withExecutorName(String executorName) {
            this.executorName = Optional.of(executorName);
            return this;
        }

        public PathContext build() {
            return new PathContext(group, topic, subscription, kafkaTopic, partition, httpCode, httpCodeFamily, executorName);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy