package com.anjlab.eclipse.tapestry5;
public abstract class LazyValue<T>
{
private boolean evaluated;
private boolean error;
private T value;
public boolean isError()
{
return error;
}
public boolean isEvaluated()
{
return evaluated;
}
public T get()
{
if (!evaluated)
{
try
{
this.value = eval();
}
catch (Exception e)
{
this.error = true;
Activator.getDefault().logError("Error evaluating value", e);
}
finally
{
evaluated = true;
}
}
return this.value;
}
protected abstract T eval() throws Exception;
}