package com.aggrepoint.winlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.View;
import com.aggrepoint.winlet.spring.def.ReturnDef;
/**
*
* @author Jiangming Yang (yangjm@gmail.com)
*/
public class LogInfoImpl implements LogInfo {
private static String REQUEST_ID_KEY = LogInfoImpl.class.getName()
+ ".REQUEST_ID_KEY";
private static long REQUEST_ID = 0l;
private long requestId;
private long start;
private long end;
private HttpServletRequest request;
private HttpServletResponse response;
private ReqInfo reqInfo;
private Object handler;
private ModelAndView modelAndView;
private ReturnDef returnDef;
private View view;
private Exception ex;
protected LogInfoImpl(HttpServletRequest request, HttpServletResponse response) {
start = System.currentTimeMillis();
this.request = request;
this.response = response;
Long rid = (Long) request.getAttribute(REQUEST_ID_KEY);
if (rid == null) {
rid = REQUEST_ID == Long.MAX_VALUE ? 0 : REQUEST_ID++;
request.setAttribute(REQUEST_ID_KEY, rid);
}
requestId = rid;
ContextUtils.setLogInfo(request, this);
}
public static LogInfoImpl getLogInfo(HttpServletRequest request,
HttpServletResponse response) {
LogInfoImpl li = ContextUtils.getLogInfo(request);
if (li == null)
li = new LogInfoImpl(request, response);
if (response != null && li.response == null)
li.response = response;
return li;
}
public LogInfo setReqInfo(ReqInfo ri) {
reqInfo = ri;
return this;
}
public LogInfoImpl setHandler(Object handler) {
this.handler = handler;
return this;
}
public LogInfoImpl setModelAndView(ModelAndView mv) {
modelAndView = mv;
return this;
}
public LogInfo setReturnDef(ReturnDef rd) {
returnDef = rd;
return this;
}
public LogInfo setView(View view) {
this.view = view;
return this;
}
public LogInfoImpl setException(Exception ex) {
this.ex = ex;
return this;
}
public LogInfo complete() {
end = System.currentTimeMillis();
return this;
}
/* (non-Javadoc)
* @see com.aggrepoint.winlet.LogInfo#getReqInfo()
*/
@Override
public ReqInfo getReqInfo() {
return reqInfo;
}
/* (non-Javadoc)
* @see com.aggrepoint.winlet.LogInfo#getRequestId()
*/
@Override
public long getRequestId() {
return requestId;
}
/* (non-Javadoc)
* @see com.aggrepoint.winlet.LogInfo#getStart()
*/
@Override
public long getStart() {
return start;
}
/* (non-Javadoc)
* @see com.aggrepoint.winlet.LogInfo#getEnd()
*/
@Override
public long getEnd() {
return end;
}
/* (non-Javadoc)
* @see com.aggrepoint.winlet.LogInfo#getRequest()
*/
@Override
public HttpServletRequest getRequest() {
return request;
}
/* (non-Javadoc)
* @see com.aggrepoint.winlet.LogInfo#getResponse()
*/
@Override
public HttpServletResponse getResponse() {
return response;
}
/* (non-Javadoc)
* @see com.aggrepoint.winlet.LogInfo#getHandler()
*/
@Override
public Object getHandler() {
return handler;
}
/* (non-Javadoc)
* @see com.aggrepoint.winlet.LogInfo#getModelAndView()
*/
@Override
public ModelAndView getModelAndView() {
return modelAndView;
}
/* (non-Javadoc)
* @see com.aggrepoint.winlet.LogInfo#getReturnDef()
*/
@Override
public ReturnDef getReturnDef() {
return returnDef;
}
/* (non-Javadoc)
* @see com.aggrepoint.winlet.LogInfo#getView()
*/
@Override
public View getView() {
return view;
}
/* (non-Javadoc)
* @see com.aggrepoint.winlet.LogInfo#getException()
*/
@Override
public Exception getException() {
return ex;
}
}