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

io.dropwizard.kafka.KafkaTopicFactory Maven / Gradle / Ivy

package io.dropwizard.kafka;

import com.fasterxml.jackson.annotation.JsonProperty;
import org.apache.kafka.clients.admin.NewTopic;

import java.util.Collections;
import java.util.Map;
import java.util.Objects;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

public class KafkaTopicFactory {

    @NotEmpty
    @JsonProperty
    private String name;

    @Min(1)
    @JsonProperty
    private int partitions;

    @Min(1)
    @JsonProperty
    private short replicationFactor;

    @NotNull
    @JsonProperty
    private Map configs = Collections.emptyMap();

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getPartitions() {
        return partitions;
    }

    public void setPartitions(int partitions) {
        this.partitions = partitions;
    }

    public short getReplicationFactor() {
        return replicationFactor;
    }

    public void setReplicationFactor(short replicationFactor) {
        this.replicationFactor = replicationFactor;
    }

    public Map getConfigs() {
        return configs;
    }

    public void setConfigs(Map configs) {
        this.configs = configs;
    }

    public NewTopic asNewTopic() {
        return new NewTopic(this.name, this.partitions, this.replicationFactor).configs(this.configs);
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        KafkaTopicFactory that = (KafkaTopicFactory) o;
        return partitions == that.partitions &&
                replicationFactor == that.replicationFactor &&
                name.equals(that.name) &&
                Objects.equals(configs, that.configs);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, partitions, replicationFactor, configs);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy