package dev.dinauer.metrics.service.utils; import java.util.Set; import java.util.stream.Collectors; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; import org.antlr.v4.runtime.misc.OrderedHashSet; import org.eclipse.microprofile.config.inject.ConfigProperty; import org.jboss.logging.Logger; import io.quarkus.runtime.Startup; import dev.dinauer.metrics.service.model.BucketUnit; @Startup @ApplicationScoped public class BucketConfigProvider { private Set units; @Inject public BucketConfigProvider(Logger LOG, @ConfigProperty(name = "dev.dinauer.metrics-service.buckets") String config) { Set result = new OrderedHashSet<>(); for (String unit : config.split(",")) { result.add(BucketUnit.valueOf(unit)); } if (!result.isEmpty()) { this.units = result; LOG.info(String.format("Configured indexing with bucket units: %s", result.stream().map(Enum::toString).collect(Collectors.joining(",")))); return; } throw new IllegalArgumentException("Cannot obtain indexing bucket units from application.properties. Please set property 'dev.dinauer.metrics-service.buckets'."); } public Set get() { return units; } }