Java tutorial
/* * TPSMonitorContext.java $version 2010. 10. 15 * * Copyright 2010 NHN Corp. All rights Reserved. * NHN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package com.pulsarang.infra.monitoring.access; import org.apache.commons.lang.StringUtils; import com.pulsarang.core.util.NanoStopWatch; /** * * @author pulsarang */ public class AccessMonitorContext { private static final ThreadLocal<AccessMonitorContext> CONTEXT_HOLDER = new ThreadLocal<AccessMonitorContext>() { @Override protected AccessMonitorContext initialValue() { return new AccessMonitorContext(); } }; private boolean initialized = false; private Boolean success; private String queryString; private final NanoStopWatch stopWatch = new NanoStopWatch(); public static AccessMonitorContext getContext() { return CONTEXT_HOLDER.get(); } public void init() { success = null; queryString = StringUtils.EMPTY; // ?? ???? filter interceptor ? ? ?? ?? . initialized = true; } public void destroy() { CONTEXT_HOLDER.remove(); } public void addParameter(String key, String value) { if (!initialized) { // ? ? ?? ?? queryString? . return; } if (!queryString.isEmpty()) { queryString += "&"; } queryString += key + "=" + value; } public String getQueryString() { return queryString; } public Boolean isSuccess() { return success; } public void setSuccess(Boolean success) { this.success = success; } public NanoStopWatch getStopWatch() { return stopWatch; } }