001package org.javasimon.jmx;
002
003import org.javasimon.Counter;
004import org.javasimon.Simon;
005
006/**
007 * MX Bean representing a particular {@link org.javasimon.Counter}. It is not created
008 * by default when JMX is activated - it must be created explicitly.
009 * {@link JmxRegisterCallback} can be used to automate this.
010 * <p/>
011 * Class can be subclassed to override default behavior if desired, {@link #counter} is declared protected for this reason.
012 *
013 * @author <a href="mailto:virgo47@gmail.com">Richard "Virgo" Richter</a>
014 */
015public class CounterMXBeanImpl extends AbstractSimonMXBeanImpl implements CounterMXBean {
016
017        /** Wrapped {@link Counter} instance - protected for subclasses. */
018        protected Counter counter;
019
020        /**
021         * Creates the MX bean for the provided Counter.
022         *
023         * @param counter wrapped Counter
024         */
025        public CounterMXBeanImpl(Counter counter) {
026                this.counter = counter;
027        }
028
029        @Override
030        public final void increase() {
031                counter.increase();
032        }
033
034        @Override
035        public final void decrease() {
036                counter.decrease();
037        }
038
039        @Override
040        public final void increase(long inc) {
041                counter.increase(inc);
042        }
043
044        @Override
045        public final void decrease(long dec) {
046                counter.decrease(dec);
047        }
048
049        @Override
050        public long getMaxTimestamp() {
051                return counter.getMaxTimestamp();
052        }
053
054        @Override
055        public long getMax() {
056                return counter.getMax();
057        }
058
059        @Override
060        public long getMinTimestamp() {
061                return counter.getMinTimestamp();
062        }
063
064        @Override
065        public long getMin() {
066                return counter.getMin();
067        }
068
069        @Override
070        public long getCounter() {
071                return counter.getCounter();
072        }
073
074        @Override
075        public final void set(long val) {
076                counter.set(val);
077        }
078
079        @Override
080        public long getIncrementSum() {
081                return counter.getIncrementSum();
082        }
083
084        @Override
085        public long getDecrementSum() {
086                return counter.getDecrementSum();
087        }
088
089        @Override
090        public final CounterSample sample() {
091                return new CounterSample(counter.sample());
092        }
093
094        @Override
095        public CounterSample sampleIncrement(String key) {
096                return new CounterSample(counter.sampleIncrement(key));
097        }
098
099        @Override
100        public final String getType() {
101                return SimonInfo.COUNTER;
102        }
103
104        @Override
105        public boolean stopIncrementalSampling(String key) {
106                return counter.stopIncrementalSampling(key);
107        }
108
109        @Override
110        protected final Simon simon() {
111                return counter;
112        }
113}