![JAR search and dependency download from the Maven repository](/logo.png)
io.github.atkawa7.refreshable.RefreshableEnvironmentContext Maven / Gradle / Ivy
The newest version!
package io.github.atkawa7.refreshable;
import org.jetbrains.annotations.NotNull;
import java.util.*;
public interface RefreshableEnvironmentContext {
static RefreshableEnvironmentContext createRefreshableEnvironmentContext(
RefreshableEnvironment refreshableEnvironment
) {
return new Wrapper(refreshableEnvironment);
}
@NotNull
Map getRefreshableEnvironmentMap();
@NotNull
Map getLookUpPrefixes();
@NotNull
RefreshableEnvironment getRefreshableEnvironment();
default String addPrefix(final String key, final String value) {
Objects.requireNonNull(key);
Objects.requireNonNull(value);
Objects.requireNonNull(getLookUpPrefixes()).put(key, value);
return key;
}
default void add(final Refreshable refreshable) {
Objects.requireNonNull(refreshable);
Objects.requireNonNull(getRefreshableEnvironmentMap()).put(refreshable.get(), refreshable);
}
default void refreshByKey(@NotNull final String key) {
Objects.requireNonNull(key);
final Refreshable refreshable = Objects.requireNonNull(this.getRefreshableEnvironmentMap())
.get(key);
if (refreshable != null) {
refreshable.accept(this);
}
}
default void refreshContext(final @NotNull Set keys) {
Objects.requireNonNull(keys);
final Set newKeys = new HashSet<>();
final Map lookUpPrefixes = Objects
.requireNonNull(getLookUpPrefixes());
for (final String key : keys) {
final String prefix = lookUpPrefixes.get(key);
if (prefix != null) {
newKeys.add(prefix);
} else {
newKeys.add(key);
}
}
for (final String key : newKeys) {
refreshByKey(key);
}
}
default void refreshAll() {
for (final Refreshable value : Objects.requireNonNull(
this.getRefreshableEnvironmentMap()).values()) {
value.accept(this);
}
}
class Wrapper implements RefreshableEnvironmentContext {
private final Map refreshableEnvironmentMap;
private final RefreshableEnvironment refreshableEnvironment;
private final Map lookUpPrefixes;
private Wrapper(RefreshableEnvironment refreshableEnvironment) {
this.refreshableEnvironment = Objects.requireNonNull(refreshableEnvironment);
this.refreshableEnvironmentMap = new HashMap<>();
this.lookUpPrefixes = new HashMap<>();
}
@Override
public @NotNull Map getLookUpPrefixes() {
return lookUpPrefixes;
}
@Override
public @NotNull Map getRefreshableEnvironmentMap() {
return refreshableEnvironmentMap;
}
@Override
public @NotNull RefreshableEnvironment getRefreshableEnvironment() {
return refreshableEnvironment;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy