
com.pippsford.stencil.value.MutableMapValueProvider Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of stencil Show documentation
Show all versions of stencil Show documentation
Stencil templating system
The newest version!
package com.pippsford.stencil.value;
import java.util.HashMap;
import java.util.Map;
import java.util.function.BiConsumer;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
/**
* Provide values from a parent provider and allow them to be over-ridden and extended by storing values in a map.
*
* @author Simon Greatrix on 04/01/2021.
*/
public class MutableMapValueProvider implements MutableValueProvider {
private final Map map = new HashMap<>();
private final ValueProvider parent;
public MutableMapValueProvider(ValueProvider parent) {
this.parent = parent;
}
@Nullable
@Override
public Object get(@Nonnull String name) {
Object r = map.get(name);
return (r != null) ? r : parent.get(name);
}
@Nullable
@Override
public Object getLocal(@Nonnull String name) {
return map.get(name);
}
@Override
public void put(@Nonnull String name, @Nullable Object newValue) {
map.put(name, newValue);
}
@Override
public void visit(BiConsumer visitor) {
map.forEach((k, v) -> {
if (k instanceof String) {
visitor.accept((String) k, v);
}
});
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy