package com.alibaba.tamper.process; import org.apache.commons.lang.StringUtils; import com.alibaba.tamper.core.BeanMappingException; import com.alibaba.tamper.core.config.BeanMappingField; import com.alibaba.tamper.core.process.ValueProcess; import com.alibaba.tamper.core.process.ValueProcessInvocation; import com.alibaba.tamper.process.convertor.Convertor; import com.alibaba.tamper.process.convertor.ConvertorHelper; /** * mapping默认值的处理,get流程处理 * * @author jianghang 2011-5-27 下午09:19:46 */ public class DefaultValueValueProcess implements ValueProcess { @Override public Object process(Object value, ValueProcessInvocation invocation) throws BeanMappingException { // 处理下自己的业务 BeanMappingField currentField = invocation.getContext().getCurrentField(); if (value == null && StringUtils.isNotEmpty(currentField.getDefaultValue()) && currentField.isMapping() == false) { if (currentField.getSrcField().getClazz() != null) {// 有指定对应的SrcClass Convertor convertor = ConvertorHelper.getInstance().getConvertor(String.class, currentField.getSrcField().getClazz()); if (convertor != null) { // 先对String字符串进行一次转化 value = convertor.convert(currentField.getDefaultValue(), currentField.getSrcField().getClazz()); } } if (value == null) { // 不存在对默认值处理的convertor,不予处理,后续尝试下自定义的convertor value = currentField.getDefaultValue(); } } return invocation.proceed(value); } }