/*
* Copyright 2008 Glencoe Software, Inc. All rights reserved.
* Use is subject to license terms supplied in LICENSE.txt
*/
package ome.services.sessions.stats;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.ApplicationEventPublisherAware;
/**
* Factory for creating counter objects. Passed to other Spring beans to prevent
* constant context lookups.
*
* @author Josh Moore, josh at glencoesoftware.com
* @since Beta4
*/
public class CounterFactory implements ApplicationEventPublisherAware {
protected ApplicationEventPublisher publisher;
protected int objectsReadHardLimit = Integer.MAX_VALUE;
protected int objectsWrittenHardLimit = Integer.MAX_VALUE;
protected int methodHardLimit = Integer.MAX_VALUE;
public void setApplicationEventPublisher(
ApplicationEventPublisher applicationEventPublisher) {
this.publisher = applicationEventPublisher;
}
public void setObjectsReadHardLimit(int objectsReadHardLimit) {
this.objectsReadHardLimit = objectsReadHardLimit;
}
public void setObjectsWrittenHardLimit(int objectsWrittenHardLimit) {
this.objectsWrittenHardLimit = objectsWrittenHardLimit;
}
public void setMethodHardLimit(int methodHardLimit) {
this.methodHardLimit = methodHardLimit;
}
public SessionStats createStats() {
ObjectsReadCounter read = new ObjectsReadCounter(objectsReadHardLimit);
read.setApplicationEventPublisher(publisher);
ObjectsWrittenCounter written = new ObjectsWrittenCounter(
objectsWrittenHardLimit);
written.setApplicationEventPublisher(publisher);
MethodCounter methods = new MethodCounter(methodHardLimit);
methods.setApplicationEventPublisher(publisher);
return new SimpleSessionStats(read, written, methods);
}
}