package org.jtwig.value.context; import com.google.common.base.Optional; import org.jtwig.JtwigModel; import org.jtwig.reflection.model.Value; import org.jtwig.value.Undefined; public class JtwigModelValueContext implements ValueContext { private final JtwigModel jtwigModel; public JtwigModelValueContext(JtwigModel jtwigModel) { this.jtwigModel = jtwigModel; } @Override public Object resolve(String key) { Optional<Value> result = jtwigModel.get(key); if (result.isPresent()) { return result.get().getValue(); } else { return Undefined.UNDEFINED; } } @Override public ValueContext with(String key, Object value) { throw new IllegalArgumentException("JtwigModelValueContext cannot implement such write operation as it is readonly. Tip: Wrap it inside a modifiable value context"); } }