From 303fd51318ea403094525d31709464f86b5cdbe5 Mon Sep 17 00:00:00 2001 From: u$f Date: Fri, 23 Jun 2023 14:15:40 +0200 Subject: [PATCH] edit --- .../usf/traceapi/core/RemoteTraceSender.java | 21 ++++------- .../org/usf/traceapi/core/TraceConfig.java | 22 ----------- .../usf/traceapi/core/TraceConfiguration.java | 4 +- .../core/TraceConfigurationProperties.java | 37 +++++++++++++++++++ 4 files changed, 46 insertions(+), 38 deletions(-) delete mode 100644 src/main/java/org/usf/traceapi/core/TraceConfig.java create mode 100644 src/main/java/org/usf/traceapi/core/TraceConfigurationProperties.java diff --git a/src/main/java/org/usf/traceapi/core/RemoteTraceSender.java b/src/main/java/org/usf/traceapi/core/RemoteTraceSender.java index b495d40..6712763 100644 --- a/src/main/java/org/usf/traceapi/core/RemoteTraceSender.java +++ b/src/main/java/org/usf/traceapi/core/RemoteTraceSender.java @@ -4,7 +4,6 @@ import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor; import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; import org.springframework.web.client.RestTemplate; @@ -25,32 +24,26 @@ public final class RemoteTraceSender implements TraceSender { static final ScheduledExecutorService executor = newSingleThreadScheduledExecutor(); - private final String host; - private final int delay; - private final TimeUnit unit; + private final TraceConfigurationProperties properties; private final RestTemplate template; - public RemoteTraceSender(TraceConfig config) { - this(normalizeHost(config.getHost()), config.getDelay(), TimeUnit.valueOf(config.getUnit()), new RestTemplate()); + public RemoteTraceSender(TraceConfigurationProperties properties) { + this(properties, new RestTemplate()); } - + @Override public void send(Metric trc) { - var uri = join("/", host, TRACE_ENDPOINT, endpointFor(trc)); - executor.schedule(()-> template.put(uri, trc), delay, unit); //wait for sending response + var uri = join("/", properties.getHost(), TRACE_ENDPOINT, endpointFor(trc)); + executor.schedule(()-> template.put(uri, trc), properties.getDelay(), properties.getUnit()); //wait for sending response } private static String endpointFor(@NonNull Metric trc) { if(trc.getClass() == IncomingRequest.class) { return INCOMING_ENDPOINT; } - else if(trc.getClass() == OutcomingRequest.class) { //super after + else if(trc.getClass() == OutcomingRequest.class) { return OUTCOMING_ENDPOINT; } throw new UnsupportedOperationException(trc.getClass().getSimpleName() + " : " + trc); } - - private static String normalizeHost(String host) { - return host.endsWith("/") ? host.substring(0, host.length()-1) : host; - } } diff --git a/src/main/java/org/usf/traceapi/core/TraceConfig.java b/src/main/java/org/usf/traceapi/core/TraceConfig.java deleted file mode 100644 index 8f0340e..0000000 --- a/src/main/java/org/usf/traceapi/core/TraceConfig.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.usf.traceapi.core; - -import org.springframework.boot.context.properties.ConfigurationProperties; - -import lombok.Getter; -import lombok.Setter; - -/** - * - * @author u$f - * - */ -@Getter -@Setter -@ConfigurationProperties(prefix = "api.tracing") -public final class TraceConfig { - - private String host = ""; - private int delay = 5; - private String unit = "SECONDS"; - -} diff --git a/src/main/java/org/usf/traceapi/core/TraceConfiguration.java b/src/main/java/org/usf/traceapi/core/TraceConfiguration.java index 0d16b68..a080bdb 100644 --- a/src/main/java/org/usf/traceapi/core/TraceConfiguration.java +++ b/src/main/java/org/usf/traceapi/core/TraceConfiguration.java @@ -23,7 +23,7 @@ * */ @Configuration -@EnableConfigurationProperties(TraceConfig.class) +@EnableConfigurationProperties(TraceConfigurationProperties.class) @ConditionalOnProperty(prefix = "api.tracing", name = "enabled", havingValue = "true") public class TraceConfiguration implements WebMvcConfigurer { @@ -61,7 +61,7 @@ public Object postProcessBeforeInitialization(Object bean, String beanName) thro } @Bean - public TraceSender sender(TraceConfig config) { + public TraceSender sender(TraceConfigurationProperties config) { return config.getHost().isBlank() ? res-> {} : new RemoteTraceSender(config); diff --git a/src/main/java/org/usf/traceapi/core/TraceConfigurationProperties.java b/src/main/java/org/usf/traceapi/core/TraceConfigurationProperties.java new file mode 100644 index 0000000..8ba5d60 --- /dev/null +++ b/src/main/java/org/usf/traceapi/core/TraceConfigurationProperties.java @@ -0,0 +1,37 @@ +package org.usf.traceapi.core; + +import static java.util.concurrent.TimeUnit.SECONDS; + +import java.util.concurrent.TimeUnit; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +import lombok.Getter; +import lombok.Setter; + +/** + * + * @author u$f + * + */ +@Getter +@Setter +@ConfigurationProperties(prefix = "api.tracing") +public final class TraceConfigurationProperties { + + private String host = ""; + private int delay = 5; + private TimeUnit unit = SECONDS; + + public void setHost(String host) { + this.host = normalizeHost(host); + } + + public void setUnit(String unit){ + this.unit = TimeUnit.valueOf(unit.toLowerCase()); + } + + private static String normalizeHost(String host) { + return host.endsWith("/") ? host.substring(0, host.length()-1) : host; + } +}