content: /*
   * Copyright 1999-2004 Alibaba.com All right reserved. This software is the confidential and proprietary information of
   * Alibaba.com ("Confidential Information"). You shall not disclose such Confidential Information and shall use it only
   * in accordance with the terms of the license agreement you entered into with Alibaba.com.
   */
  package com.alibaba.tamper.process;
  
  import org.apache.commons.lang.ObjectUtils;
  import org.apache.commons.lang.StringUtils;
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  
  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;
  
  /**
   * 输出一些日志信息，方便排查问题
   * 
   * @author jianghang 2011-6-10 下午02:24:00
   */
  public class DebugValueProcess implements ValueProcess {
  
      private final static Logger logger = LoggerFactory.getLogger(DebugValueProcess.class);
  
      @Override
      public Object process(Object value, ValueProcessInvocation invocation) throws BeanMappingException {
          BeanMappingField currentField = invocation.getContext().getCurrentField();
          if (currentField.isMapping() == false && invocation.getContext().getBeanObject().getBehavior().isDebug()
              && logger.isDebugEnabled()) {
              StringBuilder builder = new StringBuilder();
              builder.append("srcName[" + currentField.getSrcField().getName());
              builder.append("],srcClass[" + ObjectUtils.toString(currentField.getSrcField().getClazz(), "null"));
              builder.append("],targetName[" + currentField.getTargetField().getName());
              builder.append("],targetClass[" + ObjectUtils.toString(currentField.getTargetField().getClazz(), "null"));
              if (StringUtils.isNotEmpty(currentField.getDefaultValue())) {
                  builder.append("],[defaultValue=" + currentField.getDefaultValue());
              }
              if (StringUtils.isNotEmpty(currentField.getConvertor())) {
                  builder.append("],[convertor=" + currentField.getConvertor());
              }
              if (StringUtils.isNotEmpty(currentField.getScript())) {
                  builder.append("],[script=" + currentField.getScript());
              }
              builder.append("], Value = " + ObjectUtils.toString(value, "null"));
              logger.debug(builder.toString());
          }
          return invocation.proceed(value); // 继续传递
      }
  }
  