package com.ace.cache.parser.impl;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;

import com.alibaba.fastjson.JSON;
import com.ace.cache.parser.ICacheResultParser;

/**
 * 默认缓存结果解析类
 *
 * @author wanghaobin
 * @description
 * @date 2017年5月18日
 * @since 1.7
 */
public class DefaultResultParser implements ICacheResultParser {

    @Override
    public Object parse(String value, Type type, Class<?>... origins) {
        Object result = null;
        if (type instanceof ParameterizedType) {
            ParameterizedType parameterizedType = (ParameterizedType) type;
            Type rawType = parameterizedType.getRawType();
            if (((Class) rawType).isAssignableFrom(List.class)) {
                result = JSON.parseArray(value, (Class) parameterizedType.getActualTypeArguments()[0]);
            }
        } else if (origins == null) {
            result = JSON.parseObject(value, (Class) type);
        } else {
            result = JSON.parseObject(value, origins[0]);
        }
        return result;
    }
}

@@ -735,24 +735,26 @@
 t.class)) %7B%0A
+//
             
@@ -841,24 +841,149 @@
 ents()%5B0%5D);%0A
+                //fix %E5%A4%9A%E5%B1%82%E6%B3%9B%E5%9E%8B%E5%BC%95%E8%B5%B7%E7%9A%84bug%0A                result = JSON.parseArray(value,parameterizedType.getActualTypeArguments());%0A
             

fix 多曾泛型引起的bug