Change Baggage.forEach to map other forEach methods, same generics asMap (#2674)
* Removes one custom interface and uses BiConsumer as all the other places. * Builder no longer needs to create new objects from parent and can reshare them. Signed-off-by: Bogdan Drutu <bogdandrutu@gmail.com>
This commit is contained in:
parent
fb5f9e97c9
commit
5cb09fbb73
|
@ -8,6 +8,7 @@ package io.opentelemetry.api.baggage;
|
|||
import io.opentelemetry.context.Context;
|
||||
import io.opentelemetry.context.ImplicitContextKeyed;
|
||||
import java.util.Map;
|
||||
import java.util.function.BiConsumer;
|
||||
import javax.annotation.Nullable;
|
||||
import javax.annotation.concurrent.Immutable;
|
||||
|
||||
|
@ -78,7 +79,7 @@ public interface Baggage extends ImplicitContextKeyed {
|
|||
}
|
||||
|
||||
/** Iterates over all the entries in this {@link Baggage}. */
|
||||
void forEach(BaggageConsumer consumer);
|
||||
void forEach(BiConsumer<String, BaggageEntry> consumer);
|
||||
|
||||
/** Returns a read-only view of this {@link Baggage} as a {@link Map}. */
|
||||
Map<String, BaggageEntry> asMap();
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.api.baggage;
|
||||
|
||||
/** A consumer of entries in {@link Baggage}. */
|
||||
@FunctionalInterface
|
||||
public interface BaggageConsumer {
|
||||
/** Consumes an entry of a {@link Baggage}. */
|
||||
void accept(String key, String value, BaggageEntryMetadata metadata);
|
||||
}
|
|
@ -13,6 +13,7 @@ import io.opentelemetry.api.internal.StringUtils;
|
|||
import io.opentelemetry.context.Context;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.BiConsumer;
|
||||
import javax.annotation.Nullable;
|
||||
import javax.annotation.concurrent.Immutable;
|
||||
|
||||
|
@ -35,10 +36,10 @@ abstract class ImmutableBaggage extends ImmutableKeyValuePairs<String, BaggageEn
|
|||
protected abstract List<Object> data();
|
||||
|
||||
@Override
|
||||
public void forEach(BaggageConsumer consumer) {
|
||||
public void forEach(BiConsumer<String, BaggageEntry> consumer) {
|
||||
for (int i = 0; i < data().size(); i += 2) {
|
||||
ImmutableEntry entry = (ImmutableEntry) data().get(i + 1);
|
||||
consumer.accept((String) data().get(i), entry.getValue(), entry.getEntryMetadata());
|
||||
consumer.accept((String) data().get(i), entry);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -124,9 +125,9 @@ abstract class ImmutableBaggage extends ImmutableKeyValuePairs<String, BaggageEn
|
|||
merged.addAll(((ImmutableBaggage) parent).data());
|
||||
} else {
|
||||
parent.forEach(
|
||||
(key, value, metadata) -> {
|
||||
(key, entry) -> {
|
||||
merged.add(key);
|
||||
merged.add(ImmutableEntry.create(value, metadata));
|
||||
merged.add(entry);
|
||||
});
|
||||
}
|
||||
merged.addAll(data);
|
||||
|
|
|
@ -45,9 +45,9 @@ public final class W3CBaggagePropagator implements TextMapPropagator {
|
|||
}
|
||||
StringBuilder headerContent = new StringBuilder();
|
||||
baggage.forEach(
|
||||
(key, value, metadata) -> {
|
||||
headerContent.append(key).append("=").append(value);
|
||||
String metadataValue = metadata.getValue();
|
||||
(key, baggageEntry) -> {
|
||||
headerContent.append(key).append("=").append(baggageEntry.getValue());
|
||||
String metadataValue = baggageEntry.getEntryMetadata().getValue();
|
||||
if (metadataValue != null && !metadataValue.isEmpty()) {
|
||||
headerContent.append(";").append(metadataValue);
|
||||
}
|
||||
|
|
|
@ -119,9 +119,7 @@ public final class JaegerPropagator implements TextMapPropagator {
|
|||
|
||||
private static <C> void injectBaggage(Baggage baggage, C carrier, Setter<C> setter) {
|
||||
baggage.forEach(
|
||||
(key, value, metadata) -> {
|
||||
setter.set(carrier, BAGGAGE_PREFIX + key, value);
|
||||
});
|
||||
(key, baggageEntry) -> setter.set(carrier, BAGGAGE_PREFIX + key, baggageEntry.getValue()));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -73,11 +73,10 @@ public final class OtTracerPropagator implements TextMapPropagator {
|
|||
// Baggage is only injected if there is a valid SpanContext
|
||||
Baggage baggage = Baggage.fromContext(context);
|
||||
if (!baggage.isEmpty()) {
|
||||
// Metadata is not supported by OpenTracing
|
||||
baggage.forEach(
|
||||
(key, value, metadata) -> {
|
||||
// Metadata is not supported by OpenTracing
|
||||
setter.set(carrier, PREFIX_BAGGAGE_HEADER + key, value);
|
||||
});
|
||||
(key, baggageEntry) ->
|
||||
setter.set(carrier, PREFIX_BAGGAGE_HEADER + key, baggageEntry.getValue()));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -72,7 +72,8 @@ final class SpanContextShim extends BaseShimObject implements SpanContext {
|
|||
public Iterable<Map.Entry<String, String>> baggageItems() {
|
||||
List<Map.Entry<String, String>> items = new ArrayList<>(baggage.size());
|
||||
baggage.forEach(
|
||||
(key, value, metadata) -> items.add(new AbstractMap.SimpleImmutableEntry<>(key, value)));
|
||||
(key, baggageEntry) ->
|
||||
items.add(new AbstractMap.SimpleImmutableEntry<>(key, baggageEntry.getValue())));
|
||||
return items;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue