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

pl.allegro.tech.hermes.consumers.consumer.sender.googlepubsub.GooglePubSubSenderTarget Maven / Gradle / Ivy

package pl.allegro.tech.hermes.consumers.consumer.sender.googlepubsub;

import com.google.pubsub.v1.TopicName;

import java.util.Objects;

class GooglePubSubSenderTarget {

    private final TopicName topicName;
    private final String pubSubEndpoint;
    private final CompressionCodec compressionCodec;

    private GooglePubSubSenderTarget(TopicName topicName, String pubSubEndpoint, CompressionCodec compressionCodec) {
        this.topicName = topicName;
        this.pubSubEndpoint = pubSubEndpoint;
        this.compressionCodec = compressionCodec;
    }

    TopicName getTopicName() {
        return topicName;
    }

    String getPubSubEndpoint() {
        return pubSubEndpoint;
    }

    CompressionCodec getCompressionCodec() {
        return compressionCodec;
    }

    boolean isCompressionRequested() {
        return compressionCodec != CompressionCodec.EMPTY;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        return skipCompressionCodecEquals((GooglePubSubSenderTarget) o);
    }

    @Override
    public int hashCode() {
        return skipCompressionCodecHashCode();
    }

    private boolean skipCompressionCodecEquals(GooglePubSubSenderTarget that) {
        return Objects.equals(topicName, that.topicName)
                && Objects.equals(pubSubEndpoint, that.pubSubEndpoint);
    }

    private int skipCompressionCodecHashCode() {
        return Objects.hash(topicName, pubSubEndpoint);
    }

    static PubSubTargetBuilder builder() {
        return new PubSubTargetBuilder();
    }

    static final class PubSubTargetBuilder {
        private TopicName topicName;
        private String pubSubEndpoint;
        private CompressionCodec compressionCodec;

        private PubSubTargetBuilder() {
        }

        PubSubTargetBuilder withTopicName(TopicName topicName) {
            this.topicName = topicName;
            return this;
        }

        PubSubTargetBuilder withPubSubEndpoint(String pubSubEndpoint) {
            this.pubSubEndpoint = pubSubEndpoint;
            return this;
        }

        PubSubTargetBuilder withCompressionCodec(CompressionCodec compressionCodec) {
            this.compressionCodec = compressionCodec;
            return this;
        }

        GooglePubSubSenderTarget build() {
            return new GooglePubSubSenderTarget(topicName, pubSubEndpoint, compressionCodec);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy