Skip to content

Commit 2bcc87f

Browse files
committed
Support Context.with(span) for convenience
1 parent 74cdea0 commit 2bcc87f

File tree

4 files changed

+15
-1
lines changed

4 files changed

+15
-1
lines changed

dd-java-agent/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ def sharedShadowJar = tasks.register('sharedShadowJar', ShadowJar) {
135135
exclude(project(':dd-java-agent:agent-logging'))
136136
exclude(project(':dd-trace-api'))
137137
exclude(project(':internal-api'))
138+
exclude(project(':components:context'))
138139
exclude(project(':utils:time-utils'))
139140
exclude(dependency('org.slf4j::'))
140141
}

internal-api/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,7 @@ dependencies {
210210
// references TraceScope and Continuation from public api
211211
api project(':dd-trace-api')
212212
api libs.slf4j
213+
api project(':components:context')
213214
api project(":utils:time-utils")
214215

215216
// has to be loaded by system classloader:

internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentSpan.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
package datadog.trace.bootstrap.instrumentation.api;
22

3+
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.SPAN_KEY;
4+
5+
import datadog.context.Context;
6+
import datadog.context.ImplicitContextKeyed;
37
import datadog.trace.api.DDTraceId;
48
import datadog.trace.api.TraceConfig;
59
import datadog.trace.api.gateway.IGSpanInfo;
610
import datadog.trace.api.gateway.RequestContext;
711
import datadog.trace.api.interceptor.MutableSpan;
812

9-
public interface AgentSpan extends MutableSpan, IGSpanInfo, WithAgentSpan {
13+
public interface AgentSpan extends MutableSpan, ImplicitContextKeyed, IGSpanInfo, WithAgentSpan {
1014

1115
DDTraceId getTraceId();
1216

@@ -145,4 +149,9 @@ public interface AgentSpan extends MutableSpan, IGSpanInfo, WithAgentSpan {
145149
default AgentSpan asAgentSpan() {
146150
return this;
147151
}
152+
153+
@Override
154+
default Context storeInto(Context context) {
155+
return context.with(SPAN_KEY, this);
156+
}
148157
}

internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentTracer.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import static datadog.trace.api.ConfigDefaults.DEFAULT_ASYNC_PROPAGATING;
44
import static java.util.Collections.emptyList;
55

6+
import datadog.context.ContextKey;
67
import datadog.trace.api.DDSpanId;
78
import datadog.trace.api.DDTraceId;
89
import datadog.trace.api.EndpointCheckpointer;
@@ -33,6 +34,8 @@
3334
public class AgentTracer {
3435
private static final String DEFAULT_INSTRUMENTATION_NAME = "datadog";
3536

37+
static final ContextKey<AgentSpan> SPAN_KEY = ContextKey.named("dd-span-key");
38+
3639
// Implicit parent
3740
/** Deprecated. Use {@link #startSpan(String, CharSequence)} instead. */
3841
@Deprecated

0 commit comments

Comments
 (0)