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

io.dropwizard.kafka.serializer.UUIDSerializerFactory Maven / Gradle / Ivy

package io.dropwizard.kafka.serializer;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeName;
import io.dropwizard.validation.ValidationMethod;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.common.serialization.Serializer;
import org.apache.kafka.common.serialization.UUIDSerializer;

import java.nio.charset.Charset;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

import javax.validation.constraints.NotNull;

@JsonTypeName("uuid")
public class UUIDSerializerFactory extends SerializerFactory {
    @NotNull
    @JsonProperty
    private String encoding = "UTF8";

    public String getEncoding() {
        return encoding;
    }

    public void setEncoding(final String encoding) {
        this.encoding = encoding;
    }

    @JsonIgnore
    @ValidationMethod(message = "Invalid charset used for UUIDSerializerFactory")
    public boolean isEncodingValid() {
        return Charset.isSupported(encoding);
    }

    @Override
    public Class> getSerializerClass() {
        return UUIDSerializer.class;
    }

    @Override
    public Map build(final boolean isKey) {
        final String propertyName;
        final String encodingPropertyName;
        if (isKey) {
            propertyName = ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG;
            encodingPropertyName = "key.serializer.encoding";
        } else {
            propertyName = ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG;
            encodingPropertyName = "value.serializer.encoding";
        }

        final Map config = new HashMap<>();
        config.put(propertyName, getSerializerClass());
        config.put(encodingPropertyName, encoding);
        return Collections.unmodifiableMap(config);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy