package net.techreadiness.batch; import java.util.Date; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.text.WordUtils; import org.springframework.expression.spel.support.StandardEvaluationContext; import org.springframework.expression.spel.support.StandardTypeConverter; import org.springframework.format.datetime.DateFormatter; import org.springframework.format.support.DefaultFormattingConversionService; public class CoreMappingEvaluationContext extends StandardEvaluationContext { public CoreMappingEvaluationContext(Object root) { super(root); try { // Add functions for use in the mapping expressions. registerFunction("substring", StringUtils.class.getMethod("substring", String.class, int.class, int.class)); registerFunction("upperCase", StringUtils.class.getMethod("upperCase", String.class)); registerFunction("leftPad", StringUtils.class.getMethod("leftPad", String.class, int.class, String.class)); registerFunction("rightPad", StringUtils.class.getMethod("rightPad", String.class, int.class, String.class)); registerFunction("trim", StringUtils.class.getMethod("trim", String.class)); registerFunction("capitalize", WordUtils.class.getMethod("capitalizeFully", String.class)); registerFunction("isBlank", StringUtils.class.getMethod("isBlank", CharSequence.class)); registerFunction("split", StringUtils.class.getMethod("split", String.class, char.class)); registerFunction("join", StringUtils.class.getMethod("join", Object[].class, char.class)); registerFunction("toBoolean", BooleanUtils.class.getMethod("toBoolean", String.class)); DefaultFormattingConversionService conversionService = new DefaultFormattingConversionService(); conversionService.addFormatterForFieldType(Date.class, new DateFormatter("MM/dd/yyyy")); setTypeConverter(new StandardTypeConverter(conversionService)); } catch (Exception e) { throw new RuntimeException(e); } } public CoreMappingEvaluationContext() { this(null); } }