package org.skywalking.apm.toolkit.activation.opentracing.span.interceptor; import org.skywalking.apm.agent.core.context.ContextManager; import org.skywalking.apm.agent.core.plugin.interceptor.EnhancedClassInstanceContext; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.ConstructorInvokeContext; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceConstructorInterceptor; import org.skywalking.apm.toolkit.opentracing.SkyWalkingSpan; import org.skywalking.apm.trace.Span; import java.util.Map; /** * Intercept {@link SkyWalkingSpan} constructor. */ public class SpanNewInstanceInterceptor implements InstanceConstructorInterceptor { @Override public void onConstruct(EnhancedClassInstanceContext context, ConstructorInvokeContext interceptorContext) { Object[] allArguments = interceptorContext.allArguments(); String operationName = (String) allArguments[0]; long startTime = (Long) allArguments[1]; Map<String, String> tags = (Map<String, String>) allArguments[2]; Span span = ContextManager.createSpan(operationName, startTime); for (Map.Entry<String, String> entry : tags.entrySet()) { span.setTag(entry.getKey(), entry.getValue()); } } }