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

com.undefinedlabs.scope.settings.ScopeSettings Maven / Gradle / Ivy

package com.undefinedlabs.scope.settings;

import com.undefinedlabs.scope.logger.ScopeLogger;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;

public class ScopeSettings {

  public static final String SCOPE_AGENT_IS_EXECUTING = "SCOPE_AGENT_IS_EXECUTING";

  public static final int HTTP_MAX_PAYLOAD_CHARS = 512;

  public static final String SCOPE_DSN = "SCOPE_DSN";
  public static final String SCOPE_SERVICE = "SCOPE_SERVICE";
  public static final String SCOPE_REPOSITORY = "SCOPE_REPOSITORY";
  public static final String SCOPE_COMMIT_SHA = "SCOPE_COMMIT_SHA";
  public static final String SCOPE_SOURCE_ROOT = "SCOPE_SOURCE_ROOT";
  public static final String SCOPE_BRANCH = "SCOPE_BRANCH";
  public static final String SCOPE_DIFF = "SCOPE_DIFF";
  public static final String SCOPE_INSTRUMENTATION_ENABLED = "SCOPE_INSTRUMENTATION_ENABLED";
  public static final String SCOPE_TRACER_GLOBAL = "SCOPE_TRACER_GLOBAL";
  public static final String SCOPE_TESTING_MODE = "SCOPE_TESTING_MODE";
  public static final String SCOPE_REPORTER_HEALTH_CHECK_INTERVAL =
      "SCOPE_REPORTER_HEALTH_CHECK_INTERVAL";
  public static final String CI_IS_CI = "CI_IS_CI";
  public static final String CI_PROVIDER = "CI_PROVIDER";
  public static final String CI_BUILD_ID = "CI_BUILD_ID";
  public static final String CI_BUILD_NUMBER = "CI_BUILD_NUMBER";
  public static final String CI_BUILD_URL = "CI_BUILD_URL";
  public static final String SCOPE_TRACER_DISPATCHER_SPANS_MAX_BUFFER_SIZE =
      "SCOPE_TRACER_DISPATCHER_SPANS_MAX_BUFFER_SIZE";
  public static final String SCOPE_TRACER_DISPATCHER_EVENTS_MAX_BUFFER_SIZE =
      "SCOPE_TRACER_DISPATCHER_EVENTS_MAX_BUFFER_SIZE";
  public static final String SCOPE_TRACER_DISPATCHER_HEALTHCHECK_FREQUENCY =
      "SCOPE_TRACER_DISPATCHER_HEALTHCHECK_FREQUENCY";
  public static final String SCOPE_TRACER_DISPATCHER_HEALTHCHECK_FREQUENCY_IN_TESTMODE =
      "SCOPE_TRACER_DISPATCHER_HEALTHCHECK_FREQUENCY_IN_TESTMODE";
  public static final String SCOPE_TRACER_DISPATCHER_CONCURRENCY_LEVEL =
      "SCOPE_TRACER_DISPATCHER_CONCURRENCY_LEVEL";
  public static final String SCOPE_TRACER_DISPATCHER_CLOSE_TIMEOUT =
      "SCOPE_TRACER_DISPATCHER_CLOSE_TIMEOUT";
  public static final String SCOPE_CODE_PATH_ENABLED = "SCOPE_CODE_PATH_ENABLED";
  public static final String SCOPE_CODE_PATH_BASE_PACKAGES = "SCOPE_CODE_PATH_BASE_PACKAGES";
  public static final String SCOPE_LOGGER_LEVEL = "SCOPE_LOGGER_LEVEL";
  public static final String SCOPE_LOGGER_ROOT = "SCOPE_LOGGER_ROOT";
  public static final String SCOPE_INSTRUMENTATION_DB_STATEMENT_VALUES =
      "SCOPE_INSTRUMENTATION_DB_STATEMENT_VALUES";
  public static final String SCOPE_INSTRUMENTATION_DB_STACKTRACE =
      "SCOPE_INSTRUMENTATION_DB_STACKTRACE";
  public static final String SCOPE_INSTRUMENTATION_HTTP_PAYLOADS =
      "SCOPE_INSTRUMENTATION_HTTP_PAYLOADS";
  public static final String SCOPE_INSTRUMENTATION_HTTP_HEADERS =
      "SCOPE_INSTRUMENTATION_HTTP_HEADERS";
  public static final String SCOPE_INSTRUMENTATION_HTTP_STACKTRACE =
      "SCOPE_INSTRUMENTATION_HTTP_STACKTRACE";
  public static final String SCOPE_METADATA = "SCOPE_METADATA";
  public static final String SCOPE_CONFIGURATION = "SCOPE_CONFIGURATION";
  public static final String SCOPE_CONFIG_FILE = "SCOPE_CONFIG_FILE";
  public static final String SCOPE_RUNNER_ENABLED = "SCOPE_RUNNER_ENABLED";
  public static final String SCOPE_RUNNER_INCLUDE_BRANCHES = "SCOPE_RUNNER_INCLUDE_BRANCHES";
  public static final String SCOPE_RUNNER_EXCLUDE_BRANCHES = "SCOPE_RUNNER_EXCLUDE_BRANCHES";
  public static final String SCOPE_RUNNER_SEND_SPANS = "SCOPE_RUNNER_SEND_SPANS";
  public static final String SCOPE_TRACER_DISPATCHER_CONNECTIONS_POOL_SIZE =
      "SCOPE_TRACER_DISPATCHER_CONNECTIONS_POOL_SIZE";
  public static final String SCOPE_TRACER_DISPATCHER_CONNECTIONS_KEEP_ALIVE_DURATION =
      "SCOPE_TRACER_DISPATCHER_CONNECTIONS_KEEP_LIVE_DURATION";
  public static final String SCOPE_DEPENDENCIES = "SCOPE_DEPENDENCIES";

