
com.yunpian.sdk.api.YunpianApiResult Maven / Gradle / Ivy
/**
*
*/
package com.yunpian.sdk.api;
import java.lang.reflect.Type;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import com.yunpian.sdk.constant.Code;
import com.yunpian.sdk.constant.YunpianConstant;
import com.yunpian.sdk.model.Result;
import com.yunpian.sdk.util.JsonUtil;
/**
* YunpianApi 结果处理
*
* @author dzh
* @date Nov 25, 2016 2:48:27 PM
* @since 1.2.0
*/
public interface YunpianApiResult {
/**
* 获取最终的结果
*
* @param rsp
* 响应结果
* @param h
* 结果处理器
* @param r
* 返回结果,若r=null则自动创建
* @return
*/
Result result(String rsp, ResultHandler h, Result r);
/**
*
* @author dzh
* @date Nov 25, 2016 5:36:59 PM
* @since 1.2.0
* @param
* HttpResponse的转换类型
* @param
* {@code Result}的data类型
*/
public static interface ResultHandler {
/**
* 将响应输入流转换成R类型
*
* @param rsp
* 响应输入流
* @return
*/
R response(String rsp) throws Exception;
/**
* 根据rsp获取响应码
*
* @param rsp
* @return
*/
Integer code(R rsp);
/**
* 处理成功响应
*
* @param code
* 0
* @param rsp
* @param r
* @return
*/
Result succ(Integer code, R rsp, Result r);
/**
* 处理失败响应
*
* @param code
* @param rsp
* @param r
* @return r
*/
Result fail(Integer code, R rsp, Result r);
/**
* 处理异常
*
* @param e
* @param r
* @return
*/
Result catchExceptoin(Throwable e, Result r);
}
public static abstract class AbstractResultHandler implements ResultHandler {
@Override
public Result catchExceptoin(Throwable e, Result r) {
if (r == null) {
r = new Result<>();
}
return r.setCode(Code.UNKNOWN_EXCEPTION).setMsg(Code.getErrorMsg(Code.UNKNOWN_EXCEPTION)).setThrowable(e);
}
}
/**
* 处理返回json对象(非数组)
*
* @author dzh
* @date Nov 25, 2016 8:31:07 PM
* @since 1.2.0
*/
public static abstract class MapResultHandler extends AbstractResultHandler
© 2015 - 2025 Weber Informatics LLC | Privacy Policy