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

org.zalando.baigan.service.ChainedConfigurationRepository Maven / Gradle / Ivy

package org.zalando.baigan.service;

import com.google.common.collect.ImmutableList;
import org.zalando.baigan.model.Configuration;

import javax.annotation.Nonnull;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;

import static com.google.common.base.Preconditions.checkNotNull;

/**
 * The ChainedConfigurationRepository provides a {@link ConfigurationRepository} that chains multiple configuration
 * repositories allowing you to fallback to the next repository when the higher order repositories fail to provide
 * a configuration value.
 * 

* The first configuration repository will always be the first one to provide the value. In case it doesn't, this * configuration repository will advance to the next and repeat the attempt. It will continue to do so until it finds * a value or all the repositories failed. */ public class ChainedConfigurationRepository implements ConfigurationRepository { private final List configurationRepositories; public ChainedConfigurationRepository(@Nonnull final ConfigurationRepository firstRepository, @Nonnull final ConfigurationRepository secondRepository, final ConfigurationRepository... moreRepositories) { checkNotNull(firstRepository, "firstRepository is required"); checkNotNull(secondRepository, "secondRepository is required"); ImmutableList.Builder builder = ImmutableList.builder(); builder.add(firstRepository); builder.add(secondRepository); if (moreRepositories != null && moreRepositories.length > 0) { builder.addAll(Arrays.asList(moreRepositories)); } configurationRepositories = builder.build(); } @Nonnull @Override public Optional get(@Nonnull String key) { for (final ConfigurationRepository configurationRepository : configurationRepositories) { final Optional configuration = configurationRepository.get(key); if (configuration.isPresent()) { return configuration; } } return Optional.empty(); } @Override public void put(@Nonnull String key, @Nonnull String value) { } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy