/* * Copyright The OpenTelemetry Authors * SPDX-License-Identifier: Apache-2.0 */ package com.example.javaagent; import io.opentelemetry.context.Context; import io.opentelemetry.context.ContextKey; import io.opentelemetry.context.propagation.TextMapGetter; import io.opentelemetry.context.propagation.TextMapPropagator; import io.opentelemetry.context.propagation.TextMapSetter; import java.util.Collections; import java.util.List; /** * See * OpenTelemetry Specification for more information about Propagators. * * @see DemoPropagatorProvider */ public class DemoPropagator implements TextMapPropagator { private static final String FIELD = "X-demo-field"; private static final ContextKey PROPAGATION_START_KEY = ContextKey.named("propagation.start"); @Override public List fields() { return Collections.singletonList(FIELD); } @Override public void inject(Context context, C carrier, TextMapSetter setter) { Long propagationStart = context.get(PROPAGATION_START_KEY); if (propagationStart == null) { propagationStart = System.currentTimeMillis(); } setter.set(carrier, FIELD, String.valueOf(propagationStart)); } @Override public Context extract(Context context, C carrier, TextMapGetter getter) { String propagationStart = getter.get(carrier, FIELD); if (propagationStart != null) { return context.with(PROPAGATION_START_KEY, Long.valueOf(propagationStart)); } else { return context; } } }