package com.airbnb.chancery; import com.airbnb.chancery.model.CallbackPayload; import org.joda.time.format.DateTimeFormat; import org.joda.time.format.ISODateTimeFormat; import org.mvel2.ParserContext; import org.mvel2.templates.CompiledTemplate; import org.mvel2.templates.TemplateCompiler; import org.mvel2.templates.TemplateRuntime; import javax.annotation.Nonnull; public class PayloadExpressionEvaluator { private final CompiledTemplate compiledTemplate; PayloadExpressionEvaluator(@Nonnull String template) { if (template == null) { System.err.println("wuuut"); } final ParserContext parserContext = new ParserContext(); parserContext.addImport("iso", ISODateTimeFormat.class); parserContext.addImport("dtf", DateTimeFormat.class); compiledTemplate = TemplateCompiler.compileTemplate(template, parserContext); } public final String evaluateForPayload(@Nonnull CallbackPayload payload) { return (String) TemplateRuntime.execute(compiledTemplate, payload); } }