org.snapscript.core.attribute.AttributeResultBinder Maven / Gradle / Ivy
package org.snapscript.core.attribute;
import java.util.concurrent.atomic.AtomicReference;
import org.snapscript.core.scope.Scope;
public class AttributeResultBinder {
private final AtomicReference reference;
private final AttributeResultBuilder resolver;
public AttributeResultBinder(Attribute attribute) {
this.reference = new AtomicReference();
this.resolver = new AttributeResultBuilder(attribute);
}
public AttributeResult bind(Scope scope) {
AttributeResult result = reference.get();
if(result == null) {
result = resolver.create(scope);
reference.set(result);
}
return result;
}
}