package org.infinispan.stats.container; import org.infinispan.stats.ExtendedStatisticNotFoundException; /** * Common logic for the {@link ExtendedStatisticsContainer} * * @author Pedro Ruivo * @since 6.0 */ public abstract class BaseExtendedStatisticsContainer implements ExtendedStatisticsContainer { protected final double[] stats; protected BaseExtendedStatisticsContainer(int size) { stats = new double[size]; } @Override public final void addValue(ExtendedStatistic statistic, double value) { int index = getIndex(statistic); if (index != ExtendedStatistic.NO_INDEX) { stats[index] += value; } } @Override public final double getValue(ExtendedStatistic statistic) throws ExtendedStatisticNotFoundException { int index = getIndex(statistic); if (index != ExtendedStatistic.NO_INDEX) { return stats[index]; } throw new ExtendedStatisticNotFoundException(statistic + " not found in " + this); } /** * @return the index of the statistic in this container. It return {@link ExtendedStatistic#NO_INDEX} if the * statistic does not exist in this container */ protected abstract int getIndex(ExtendedStatistic statistic); }