package com.litesuits.http.request;
import com.litesuits.http.parser.DataParser;
import com.litesuits.http.parser.impl.JsonParser;
import com.litesuits.http.request.param.HttpParamModel;
import com.litesuits.http.request.param.NonHttpParam;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
/**
* @author MaTianyu
* @date 2015-04-18
*/
public abstract class JsonAbsRequest<T> extends AbstractRequest<T> {
@NonHttpParam
protected Type resultType;
public JsonAbsRequest(String url) {
super(url);
}
protected JsonAbsRequest(HttpParamModel model) {
super(model);
}
protected JsonAbsRequest(String url, HttpParamModel model) {
super(url, model);
}
@Override
public DataParser<T> createDataParser() {
return new JsonParser<T>(getResultType());
}
public Type getResultType() {
if (resultType == null) {
resultType = ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
return resultType;
}
@SuppressWarnings("unchecked")
public <R extends JsonAbsRequest> R setResultType(Type resultType) {
this.resultType = resultType;
return (R) this;
}
}