  private final Map settings;

  public ScopeSettings(final Map settings) {
    this.settings = settings != null ? settings : new HashMap();
  }

  public Object getSetting(final String key) {
    return settings.get(key);
  }

  public void printSettings(final ScopeLogger logger) {
    logger.info(printableScopeDsn((String) getSetting(SCOPE_DSN)));
    logger.info(printableSetting(SCOPE_SERVICE));
    logger.info(printableSetting(SCOPE_REPOSITORY));
    logger.info(printableSetting(SCOPE_COMMIT_SHA));
    logger.info(printableSetting(SCOPE_SOURCE_ROOT));
    logger.info(printableSetting(SCOPE_BRANCH));
    logger.info(printableSetting(SCOPE_DIFF));
    logger.info(printableSetting(SCOPE_INSTRUMENTATION_ENABLED));
    logger.info(printableSetting(SCOPE_TRACER_GLOBAL));
    logger.info(printableSetting(SCOPE_TESTING_MODE));
    logger.info(printableSetting(SCOPE_REPORTER_HEALTH_CHECK_INTERVAL));
    logger.info(printableSetting(CI_IS_CI));
    logger.info(printableSetting(CI_PROVIDER));
    logger.info(printableSetting(CI_BUILD_ID));
    logger.info(printableSetting(CI_BUILD_NUMBER));
    logger.info(printableSetting(CI_BUILD_URL));
    logger.info(printableSetting(SCOPE_TRACER_DISPATCHER_SPANS_MAX_BUFFER_SIZE));
    logger.info(printableSetting(SCOPE_TRACER_DISPATCHER_EVENTS_MAX_BUFFER_SIZE));
    logger.info(printableSetting(SCOPE_TRACER_DISPATCHER_HEALTHCHECK_FREQUENCY));
    logger.info(printableSetting(SCOPE_TRACER_DISPATCHER_HEALTHCHECK_FREQUENCY_IN_TESTMODE));
    logger.info(printableSetting(SCOPE_TRACER_DISPATCHER_CONCURRENCY_LEVEL));
    logger.info(printableSetting(SCOPE_TRACER_DISPATCHER_CLOSE_TIMEOUT));
    logger.info(printableSetting(SCOPE_CODE_PATH_ENABLED));
    logger.info(printableSetting(SCOPE_CODE_PATH_BASE_PACKAGES));
    logger.info(printableSetting(SCOPE_LOGGER_LEVEL));
    logger.info(printableSetting(SCOPE_LOGGER_ROOT));
    logger.info(printableSetting(SCOPE_INSTRUMENTATION_DB_STATEMENT_VALUES));
    logger.info(printableSetting(SCOPE_INSTRUMENTATION_HTTP_PAYLOADS));
    logger.info(printableSetting(SCOPE_INSTRUMENTATION_HTTP_HEADERS));
    logger.info(printableSetting(SCOPE_RUNNER_ENABLED));
    logger.info(printableSetting(SCOPE_RUNNER_INCLUDE_BRANCHES));
    logger.info(printableSetting(SCOPE_RUNNER_EXCLUDE_BRANCHES));
  }

  private String printableSetting(final String key) {
    return "--- ".concat(key).concat(": ").concat(String.valueOf(getSetting(key)));
  }

  private String printableScopeDsn(final String scopeDsn) {
    final StringBuilder sb = new StringBuilder();
    sb.append("--- ").append(SCOPE_DSN).append(": ");

    if (StringUtils.isEmpty(scopeDsn)) {
      return sb.append("null").toString();
    }

    try {
      final URL scopeDsnUrl = new URL(scopeDsn);

      sb.append(scopeDsnUrl.getProtocol()).append("://");
      sb.append(StringUtils.isNotEmpty(scopeDsnUrl.getUserInfo()) ? "@" : "");
      sb.append(scopeDsnUrl.getHost());
      sb.append(scopeDsnUrl.getPort() != -1 ? ":" + scopeDsnUrl.getPort() : "");
      sb.append(StringUtils.isNotEmpty(scopeDsnUrl.getPath()) ? scopeDsnUrl.getPath() : "");
      sb.append(StringUtils.isNotEmpty(scopeDsnUrl.getQuery()) ? scopeDsnUrl.getQuery() : "");

      return sb.toString();
    } catch (final MalformedURLException e) {
      return "--- ".concat(SCOPE_DSN).concat(": , ").concat(e.getMessage());
    }
  }

  @Override
  public boolean equals(final Object o) {
    if (this == o) {
      return true;
    }

    if (o == null || getClass() != o.getClass()) {
      return false;
    }

    final ScopeSettings that = (ScopeSettings) o;

    return new EqualsBuilder().append(settings, that.settings).isEquals();
  }

  @Override
  public int hashCode() {
    return new HashCodeBuilder(17, 37).append(settings).toHashCode();
  }

  @Override
  public String toString() {
    return new ToStringBuilder(this).append("settings", settings).toString();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy