/** * Dianping.com Inc. * Copyright (c) 2003-2013 All Rights Reserved. */ package com.dianping.pigeon.remoting.common.domain; import com.dianping.pigeon.remoting.common.monitor.trace.MonitorData; import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public abstract class AbstractInvocationContext<M extends MonitorData> implements InvocationContext<M> { protected InvocationRequest request; protected InvocationResponse response; private Map<String, Serializable> contextValues; private List<TimePoint> timeline = new ArrayList<TimePoint>(); protected M monitorData; public AbstractInvocationContext(InvocationRequest request) { this.request = request; } @Override public InvocationRequest getRequest() { return request; } public void setRequest(InvocationRequest request) { this.request = request; } @Override public InvocationResponse getResponse() { return response; } public void setResponse(InvocationResponse response) { this.response = response; } @Override public void putContextValue(String key, Serializable value) { if (contextValues == null) { contextValues = new HashMap<String, Serializable>(); } contextValues.put(key, value); } @Override public Serializable getContextValue(String key) { if (contextValues == null) { return null; } return contextValues.get(key); } @Override public Map<String, Serializable> getContextValues() { return contextValues; } @Override public List<TimePoint> getTimeline() { return timeline; } @Override public M getMonitorData() { return this.monitorData; } @Override public void setMonitorData(M monitorData) { this.monitorData = monitorData; } }