in apm-sniffer/apm-sdk-plugin/solon-2.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/solon/SolonActionExecuteInterceptor.java [42:82]
public void beforeMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class<?>[] argumentsTypes, MethodInvocationContext context) throws Throwable {
Context ctx = (Context) allArguments[0];
ContextCarrier contextCarrier = new ContextCarrier();
CarrierItem next = contextCarrier.items();
while (next.hasNext()) {
next = next.next();
next.setHeadValue(ctx.header(next.getHeadKey()));
}
String operationName = ctx.method() + ":" + ctx.path();
AbstractSpan span = ContextManager.createEntrySpan(operationName, contextCarrier);
span.setComponent(ComponentsDefine.SOLON_MVC);
SpanLayer.asHttp(span);
Tags.URL.set(span, ctx.url());
Tags.HTTP.METHOD.set(span, ctx.method());
if (SolonPluginConfig.Plugin.Solon.INCLUDE_HTTP_HEADERS != null && !SolonPluginConfig.Plugin.Solon.INCLUDE_HTTP_HEADERS.isEmpty()) {
NvMap includeHeaders = new NvMap();
for (String header : SolonPluginConfig.Plugin.Solon.INCLUDE_HTTP_HEADERS) {
String value = ctx.header(header);
if (StringUtil.isNotBlank(value)) {
includeHeaders.put(header, value);
}
}
Tags.HTTP.HEADERS.set(span, includeHeaders.toString());
}
if (SolonPluginConfig.Plugin.Solon.HTTP_BODY_LENGTH_THRESHOLD != 0) {
String body = ctx.body();
if (StringUtil.isNotBlank(body)) {
if (SolonPluginConfig.Plugin.Solon.HTTP_BODY_LENGTH_THRESHOLD > 0 && body.length() > SolonPluginConfig.Plugin.Solon.HTTP_BODY_LENGTH_THRESHOLD) {
body = body.substring(0, SolonPluginConfig.Plugin.Solon.HTTP_BODY_LENGTH_THRESHOLD);
}
Tags.HTTP.BODY.set(span, body);
}
}
if (SolonPluginConfig.Plugin.Solon.HTTP_PARAMS_LENGTH_THRESHOLD != 0) {
String param = ctx.paramMap().toString();
if (SolonPluginConfig.Plugin.Solon.HTTP_PARAMS_LENGTH_THRESHOLD > 0 && param.length() > SolonPluginConfig.Plugin.Solon.HTTP_PARAMS_LENGTH_THRESHOLD) {
param = param.substring(0, SolonPluginConfig.Plugin.Solon.HTTP_PARAMS_LENGTH_THRESHOLD);
}
Tags.HTTP.PARAMS.set(span, param);
}
}