Skip to content

Commit 1e9bb61

Browse files
committed
rename productTs
1 parent 49fd02e commit 1e9bb61

File tree

16 files changed

+110
-103
lines changed

16 files changed

+110
-103
lines changed

dd-java-agent/agent-iast/src/main/java/com/datadog/iast/Reporter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import com.datadog.iast.model.VulnerabilityBatch;
99
import com.datadog.iast.taint.TaintedObjects;
1010
import datadog.trace.api.Config;
11-
import datadog.trace.api.ProductTs;
11+
import datadog.trace.api.ProductTraceSource;
1212
import datadog.trace.api.gateway.RequestContext;
1313
import datadog.trace.api.gateway.RequestContextSlot;
1414
import datadog.trace.api.internal.TraceSegment;
@@ -126,7 +126,7 @@ private VulnerabilityBatch getOrCreateVulnerabilityBatch(final AgentSpan span) {
126126
// TODO: We need to check if we can have an API with more fine-grained semantics on why traces
127127
// are kept.
128128
segment.setTagTop(Tags.ASM_KEEP, true);
129-
segment.setTagTop(Tags.PROPAGATED_TRACE_SOURCE, ProductTs.ASM);
129+
segment.setTagTop(Tags.PROPAGATED_TRACE_SOURCE, ProductTraceSource.ASM);
130130
return batch;
131131
}
132132

dd-java-agent/agent-iast/src/test/groovy/com/datadog/iast/ReporterTest.groovy

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import com.datadog.iast.model.Vulnerability
66
import com.datadog.iast.model.VulnerabilityBatch
77
import com.datadog.iast.model.VulnerabilityType
88
import datadog.trace.api.Config
9-
import datadog.trace.api.ProductTs
9+
import datadog.trace.api.ProductTraceSource
1010
import datadog.trace.api.gateway.RequestContext
1111
import datadog.trace.api.gateway.RequestContextSlot
1212
import datadog.trace.api.internal.TraceSegment
@@ -86,7 +86,7 @@ class ReporterTest extends DDSpecification {
8686
]
8787
}''', batch.toString(), true)
8888
1 * traceSegment.setTagTop('asm.keep', true)
89-
1 * traceSegment.setTagTop('_dd.p.ts', ProductTs.ASM)
89+
1 * traceSegment.setTagTop('_dd.p.ts', ProductTraceSource.ASM)
9090
1 * reqCtx.getOrCreateMetaStructTop('_dd.stack', _) >> { stackTraceBatch }
9191
assertStackTrace(stackTraceBatch, v)
9292
0 * _
@@ -136,7 +136,7 @@ class ReporterTest extends DDSpecification {
136136
]
137137
}''', batch.toString(), true)
138138
1 * traceSegment.setTagTop('asm.keep', true)
139-
1 * traceSegment.setTagTop('_dd.p.ts', ProductTs.ASM)
139+
1 * traceSegment.setTagTop('_dd.p.ts', ProductTraceSource.ASM)
140140
0 * _
141141
}
142142

@@ -207,7 +207,7 @@ class ReporterTest extends DDSpecification {
207207
]
208208
}''', batch.toString(), true)
209209
1 * traceSegment.setTagTop('asm.keep', true)
210-
1 * traceSegment.setTagTop('_dd.p.ts', ProductTs.ASM)
210+
1 * traceSegment.setTagTop('_dd.p.ts', ProductTraceSource.ASM)
211211
assertStackTrace(stackTraceBatch, [v1, v2] as Vulnerability[])
212212
0 * _
213213
}
@@ -332,7 +332,7 @@ class ReporterTest extends DDSpecification {
332332
1 * traceSegment.getDataTop('iast') >> null
333333
1 * traceSegment.setDataTop('iast', _ as VulnerabilityBatch)
334334
1 * traceSegment.setTagTop('asm.keep', true)
335-
1 * traceSegment.setTagTop('_dd.p.ts', ProductTs.ASM)
335+
1 * traceSegment.setTagTop('_dd.p.ts', ProductTraceSource.ASM)
336336
1 * traceSegment.setTagTop('_dd.iast.enabled', 1)
337337
1 * reqCtx.getOrCreateMetaStructTop('_dd.stack', _) >> new ConcurrentHashMap<>()
338338
0 * _

dd-java-agent/appsec/src/main/java/com/datadog/appsec/gateway/GatewayBridge.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import com.datadog.appsec.report.AppSecEvent;
2828
import com.datadog.appsec.report.AppSecEventWrapper;
2929
import datadog.trace.api.Config;
30-
import datadog.trace.api.ProductTs;
30+
import datadog.trace.api.ProductTraceSource;
3131
import datadog.trace.api.UserIdCollectionMode;
3232
import datadog.trace.api.gateway.Events;
3333
import datadog.trace.api.gateway.Flow;
@@ -215,7 +215,7 @@ private Flow<Void> onUser(
215215

216216
// span with ASM data
217217
segment.setTagTop(Tags.ASM_KEEP, true);
218-
segment.setTagTop(Tags.PROPAGATED_TRACE_SOURCE, ProductTs.ASM);
218+
segment.setTagTop(Tags.PROPAGATED_TRACE_SOURCE, ProductTraceSource.ASM);
219219

220220
// skip event if we have an SDK one
221221
if (mode != SDK) {
@@ -276,7 +276,7 @@ private Flow<Void> onLoginEvent(
276276

277277
// span with ASM data
278278
segment.setTagTop(Tags.ASM_KEEP, true);
279-
segment.setTagTop(Tags.PROPAGATED_TRACE_SOURCE, ProductTs.ASM);
279+
segment.setTagTop(Tags.PROPAGATED_TRACE_SOURCE, ProductTraceSource.ASM);
280280

281281
// update span tags
282282
segment.setTagTop("appsec.events." + eventName + ".track", true, true);
@@ -787,7 +787,7 @@ private NoopFlow onRequestEnded(RequestContext ctx_, IGSpanInfo spanInfo) {
787787
if (!collectedEvents.isEmpty()) {
788788
// Set asm keep in case that root span was not available when events are detected
789789
traceSeg.setTagTop(Tags.ASM_KEEP, true);
790-
traceSeg.setTagTop(Tags.PROPAGATED_TRACE_SOURCE, ProductTs.ASM);
790+
traceSeg.setTagTop(Tags.PROPAGATED_TRACE_SOURCE, ProductTraceSource.ASM);
791791
traceSeg.setTagTop("appsec.event", true);
792792
traceSeg.setTagTop("network.client.ip", ctx.getPeerAddress());
793793

dd-java-agent/appsec/src/main/java/com/datadog/appsec/powerwaf/PowerWAFModule.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import datadog.communication.monitor.Monitoring;
2727
import datadog.trace.api.Config;
2828
import datadog.trace.api.ProductActivation;
29-
import datadog.trace.api.ProductTs;
29+
import datadog.trace.api.ProductTraceSource;
3030
import datadog.trace.api.gateway.Flow;
3131
import datadog.trace.api.telemetry.LogCollector;
3232
import datadog.trace.api.telemetry.WafMetricCollector;
@@ -504,7 +504,9 @@ public void onDataAvailable(
504504
// If APM is disabled, inform downstream services that the current
505505
// distributed trace contains at least one ASM event and must inherit
506506
// the given force-keep priority
507-
activeSpan.getLocalRootSpan().setTag(Tags.PROPAGATED_TRACE_SOURCE, ProductTs.ASM);
507+
activeSpan
508+
.getLocalRootSpan()
509+
.setTag(Tags.PROPAGATED_TRACE_SOURCE, ProductTraceSource.ASM);
508510
} else {
509511
// If active span is not available the ASK_KEEP tag will be set in the GatewayBridge
510512
// when the request ends

dd-java-agent/appsec/src/test/groovy/com/datadog/appsec/gateway/GatewayBridgeSpecification.groovy

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import com.datadog.appsec.event.data.DataBundle
88
import com.datadog.appsec.event.data.KnownAddresses
99
import com.datadog.appsec.report.AppSecEvent
1010
import com.datadog.appsec.report.AppSecEventWrapper
11-
import datadog.trace.api.ProductTs
11+
import datadog.trace.api.ProductTraceSource
1212
import datadog.trace.api.UserIdCollectionMode
1313
import datadog.trace.api.appsec.LoginEventCallback
1414
import datadog.trace.api.function.TriConsumer
@@ -1113,7 +1113,7 @@ class GatewayBridgeSpecification extends DDSpecification {
11131113
1 * traceSegment.setTagTop('appsec.events.users.signup.track', true, true)
11141114
1 * traceSegment.setTagTop('appsec.events.users.signup', ['key1': 'value1', 'key2': 'value2'], true)
11151115
1 * traceSegment.setTagTop('asm.keep', true)
1116-
1 * traceSegment.setTagTop('_dd.p.ts', ProductTs.ASM)
1116+
1 * traceSegment.setTagTop('_dd.p.ts', ProductTraceSource.ASM)
11171117
1 * eventDispatcher.publishDataEvent(nonEmptyDsInfo, ctx.data, _ as DataBundle, _ as GatewayContext) >> { a, b, DataBundle db, GatewayContext gw ->
11181118
if (mode == SDK) {
11191119
assert db.get(KnownAddresses.USER_ID) == expectedUser
@@ -1152,7 +1152,7 @@ class GatewayBridgeSpecification extends DDSpecification {
11521152
1 * traceSegment.setTagTop('appsec.events.users.login.success.track', true, true)
11531153
1 * traceSegment.setTagTop('appsec.events.users.login.success', ['key1': 'value1', 'key2': 'value2'], true)
11541154
1 * traceSegment.setTagTop('asm.keep', true)
1155-
1 * traceSegment.setTagTop('_dd.p.ts', ProductTs.ASM)
1155+
1 * traceSegment.setTagTop('_dd.p.ts', ProductTraceSource.ASM)
11561156
1 * eventDispatcher.publishDataEvent(nonEmptyDsInfo, ctx.data, _ as DataBundle, _ as GatewayContext) >> { a, b, DataBundle db, GatewayContext gw ->
11571157
if (mode == SDK) {
11581158
assert db.get(KnownAddresses.USER_ID) == expectedUser
@@ -1193,7 +1193,7 @@ class GatewayBridgeSpecification extends DDSpecification {
11931193
1 * traceSegment.setTagTop('appsec.events.users.login.failure.usr.exists', false, true)
11941194
1 * traceSegment.setTagTop('appsec.events.users.login.failure', ['key1': 'value1', 'key2': 'value2'], true)
11951195
1 * traceSegment.setTagTop('asm.keep', true)
1196-
1 * traceSegment.setTagTop('_dd.p.ts', ProductTs.ASM)
1196+
1 * traceSegment.setTagTop('_dd.p.ts', ProductTraceSource.ASM)
11971197
1 * eventDispatcher.publishDataEvent(nonEmptyDsInfo, ctx.data, _ as DataBundle, _ as GatewayContext) >> { a, b, DataBundle db, GatewayContext gw ->
11981198
if (mode == SDK) {
11991199
assert db.get(KnownAddresses.USER_ID) == expectedUser
@@ -1222,7 +1222,7 @@ class GatewayBridgeSpecification extends DDSpecification {
12221222
1 * traceSegment.setTagTop('appsec.events.my.event.track', true, true)
12231223
1 * traceSegment.setTagTop('appsec.events.my.event', ['key1': 'value1', 'key2': 'value2'], true)
12241224
1 * traceSegment.setTagTop('asm.keep', true)
1225-
1 * traceSegment.setTagTop('_dd.p.ts', ProductTs.ASM)
1225+
1 * traceSegment.setTagTop('_dd.p.ts', ProductTraceSource.ASM)
12261226
0 * eventDispatcher.publishDataEvent
12271227
}
12281228

dd-trace-core/src/main/java/datadog/trace/core/TraceCollector.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import datadog.trace.api.Config;
44
import datadog.trace.api.DDTraceId;
5-
import datadog.trace.api.ProductTs;
5+
import datadog.trace.api.ProductTraceSource;
66
import datadog.trace.api.sampling.PrioritySampling;
77
import datadog.trace.api.time.TimeSource;
88
import datadog.trace.bootstrap.instrumentation.api.AgentTraceCollector;
@@ -67,9 +67,9 @@ public void setSamplingPriorityIfNecessary() {
6767
// Ignore the force-keep priority in the absence of propagated _dd.p.ts span tag marked for
6868
// ASM.
6969
if ((!Config.get().isApmTracingEnabled()
70-
&& !ProductTs.isProductMarked(
70+
&& !ProductTraceSource.isProductMarked(
7171
rootSpan.context().getPropagationTags().getPropagatedTraceSource(),
72-
ProductTs.ASM))
72+
ProductTraceSource.ASM))
7373
|| rootSpan.context().getSamplingPriority() == PrioritySampling.UNSET) {
7474
((PrioritySampler) traceConfig.sampler).setSamplingPriority(rootSpan);
7575
}

dd-trace-core/src/main/java/datadog/trace/core/propagation/ptags/DatadogPTagsCodec.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package datadog.trace.core.propagation.ptags;
22

3-
import datadog.trace.api.ProductTs;
3+
import datadog.trace.api.ProductTraceSource;
44
import datadog.trace.core.propagation.PropagationTags;
55
import datadog.trace.core.propagation.ptags.PTagsFactory.PTags;
66
import datadog.trace.core.propagation.ptags.TagElement.Encoding;
@@ -98,7 +98,7 @@ PropagationTags fromHeaderValue(PTagsFactory tagsFactory, String value) {
9898
} else if (tagKey.equals(TRACE_ID_TAG)) {
9999
traceIdTagValue = tagValue;
100100
} else if (tagKey.equals(TRACE_SOURCE_TAG)) {
101-
traceSource = ProductTs.parseBitfieldHex(tagValue.toString());
101+
traceSource = ProductTraceSource.parseBitfieldHex(tagValue.toString());
102102
} else {
103103
if (tagPairs == null) {
104104
// This is roughly the size of a two element linked list but can hold six

dd-trace-core/src/main/java/datadog/trace/core/propagation/ptags/PTagsCodec.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import static datadog.trace.core.propagation.ptags.PTagsFactory.PROPAGATION_ERROR_TAG_KEY;
44

5-
import datadog.trace.api.ProductTs;
5+
import datadog.trace.api.ProductTraceSource;
66
import datadog.trace.core.propagation.PropagationTags;
77
import datadog.trace.core.propagation.ptags.PTagsFactory.PTags;
88
import datadog.trace.core.propagation.ptags.TagElement.Encoding;
@@ -43,7 +43,7 @@ static String headerValue(PTagsCodec codec, PTags ptags) {
4343
codec.appendTag(
4444
sb,
4545
TRACE_SOURCE_TAG,
46-
TagValue.from(ProductTs.getBitfieldHex(ptags.getPropagatedTraceSource())),
46+
TagValue.from(ProductTraceSource.getBitfieldHex(ptags.getPropagatedTraceSource())),
4747
size);
4848
}
4949
if (ptags.getDebugPropagation() != null) {
@@ -95,7 +95,8 @@ static void fillTagMap(PTags propagationTags, Map<String, String> tagMap) {
9595
if (propagationTags.getPropagatedTraceSource() != 0) {
9696
tagMap.put(
9797
TRACE_SOURCE_TAG.forType(Encoding.DATADOG).toString(),
98-
TagValue.from(ProductTs.getBitfieldHex(propagationTags.getPropagatedTraceSource()))
98+
TagValue.from(
99+
ProductTraceSource.getBitfieldHex(propagationTags.getPropagatedTraceSource()))
99100
.forType(Encoding.DATADOG)
100101
.toString());
101102
}

dd-trace-core/src/main/java/datadog/trace/core/propagation/ptags/PTagsFactory.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import static datadog.trace.core.propagation.ptags.PTagsCodec.TRACE_ID_TAG;
77
import static datadog.trace.core.propagation.ptags.PTagsCodec.TRACE_SOURCE_TAG;
88

9-
import datadog.trace.api.ProductTs;
9+
import datadog.trace.api.ProductTraceSource;
1010
import datadog.trace.api.internal.util.LongStringUtils;
1111
import datadog.trace.api.sampling.PrioritySampling;
1212
import datadog.trace.api.sampling.SamplingMechanism;
@@ -206,12 +206,14 @@ public void updateTraceSamplingPriority(int samplingPriority, int samplingMechan
206206
@Override
207207
public void updatePropagatedTraceSource(final int product) {
208208
// if is nort marked for the product
209-
if (!ProductTs.isProductMarked(productTs.get(), product)) {
209+
if (!ProductTraceSource.isProductMarked(productTs.get(), product)) {
210210
// This should invalidate any cached w3c and datadog header
211211
clearCachedHeader(DATADOG);
212212
clearCachedHeader(W3C);
213213
productTs.updateAndGet(
214-
value -> ProductTs.updateProduct(value, product)); // Set the bit for the given product
214+
value ->
215+
ProductTraceSource.updateProduct(
216+
value, product)); // Set the bit for the given product
215217
}
216218
}
217219

@@ -358,7 +360,9 @@ int getXDatadogTagsSize() {
358360
if (productTs.get() != 0) {
359361
size =
360362
PTagsCodec.calcXDatadogTagsSize(
361-
size, TRACE_SOURCE_TAG, TagValue.from(ProductTs.getBitfieldHex(productTs.get())));
363+
size,
364+
TRACE_SOURCE_TAG,
365+
TagValue.from(ProductTraceSource.getBitfieldHex(productTs.get())));
362366
}
363367
xDatadogTagsSize = size;
364368
}

dd-trace-core/src/main/java/datadog/trace/core/propagation/ptags/W3CPTagsCodec.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import static datadog.trace.api.internal.util.LongStringUtils.toHexStringPadded;
44

5-
import datadog.trace.api.ProductTs;
5+
import datadog.trace.api.ProductTraceSource;
66
import datadog.trace.api.sampling.PrioritySampling;
77
import datadog.trace.core.propagation.PropagationTags;
88
import datadog.trace.core.propagation.ptags.PTagsFactory.PTags;
@@ -149,7 +149,7 @@ PropagationTags fromHeaderValue(PTagsFactory tagsFactory, String value) {
149149
} else if (tagKey.equals(TRACE_ID_TAG)) {
150150
traceIdTagValue = tagValue;
151151
} else if (tagKey.equals(TRACE_SOURCE_TAG)) {
152-
traceSource = ProductTs.parseBitfieldHex(tagValue.toString());
152+
traceSource = ProductTraceSource.parseBitfieldHex(tagValue.toString());
153153
} else {
154154
if (tagPairs == null) {
155155
// This is roughly the size of a two element linked list but can hold six

dd-trace-core/src/test/groovy/datadog/trace/core/propagation/DatadogPropagationTagsTest.groovy

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package datadog.trace.core.propagation
22

33
import datadog.trace.api.Config
4-
import datadog.trace.api.ProductTs
4+
import datadog.trace.api.ProductTraceSource
55
import datadog.trace.core.test.DDCoreSpecification
66

77
import static datadog.trace.api.sampling.PrioritySampling.*
@@ -156,9 +156,9 @@ class DatadogPropagationTagsTest extends DDCoreSpecification {
156156
where:
157157
originalTagSet | product | expectedHeaderValue | tags
158158
// keep the existing dm tag as is
159-
"" | ProductTs.ASM | "_dd.p.ts=02" | ["_dd.p.ts": "02"]
160-
"_dd.p.ts=00" | ProductTs.ASM | "_dd.p.ts=02" | ["_dd.p.ts": "02"]
161-
"_dd.p.ts=02" | ProductTs.DBM | "_dd.p.ts=12" | ["_dd.p.ts": "12"]
159+
"" | ProductTraceSource.ASM | "_dd.p.ts=02" | ["_dd.p.ts": "02"]
160+
"_dd.p.ts=00" | ProductTraceSource.ASM | "_dd.p.ts=02" | ["_dd.p.ts": "02"]
161+
"_dd.p.ts=02" | ProductTraceSource.DBM | "_dd.p.ts=12" | ["_dd.p.ts": "12"]
162162
//Invalid input
163163
"_dd.p.ts=" | 0 | null | ["_dd.propagation_error": "decoding_error"]
164164
"_dd.p.ts=0" | 0 | null | ["_dd.propagation_error": "decoding_error"]

dd-trace-core/src/test/groovy/datadog/trace/core/propagation/W3CPropagationTagsTest.groovy

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package datadog.trace.core.propagation
22

33
import datadog.trace.api.Config
4-
import datadog.trace.api.ProductTs
4+
import datadog.trace.api.ProductTraceSource
55
import datadog.trace.api.sampling.PrioritySampling
66
import datadog.trace.api.sampling.SamplingMechanism
77
import datadog.trace.core.test.DDCoreSpecification
@@ -340,8 +340,8 @@ class W3CPropagationTagsTest extends DDCoreSpecification {
340340

341341
where:
342342
headerValue | product | expectedHeaderValue | tags
343-
'dd=x:unknown' | ProductTs.ASM | 'dd=t.ts:02;x:unknown' | ['_dd.p.ts': '02']
344-
'dd=t.ts:02;x:unknown' | ProductTs.DBM | 'dd=t.ts:12;x:unknown' | ['_dd.p.ts': '12']
343+
'dd=x:unknown' | ProductTraceSource.ASM | 'dd=t.ts:02;x:unknown' | ['_dd.p.ts': '02']
344+
'dd=t.ts:02;x:unknown' | ProductTraceSource.DBM | 'dd=t.ts:12;x:unknown' | ['_dd.p.ts': '12']
345345
}
346346

347347
static private String toLcAlpha(String cs) {

dd-trace-core/src/test/groovy/datadog/trace/core/taginterceptor/TagInterceptorTest.groovy

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package datadog.trace.core.taginterceptor
33
import static datadog.trace.api.ConfigDefaults.DEFAULT_SERVICE_NAME
44
import static datadog.trace.api.ConfigDefaults.DEFAULT_SERVLET_ROOT_CONTEXT_SERVICE_NAME
55
import static datadog.trace.api.DDTags.ANALYTICS_SAMPLE_RATE
6-
import datadog.trace.api.ProductTs
6+
import datadog.trace.api.ProductTraceSource
77
import static datadog.trace.api.config.TracerConfig.SPLIT_BY_TAGS
88

99
import datadog.trace.api.DDSpanTypes
@@ -739,9 +739,9 @@ class TagInterceptorTest extends DDCoreSpecification {
739739
final context = Mock(DDSpanContext)
740740

741741
when:
742-
interceptor.interceptTag(context, Tags.PROPAGATED_TRACE_SOURCE, ProductTs.ASM)
742+
interceptor.interceptTag(context, Tags.PROPAGATED_TRACE_SOURCE, ProductTraceSource.ASM)
743743

744744
then:
745-
1 * context.updatePropagatedTraceSource(ProductTs.ASM)
745+
1 * context.updatePropagatedTraceSource(ProductTraceSource.ASM)
746746
}
747747
}

internal-api/src/main/java/datadog/trace/api/ProductTs.java renamed to internal-api/src/main/java/datadog/trace/api/ProductTraceSource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package datadog.trace.api;
22

3-
public class ProductTs {
3+
public class ProductTraceSource {
44

55
public static final int APM = 0x01;
66
public static final int ASM = 0x02;

0 commit comments

Comments
 (0)