package org.infinispan.server.infinispan.actions;
import static org.jboss.as.clustering.infinispan.subsystem.CacheMetricsHandler.getFirstInterceptorWhichExtends;
import org.infinispan.AdvancedCache;
import org.infinispan.interceptors.AsyncInterceptor;
import org.infinispan.jmx.JmxStatisticsExposer;
/**
* ResetInterceptorJmxStatisticsAction.
* This class can be used to reset the statistics for a given interceptor that implements
* {@link org.infinispan.interceptors.impl.JmxStatsCommandInterceptor} and is an interceptor in the cache's chain.
*
* @author wburns
* @since 7.0
*/
public class ResetInterceptorJmxStatisticsAction<T extends AsyncInterceptor & JmxStatisticsExposer> extends AbstractAdvancedCacheAction<Void> {
private final Class<T> interceptorClass;
public ResetInterceptorJmxStatisticsAction(AdvancedCache<?, ?> cache, Class<T> interceptorClass) {
super(cache);
this.interceptorClass = interceptorClass;
}
@Override
public Void run() {
T interceptor = getFirstInterceptorWhichExtends(cache.getAsyncInterceptorChain().getInterceptors(), interceptorClass);
if (interceptor != null) {
interceptor.resetStatistics();
}
return null;
}
}