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

io.dapr.testcontainers.converter.ConfigurationYamlConverter Maven / Gradle / Ivy

package io.dapr.testcontainers.converter;

import io.dapr.testcontainers.Configuration;
import io.dapr.testcontainers.OtelTracingConfigurationSettings;
import io.dapr.testcontainers.TracingConfigurationSettings;
import io.dapr.testcontainers.ZipkinTracingConfigurationSettings;
import org.yaml.snakeyaml.Yaml;

import java.util.LinkedHashMap;
import java.util.Map;

public class ConfigurationYamlConverter implements YamlConverter {
  private final Yaml mapper;

  public ConfigurationYamlConverter(Yaml mapper) {
    this.mapper = mapper;
  }

  @Override
  public String convert(Configuration configuration) {
    Map configurationProps = new LinkedHashMap<>();
    configurationProps.put("apiVersion", "dapr.io/v1alpha1");
    configurationProps.put("kind", "Configuration");

    Map configurationMetadata = new LinkedHashMap<>();
    configurationMetadata.put("name", configuration.getName());
    configurationProps.put("metadata", configurationMetadata);

    Map configurationSpec = new LinkedHashMap<>();
    TracingConfigurationSettings tracing = configuration.getTracing();

    if (tracing != null) {
      Map tracingMap = new LinkedHashMap<>();

      tracingMap.put("samplingRate", configuration.getTracing().getSamplingRate());
      tracingMap.put("stdout", configuration.getTracing().getStdout());

      OtelTracingConfigurationSettings otel = tracing.getOtel();

      if (otel != null) {
        Map otelMap = new LinkedHashMap<>();

        otelMap.put("endpointAddress", otel.getEndpointAddress());
        otelMap.put("isSecure", otel.getSecure());
        otelMap.put("protocol", otel.getProtocol());

        tracingMap.put("otel", otelMap);
      }

      ZipkinTracingConfigurationSettings zipkin = tracing.getZipkin();

      if (zipkin != null) {
        Map zipkinMap = new LinkedHashMap<>();

        zipkinMap.put("endpointAddress", zipkin.getEndpointAddress());

        tracingMap.put("zipkin", zipkinMap);
      }

      configurationSpec.put("tracing", tracingMap);
    }

    configurationProps.put("spec", configurationSpec);

    return mapper.dumpAsMap(configurationProps);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy