All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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