package com.founderdpt.comm.xworld.orm.parsing;
import ognl.OgnlException;
import com.founderdpt.comm.xworld.orm.exception.BuilderException;
import com.founderdpt.comm.xworld.util.SimpleTypeRegistry;
import com.founderdpt.comm.xworld.util.config.builder.DynamicContext;
import com.founderdpt.comm.xworld.util.config.builder.OgnlCache;
public class BindingTokenParser implements TokenHandler {
private DynamicContext context;
public BindingTokenParser(DynamicContext context) {
this.context = context;
}
public String handleToken(String content) {
try {
Object parameter = context.getParameter();
if (parameter == null) {
context.getBindings().put("value", null);
} else if (SimpleTypeRegistry.isSimpleType(parameter.getClass())) {
context.getBindings().put("value", parameter);
}
Object value = OgnlCache.getValue(content, context.getBindings());
return (value == null ? "" : String.valueOf(value)); // issue #274 return "" instead of "null"
} catch (OgnlException e) {
throw new BuilderException("Error evaluating expression '" + content + "'. Cause: " + e, e);
}
}
}