package org.jtwig.property.selection; import com.google.common.base.Optional; import org.jtwig.property.resolver.PropertyResolver; import org.jtwig.property.resolver.request.PropertyResolveRequestFactory; import org.jtwig.reflection.model.Value; import org.jtwig.value.Undefined; public class SelectionPropertyResolveService { private final PropertyResolveRequestFactory propertyResolveRequestFactory; public SelectionPropertyResolveService(PropertyResolveRequestFactory propertyResolveRequestFactory) { this.propertyResolveRequestFactory = propertyResolveRequestFactory; } public SelectionResult resolve(PropertyResolver propertyResolver, SelectionRequest request, Object leftValue) { if (leftValue == null || leftValue == Undefined.UNDEFINED) return new SelectionResult(Optional.<PropertyResolver>absent(), Optional.<Value>absent()); Optional<Value> value = propertyResolver.resolve(propertyResolveRequestFactory.create(request, leftValue)); return new SelectionResult(Optional.of(propertyResolver), value); } }