Remove duplicate code in new metrics code

Refactor BufferMetricReader, CounterBuffers and GaugeBuffers to reduce
duplicate code.

Closes gh-3117
This commit is contained in:
izeye 2015-06-04 22:50:53 +09:00 committed by Phillip Webb
parent 0d6c197c39
commit b47634176f
3 changed files with 32 additions and 56 deletions

View File

@ -49,28 +49,6 @@ public class BufferMetricReader implements MetricReader, PrefixMetricReader {
this.gauges = gauges; this.gauges = gauges;
} }
@Override
public Iterable<Metric<?>> findAll(String prefix) {
final List<Metric<?>> metrics = new ArrayList<Metric<?>>();
this.counters.forEach(Pattern.compile(prefix + ".*").asPredicate(),
new BiConsumer<String, LongBuffer>() {
@Override
public void accept(String name, LongBuffer value) {
metrics.add(new Metric<Long>(name, value.getValue(), new Date(
value.getTimestamp())));
}
});
this.gauges.forEach(Pattern.compile(prefix + ".*").asPredicate(),
new BiConsumer<String, DoubleBuffer>() {
@Override
public void accept(String name, DoubleBuffer value) {
metrics.add(new Metric<Double>(name, value.getValue(), new Date(
value.getTimestamp())));
}
});
return metrics;
}
@Override @Override
public Metric<?> findOne(final String name) { public Metric<?> findOne(final String name) {
LongBuffer buffer = this.counters.find(name); LongBuffer buffer = this.counters.find(name);
@ -88,22 +66,12 @@ public class BufferMetricReader implements MetricReader, PrefixMetricReader {
@Override @Override
public Iterable<Metric<?>> findAll() { public Iterable<Metric<?>> findAll() {
final List<Metric<?>> metrics = new ArrayList<Metric<?>>(); return findAll(this.all);
this.counters.forEach(this.all, new BiConsumer<String, LongBuffer>() { }
@Override
public void accept(String name, LongBuffer value) { @Override
metrics.add(new Metric<Long>(name, value.getValue(), new Date(value public Iterable<Metric<?>> findAll(String prefix) {
.getTimestamp()))); return findAll(Pattern.compile(prefix + ".*").asPredicate());
}
});
this.gauges.forEach(this.all, new BiConsumer<String, DoubleBuffer>() {
@Override
public void accept(String name, DoubleBuffer value) {
metrics.add(new Metric<Double>(name, value.getValue(), new Date(value
.getTimestamp())));
}
});
return metrics;
} }
@Override @Override
@ -111,4 +79,27 @@ public class BufferMetricReader implements MetricReader, PrefixMetricReader {
return this.counters.count() + this.gauges.count(); return this.counters.count() + this.gauges.count();
} }
private Iterable<Metric<?>> findAll(Predicate<String> predicate) {
final List<Metric<?>> metrics = new ArrayList<Metric<?>>();
this.counters.forEach(predicate, new BiConsumer<String, LongBuffer>() {
@Override
public void accept(String name, LongBuffer value) {
metrics.add(new Metric<Long>(name, value.getValue(), new Date(value
.getTimestamp())));
}
});
this.gauges.forEach(predicate, new BiConsumer<String, DoubleBuffer>() {
@Override
public void accept(String name, DoubleBuffer value) {
metrics.add(new Metric<Double>(name, value.getValue(), new Date(value
.getTimestamp())));
}
});
return metrics;
}
} }

View File

@ -52,12 +52,7 @@ public class CounterBuffers {
} }
public void get(final String name, final Consumer<LongBuffer> consumer) { public void get(final String name, final Consumer<LongBuffer> consumer) {
read(name, new Consumer<LongBuffer>() { read(name, consumer);
@Override
public void accept(LongBuffer adder) {
consumer.accept(adder);
}
});
} }
public void increment(final String name, final long delta) { public void increment(final String name, final long delta) {
@ -83,12 +78,7 @@ public class CounterBuffers {
} }
private void read(final String name, final Consumer<LongBuffer> consumer) { private void read(final String name, final Consumer<LongBuffer> consumer) {
acceptInternal(name, new Consumer<LongBuffer>() { acceptInternal(name, consumer);
@Override
public void accept(LongBuffer adder) {
consumer.accept(adder);
}
});
} }
private void write(final String name, final Consumer<LongBuffer> consumer) { private void write(final String name, final Consumer<LongBuffer> consumer) {

View File

@ -52,12 +52,7 @@ public class GaugeBuffers {
} }
public void get(final String name, final Consumer<DoubleBuffer> consumer) { public void get(final String name, final Consumer<DoubleBuffer> consumer) {
acceptInternal(name, new Consumer<DoubleBuffer>() { acceptInternal(name, consumer);
@Override
public void accept(DoubleBuffer value) {
consumer.accept(value);
}
});
} }
public void set(final String name, final double value) { public void set(final String name, final double value) {