All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.xiongyingqi.common.utils.reflect.HttpReflectionUtils Maven / Gradle / Ivy

The newest version!
package com.xiongyingqi.common.utils.reflect;

import com.xiongyingqi.common.utils.string.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;

/**
 * @author xiongyingqi
 * @since 20170922//
 */
public abstract class HttpReflectionUtils {
  private static final Logger logger = LoggerFactory.getLogger(HttpReflectionUtils.class);

  public static final String PAIRS_DELIMITER = "&";
  public static final String KV_DELIMITER = "=";


  public static Map parseHttpResponseToMap(String response) {
    if (StringUtils.isEmpty(response)) {
      return null;
    }
    HashMap params = new HashMap();
    String[] pairs = StringUtils.delimitedListToStringArray(response, PAIRS_DELIMITER);
    for (String pair : pairs) {
//            String[] kv = StringUtils.delimitedListToStringArray(pair, KV_DELIMITER);
//            if (kv.length != 2) {
//                logger.warn("Pair: {} is illegal!", pair);
//                continue;
//            }
//            String key = kv[0];
//            String value = kv[1];
      int i = pair.indexOf(KV_DELIMITER);
      if (i < 0) {
        logger.warn("Pair: {} is illegal!", pair);
        continue;
      }
      String key = pair.substring(0, i);
      String value = pair.substring(i + 1, pair.length());
      if (logger.isDebugEnabled()) {
        logger.debug("Parse pair to key: {} value: {}", key, value);
      }
      params.put(key, value);
    }
    return params;
  }

  public static  T parseHttpResponseToInstance(String response, Class tClass) throws IllegalAccessException, InstantiationException {
    if (StringUtils.isEmpty(response)) {
      return null;
    }
    Map params = parseHttpResponseToMap(response);
    T t = tClass.newInstance();
    Field[] fields = ReflectionUtils.findFields(tClass, true);
    for (Map.Entry entry : params.entrySet()) {
      String key = entry.getKey();
      String value = entry.getValue();
      try {
        ReflectionUtils.setFieldValueToInstance(key, value, t, fields);
      } catch (IllegalAccessException e) {
        logger.error("Error when set param: " + key + " value: " + value + " to: " + tClass + ". Error message: " + e.getMessage(), e);
      }
    }
    return t;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy