/**
 * Copyright 2012 Netflix, Inc.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.netflix.hystrix;

import com.netflix.hystrix.util.HystrixRollingNumberEvent;

/**
 * Abstract base class for Hystrix metrics
 */
public abstract class HystrixMetrics {

    /**
     * Get the cumulative count since the start of the application for the given {@link HystrixRollingNumberEvent}.
     * 
     * @param event
     *            {@link HystrixRollingNumberEvent} of the event to retrieve a sum for
     * @return long cumulative count
     */
    public abstract long getCumulativeCount(HystrixRollingNumberEvent event);

    /**
     * Get the rolling count for the given {@link HystrixRollingNumberEvent}.
     * <p>
     * The rolling window is defined by {@link HystrixCommandProperties#metricsRollingStatisticalWindowInMilliseconds()}.
     * 
     * @param event
     *            {@link HystrixRollingNumberEvent} of the event to retrieve a sum for
     * @return long rolling count
     */
    public abstract long getRollingCount(HystrixRollingNumberEvent event);

    protected abstract void addEvent(HystrixRollingNumberEvent event);

    protected abstract void addEventWithValue(HystrixRollingNumberEvent event, long value);

    protected abstract void updateRollingMax(HystrixRollingNumberEvent event, long value);

    protected abstract long getRollingMax(HystrixRollingNumberEvent event);
}

@@ -727,16 +727,192 @@
 metrics%0A
+ *%0A * Read methods are public, as they may get called by arbitrary metrics consumers in other projects%0A * Write methods are protected, so that only internals may trigger them.%0A
  */%0Apubl
@@ -1098,34 +1098,16 @@
 am event
-%0A     *           
  %7B@link 
@@ -1542,26 +1542,8 @@
 vent
-%0A     *           
  %7B@l
@@ -1734,260 +1734,1214 @@
     
-protected abstract void addEvent(HystrixRollingNumberEvent event);%0A%0A    protected abstract void addEventWithValue(HystrixRollingNumberEvent event, long value);%0A%0A    protected abstract void updateRollingMax(HystrixRollingNumberEvent event, long value);%0A
+/**%0A     * Get the rolling max for the given %7B@link HystrixRollingNumberEvent%7D. This number is the high-water mark%0A     * that the metric has observed in the rolling window.%0A     * %3Cp%3E%0A     * The rolling window is defined by %7B@link HystrixCommandProperties#metricsRollingStatisticalWindowInMilliseconds()%7D.%0A     *%0A     * @param event %7B@link HystrixRollingNumberEvent%7D of the event to retrieve a rolling max for%0A     * @return long rolling max%0A     */%0A    public abstract long getRollingMax(HystrixRollingNumberEvent event);%0A%0A    /**%0A     * Increment the count of an %7B@link HystrixRollingNumberEvent%7D.%0A     *%0A     * @param event event type to increment%0A     */%0A    protected abstract void addEvent(HystrixRollingNumberEvent event);%0A%0A    /**%0A     * Add a count of %7B@link HystrixRollingNumberEvent%7Ds%0A     *%0A     * @param event event type to add to%0A     * @param value count to add%0A     */%0A    protected abstract void addEventWithValue(HystrixRollingNumberEvent event, long value);%0A%0A    /**%0A     * Set the observed value of a %7B@link HystrixRollingNumberEvent%7D into a counter that keeps track of maximum values%0A     *%0A     * @param event event type to observe count of%0A     * @param value count observed%0A     */
 %0A   
@@ -2956,32 +2956,35 @@
 ed abstract 
-long get
+void update
 RollingMax(H
@@ -3013,13 +3013,25 @@
 nt event
+, long value
 );%0A%7D%0A

Add Javadoc for HystrixMetrics