
com.undefinedlabs.scope.utils.SpanUtils Maven / Gradle / Ivy
package com.undefinedlabs.scope.utils;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.undefinedlabs.scope.sender.internal.serializers.ObjectMapperFactory;
import io.opentracing.Span;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
public enum SpanUtils {
INSTANCE;
private final ObjectMapper objectMapper = ObjectMapperFactory.newConfiguredObjectMapper();
public void setTagObject(final Span span, final String key, final Object value) {
if (value == null) {
return;
}
if (span instanceof com.undefinedlabs.scope.Span) {
((com.undefinedlabs.scope.Span) span).setTag(key, value);
} else {
try {
span.setTag(key, objectMapper.writeValueAsString(value));
} catch (final JsonProcessingException e) {
throw new RuntimeException(e);
}
}
}
public Long getStartTimestampMicros(final Span span) {
if (span instanceof com.undefinedlabs.scope.Span) {
final com.undefinedlabs.scope.Span spanImpl = (com.undefinedlabs.scope.Span) span;
return spanImpl.getStartMicros();
} else {
return null;
}
}
public String hashParameters(final Map parameters) {
final StringBuilder sb = new StringBuilder();
final List values = new ArrayList<>(parameters.values());
Collections.sort(values);
for (final String paramValue : values) {
sb.append(paramValue).append(";");
}
final String paramsValues = sb.toString();
return StringUtils.isNotEmpty(paramsValues) ? HashUtils.sha1Hex(sb.toString(), 8) : "";
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy