Skip to content

Commit

Permalink
edit
Browse files Browse the repository at this point in the history
  • Loading branch information
usfalami committed Jun 22, 2023
1 parent 70c1ab8 commit bdaa58e
Show file tree
Hide file tree
Showing 7 changed files with 30 additions and 27 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 11
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '11'
Expand Down
20 changes: 0 additions & 20 deletions src/main/java/org/usf/traceapi/core/Exchange.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.usf.traceapi.core;

import static java.lang.System.currentTimeMillis;
import static java.lang.System.getProperty;
import static java.lang.Thread.currentThread;
import static java.time.Instant.ofEpochMilli;
import static java.util.Objects.isNull;
Expand Down Expand Up @@ -56,6 +57,8 @@ public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttp
out.setStatus(res.getStatusCode().value());
out.setInDataSize(res.getBody().available()); //not exact !?
}
out.setOs(getProperty("os.name"));
out.setRe("java " + getProperty("java.version"));
var trc = localTrace.get();
if(isNull(trc)) { //main request
sender.send(out);
Expand Down
26 changes: 23 additions & 3 deletions src/main/java/org/usf/traceapi/core/RemoteTraceSender.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package org.usf.traceapi.core;

import static java.lang.String.join;
import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor;

import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

import org.springframework.web.client.RestTemplate;

import lombok.NonNull;
import lombok.RequiredArgsConstructor;

/**
Expand All @@ -16,21 +18,39 @@
*/
@RequiredArgsConstructor
public final class RemoteTraceSender implements TraceSender {

public static final String TRACE_ENDPOINT = "trace";
public static final String INCOMING_ENDPOINT = "incoming/request";
public static final String OUTCOMING_ENDPOINT = "outcoming/request";

static final ScheduledExecutorService executor = newSingleThreadScheduledExecutor();

private final String url;
private final String host;
private final int delay;
private final TimeUnit unit;
private final RestTemplate template;

public RemoteTraceSender(TraceConfig config) {
this(config.getUrl(), config.getDelay(), TimeUnit.valueOf(config.getUnit()), new RestTemplate());
this(normalizeHost(config.getHost()), config.getDelay(), TimeUnit.valueOf(config.getUnit()), new RestTemplate());
}

@Override
public void send(Metric trc) {
executor.schedule(()-> template.put(url, trc), delay, unit); //wait for sending response
var uri = join("/", host, TRACE_ENDPOINT, endpointFor(trc));
executor.schedule(()-> template.put(uri, trc), delay, unit); //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
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;
}
}
2 changes: 1 addition & 1 deletion src/main/java/org/usf/traceapi/core/TraceConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
@ConfigurationProperties(prefix = "api.tracing")
public final class TraceConfig {

private String url = "";
private String host = "";
private int delay = 5;
private String unit = "SECONDS";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ public Object postProcessBeforeInitialization(Object bean, String beanName) thro

@Bean
public TraceSender sender(TraceConfig config) {
return config.getUrl().isBlank()
return config.getHost().isBlank()
? res-> {}
: new RemoteTraceSender(config);
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/usf/traceapi/core/TraceableApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,5 @@
*/
Class<? extends ClientProvider> clientProvider() default ClientProvider.class;

//boolean enabled() default true;
//boolean enabled() default true
}

0 comments on commit bdaa58e

Please sign in to comment.