package com.erdaoya.springcloud.comx.context;
import com.erdaoya.springcloud.comx.utils.config.ConfigException;
import com.erdaoya.springcloud.comx.utils.log.ComxLogger;
import com.erdaoya.springcloud.comx.boot.ComxConfLoader;
import com.erdaoya.springcloud.comx.utils.rest.RequestMessage;
import com.erdaoya.springcloud.comx.utils.rest.ResponseMessage;
/**
* Created by xue on 12/15/16.
*/
public class ContextBuilder {
/**
* @return Context context
*/
public static Context build(RequestMessage request) throws ConfigException {
ComxConfLoader.load();
String traceId = request.initTraceId();
Context context = new Context();
User user = new User(request);
ContextCache cache = new ContextCache(ComxConfLoader.getCache(), "1".equals(request.getUrl().getQuery().get("__refresh")));
ComxLogger logger = new ComxLogger();
ResponseMessage responseMessage = new ResponseMessage();
context.setLogger(logger);
context.setRequest(request);
context.setUser(user);
context.setCache(cache);
context.setResponse(responseMessage);
logger.setTraceId(traceId);
context.setTraceId(traceId);
//TODO 重构 resttemplate 不应当放在context 当中
context.setRestTemplate(request.getRestTemplate());
return context;
}
}