content: 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);
      }
  }
  