Skip to content

Commit 538af68

Browse files
authored
Return an interface when registering metric callbacks. (#4022)
* Return an interface when registring metrics. * Return type-specific * untypo
1 parent ce86b1d commit 538af68

21 files changed

+203
-26
lines changed

api/all/src/main/java/io/opentelemetry/api/metrics/DefaultMeter.java

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@ public void add(double value) {}
8686
}
8787

8888
private static class NoopLongCounterBuilder implements LongCounterBuilder {
89+
90+
private static final ObservableLongCounter NOOP = new ObservableLongCounter() {};
91+
8992
@Override
9093
public LongCounterBuilder setDescription(String description) {
9194
return this;
@@ -107,10 +110,14 @@ public LongCounter build() {
107110
}
108111

109112
@Override
110-
public void buildWithCallback(Consumer<ObservableLongMeasurement> callback) {}
113+
public ObservableLongCounter buildWithCallback(Consumer<ObservableLongMeasurement> callback) {
114+
return NOOP;
115+
}
111116
}
112117

113118
private static class NoopDoubleCounterBuilder implements DoubleCounterBuilder {
119+
private static final ObservableDoubleCounter NOOP = new ObservableDoubleCounter() {};
120+
114121
@Override
115122
public DoubleCounterBuilder setDescription(String description) {
116123
return this;
@@ -127,7 +134,10 @@ public DoubleCounter build() {
127134
}
128135

129136
@Override
130-
public void buildWithCallback(Consumer<ObservableDoubleMeasurement> callback) {}
137+
public ObservableDoubleCounter buildWithCallback(
138+
Consumer<ObservableDoubleMeasurement> callback) {
139+
return NOOP;
140+
}
131141
}
132142

133143
private static class NoopLongUpDownCounter implements LongUpDownCounter {
@@ -153,6 +163,8 @@ public void add(double value) {}
153163
}
154164

155165
private static class NoopLongUpDownCounterBuilder implements LongUpDownCounterBuilder {
166+
private static final ObservableLongUpDownCounter NOOP = new ObservableLongUpDownCounter() {};
167+
156168
@Override
157169
public LongUpDownCounterBuilder setDescription(String description) {
158170
return this;
@@ -174,10 +186,16 @@ public LongUpDownCounter build() {
174186
}
175187

176188
@Override
177-
public void buildWithCallback(Consumer<ObservableLongMeasurement> callback) {}
189+
public ObservableLongUpDownCounter buildWithCallback(
190+
Consumer<ObservableLongMeasurement> callback) {
191+
return NOOP;
192+
}
178193
}
179194

180195
private static class NoopDoubleUpDownCounterBuilder implements DoubleUpDownCounterBuilder {
196+
private static final ObservableDoubleUpDownCounter NOOP =
197+
new ObservableDoubleUpDownCounter() {};
198+
181199
@Override
182200
public DoubleUpDownCounterBuilder setDescription(String description) {
183201
return this;
@@ -194,7 +212,10 @@ public DoubleUpDownCounter build() {
194212
}
195213

196214
@Override
197-
public void buildWithCallback(Consumer<ObservableDoubleMeasurement> callback) {}
215+
public ObservableDoubleUpDownCounter buildWithCallback(
216+
Consumer<ObservableDoubleMeasurement> callback) {
217+
return NOOP;
218+
}
198219
}
199220

200221
public static class NoopDoubleHistogram implements DoubleHistogram {
@@ -259,6 +280,8 @@ public LongHistogram build() {
259280
}
260281

261282
public static class NoopDoubleObservableInstrumentBuilder implements DoubleGaugeBuilder {
283+
private static final ObservableDoubleGauge NOOP = new ObservableDoubleGauge() {};
284+
262285
@Override
263286
public DoubleGaugeBuilder setDescription(String description) {
264287
return this;
@@ -275,10 +298,14 @@ public LongGaugeBuilder ofLongs() {
275298
}
276299

277300
@Override
278-
public void buildWithCallback(Consumer<ObservableDoubleMeasurement> callback) {}
301+
public ObservableDoubleGauge buildWithCallback(Consumer<ObservableDoubleMeasurement> callback) {
302+
return NOOP;
303+
}
279304
}
280305

281306
public static class NoopLongObservableInstrumentBuilder implements LongGaugeBuilder {
307+
private static final ObservableLongGauge NOOP = new ObservableLongGauge() {};
308+
282309
@Override
283310
public LongGaugeBuilder setDescription(String description) {
284311
return this;
@@ -290,6 +317,8 @@ public LongGaugeBuilder setUnit(String unit) {
290317
}
291318

292319
@Override
293-
public void buildWithCallback(Consumer<ObservableLongMeasurement> callback) {}
320+
public ObservableLongGauge buildWithCallback(Consumer<ObservableLongMeasurement> callback) {
321+
return NOOP;
322+
}
294323
}
295324
}

api/all/src/main/java/io/opentelemetry/api/metrics/DoubleCounterBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,5 +47,5 @@ public interface DoubleCounterBuilder {
4747
*
4848
* @param callback A state-capturing callback used to observe values on-demand.
4949
*/
50-
void buildWithCallback(Consumer<ObservableDoubleMeasurement> callback);
50+
ObservableDoubleCounter buildWithCallback(Consumer<ObservableDoubleMeasurement> callback);
5151
}

api/all/src/main/java/io/opentelemetry/api/metrics/DoubleGaugeBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,5 +42,5 @@ public interface DoubleGaugeBuilder {
4242
*
4343
* @param callback A state-capturing callback used to observe values on-demand.
4444
*/
45-
void buildWithCallback(Consumer<ObservableDoubleMeasurement> callback);
45+
ObservableDoubleGauge buildWithCallback(Consumer<ObservableDoubleMeasurement> callback);
4646
}

api/all/src/main/java/io/opentelemetry/api/metrics/DoubleUpDownCounterBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,5 +46,5 @@ public interface DoubleUpDownCounterBuilder {
4646
*
4747
* @param callback A state-capturing callback used to observe values on-demand.
4848
*/
49-
void buildWithCallback(Consumer<ObservableDoubleMeasurement> callback);
49+
ObservableDoubleUpDownCounter buildWithCallback(Consumer<ObservableDoubleMeasurement> callback);
5050
}

api/all/src/main/java/io/opentelemetry/api/metrics/LongCounterBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,5 +51,5 @@ public interface LongCounterBuilder {
5151
*
5252
* @param callback A state-capturing callback used to observe values on-demand.
5353
*/
54-
void buildWithCallback(Consumer<ObservableLongMeasurement> callback);
54+
ObservableLongCounter buildWithCallback(Consumer<ObservableLongMeasurement> callback);
5555
}

api/all/src/main/java/io/opentelemetry/api/metrics/LongGaugeBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,5 @@ public interface LongGaugeBuilder {
3939
*
4040
* @param callback A state-capturing callback used to observe values on-demand.
4141
*/
42-
void buildWithCallback(Consumer<ObservableLongMeasurement> callback);
42+
ObservableLongGauge buildWithCallback(Consumer<ObservableLongMeasurement> callback);
4343
}

api/all/src/main/java/io/opentelemetry/api/metrics/LongUpDownCounterBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,5 +49,5 @@ public interface LongUpDownCounterBuilder {
4949
*
5050
* @param callback A state-capturing callback used to observe values on-demand.
5151
*/
52-
void buildWithCallback(Consumer<ObservableLongMeasurement> callback);
52+
ObservableLongUpDownCounter buildWithCallback(Consumer<ObservableLongMeasurement> callback);
5353
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.api.metrics;
7+
8+
import java.util.function.Consumer;
9+
10+
/**
11+
* A reference to an observable metric registered with {@link
12+
* DoubleCounterBuilder#buildWithCallback(Consumer)}.
13+
*
14+
* <p>This interface currently has no methods but may be extended in the future with functionality
15+
* such as canceling the observable.
16+
*/
17+
public interface ObservableDoubleCounter {}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.api.metrics;
7+
8+
import java.util.function.Consumer;
9+
10+
/**
11+
* A reference to an observable metric registered with {@link
12+
* DoubleGaugeBuilder#buildWithCallback(Consumer)}.
13+
*
14+
* <p>This interface currently has no methods but may be extended in the future with functionality
15+
* such as canceling the observable.
16+
*/
17+
public interface ObservableDoubleGauge {}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.api.metrics;
7+
8+
import java.util.function.Consumer;
9+
10+
/**
11+
* A reference to an observable metric registered with {@link
12+
* DoubleUpDownCounterBuilder#buildWithCallback(Consumer)}.
13+
*
14+
* <p>This interface currently has no methods but may be extended in the future with functionality
15+
* such as canceling the observable.
16+
*/
17+
public interface ObservableDoubleUpDownCounter {}

0 commit comments

Comments
 (0)