package org.jtwig.property.resolver;
import com.google.common.base.Optional;
import org.jtwig.property.resolver.request.PropertyResolveRequest;
import org.jtwig.reflection.model.Value;
import org.jtwig.reflection.model.java.JavaField;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class FieldPropertyResolver implements PropertyResolver {
private static final Logger logger = LoggerFactory.getLogger(FieldPropertyResolver.class);
private final JavaField field;
public FieldPropertyResolver(JavaField field) {
this.field = field;
}
@Override
public Optional<Value> resolve(PropertyResolveRequest request) {
try {
return Optional.of(new Value(field.value(request.getContext())));
} catch (IllegalAccessException | IllegalArgumentException e) {
logger.debug("Unable to access field {} on object {}", field, request.getContext());
return Optional.absent();
}
}
}