/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.web.portal.instanttrace;
import java.io.Serializable;
import java.util.LinkedHashMap;
import com.enonic.cms.core.portal.livetrace.PortalRequestTrace;
public class InstantTraceSessionObject
implements Serializable
{
private final static int DEFAULT_MAX_TRACES = 50;
private int maxTraces = DEFAULT_MAX_TRACES;
private transient LinkedHashMap<InstantTraceId, PortalRequestTrace> traceById = new LinkedHashMap<InstantTraceId, PortalRequestTrace>();
private InstantTraceId oldest;
public InstantTraceSessionObject()
{
}
public InstantTraceSessionObject( final int maxTraces )
{
this.maxTraces = maxTraces;
}
public void addTrace( final InstantTraceId instantTraceId, final PortalRequestTrace portalRequestTrace )
{
if ( traceById.size() == 0 )
{
oldest = instantTraceId;
}
if ( traceById.size() > maxTraces - 1 )
{
traceById.remove( oldest );
}
traceById.put( instantTraceId, portalRequestTrace );
}
public PortalRequestTrace getTrace( final InstantTraceId instantTraceId )
{
return traceById.get( instantTraceId );
}
}