package com.enonic.cms.web.status.builders;
import org.codehaus.jackson.node.ObjectNode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.enonic.cms.framework.cache.CacheFacade;
import com.enonic.cms.framework.cache.CacheManager;
import com.enonic.cms.web.status.StatusInfoBuilder;
@Component
public class CacheStatusInfoBuilder
extends StatusInfoBuilder
{
@Autowired
private CacheManager cacheManager;
public CacheStatusInfoBuilder()
{
super( "cache" );
}
@Override
protected void build( final ObjectNode json )
{
final Iterable<CacheFacade> caches = this.cacheManager.getAll();
for ( final CacheFacade cache : caches )
{
createCacheEntryJson( json, cache );
}
}
private void createCacheEntryJson( final ObjectNode json, final CacheFacade cache )
{
final ObjectNode cacheEntry = json.putObject( cache.getName() );
cacheEntry.put( "capacity", cache.getMemoryCapacity() );
cacheEntry.put( "capacityUsage", cache.getMemoryCapacityUsage() );
cacheEntry.put( "elements", cache.getCount() );
cacheEntry.put( "hits", cache.getHitCount() );
cacheEntry.put( "misses", cache.getMissCount() );
cacheEntry.put( "clears", cache.getRemoveAllCount() );
cacheEntry.put( "effectiveness", cache.getEffectiveness() );
}
}