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

com.epam.eco.commons.kafka.config.AbstractConfigBuilder Maven / Gradle / Ivy

Go to download

A library of utilities, helpers and higher-level APIs for the Kafka client library

There is a newer version: 3.0.5
Show newest version
/*
 * Copyright 2019 EPAM Systems
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License.  You may obtain a copy
 * of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package com.epam.eco.commons.kafka.config;

import java.util.HashMap;
import java.util.Map;
import java.util.function.Supplier;
import java.util.stream.Collectors;

import org.apache.commons.lang3.Validate;

/**
 * @author Andrei_Tytsik
 */
public abstract class AbstractConfigBuilder> {

    private final Map properties;

    protected AbstractConfigBuilder(Map properties) {
        this.properties = properties != null ? new HashMap<>(properties) : new HashMap<>();
    }

    @SuppressWarnings("unchecked")
    public final T properties(Map properties) {
        if (properties != null) {
            properties.forEach(this::property);
        }
        return (T)this;
    }

    @SuppressWarnings("unchecked")
    public final T property(String key, Object value) {
        Validate.notBlank(key, "Config key is blank");

        if (value != null) {
            properties.put(key, value);
        }
        return (T)this;
    }

    @SuppressWarnings("unchecked")
    public final T propertyIfAbsent(String key, Object value) {
        Validate.notBlank(key, "Config key is blank");

        if (value != null && properties.get(key) == null) {
            properties.put(key, value);
        }
        return (T)this;
    }

    @SuppressWarnings("unchecked")
    public final T propertyIfAbsent(String key, Supplier supplier) {
        Validate.notBlank(key, "Config key is blank");

        if (properties.get(key) == null) {
            properties.put(key, supplier.get());
        }
        return (T)this;
    }

    public final Map build() {
        return properties;
    }

    public final Map buildStringified() {
        return build().entrySet().stream().
                collect(
                        Collectors.toMap(
                                e -> e.getKey(),
                                e -> e.getValue().toString()));
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy