Skip to content

Commit

Permalink
edit
Browse files Browse the repository at this point in the history
  • Loading branch information
usfalami committed Jun 29, 2023
1 parent 018afcd commit 62c43da
Show file tree
Hide file tree
Showing 6 changed files with 27 additions and 5 deletions.
1 change: 1 addition & 0 deletions src/main/java/org/usf/traceapi/core/IncomingRequest.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
@Getter
public final class IncomingRequest extends OutcomingRequest implements Session {

private String name; // methodName, endpoint, ..
private String client; //nullable
private String os; //operating system : Window, Linux, ...
private String re; //runtime environment : JAVA, JS, PHP, Browser, Postman ...
Expand Down
15 changes: 15 additions & 0 deletions src/main/java/org/usf/traceapi/core/IncomingRequestFilter.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@
import static java.time.Instant.ofEpochMilli;
import static java.util.Objects.isNull;
import static java.util.Optional.ofNullable;
import static java.util.function.Predicate.not;
import static java.util.stream.Collectors.joining;
import static org.springframework.http.HttpHeaders.AUTHORIZATION;
import static org.springframework.web.servlet.HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE;
import static org.usf.traceapi.core.Helper.extractAuthScheme;
import static org.usf.traceapi.core.Helper.idProvider;
import static org.usf.traceapi.core.Helper.localTrace;
Expand All @@ -16,7 +18,9 @@
import static org.usf.traceapi.core.IncomingRequest.synchronizedIncomingRequest;

import java.io.IOException;
import java.util.Map;
import java.util.stream.Collector;
import java.util.stream.Stream;

import jakarta.servlet.Filter;
import jakarta.servlet.FilterChain;
Expand Down Expand Up @@ -72,6 +76,7 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha
in.setStart(ofEpochMilli(beg));
in.setEnd(ofEpochMilli(fin));
in.setThread(threadName());
in.setName(defaultEndpoint(req));
//customizable data see IncomingRequestInterceptor
if(isNull(in.getClient())) {
in.setClient(clientProvider.supply(req));
Expand All @@ -86,4 +91,14 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha
}
}
}

@SuppressWarnings("unchecked")
private static String defaultEndpoint(HttpServletRequest req) {
var map = (Map<String, String>) req.getAttribute(URI_TEMPLATE_VARIABLES_ATTRIBUTE);
return map == null ? null : Stream.of(req.getRequestURI().split("/"))
.filter(not(String::isEmpty))
.filter(not(map.values()::contains))
.collect(joiner);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;

/**
*
* @author u$f
Expand All @@ -29,8 +28,13 @@ public void afterCompletion(HttpServletRequest req, HttpServletResponse res, Obj
TraceableApi a = m.getMethodAnnotation(TraceableApi.class);
if(nonNull(a)) {
var trace = (IncomingRequest) localTrace.get();
if(nonNull(trace) && a.clientProvider() != ClientProvider.class) {
trace.setClient(supplyClient(req, a.clientProvider()));
if(nonNull(trace)) {
if(a.clientProvider() != ClientProvider.class) {
trace.setClient(supplyClient(req, a.clientProvider()));
}
if(!a.value().isEmpty()) {
trace.setName(a.value());
}
}
}
}
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/org/usf/traceapi/core/TraceableApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
@Retention(RetentionPolicy.RUNTIME)
public @interface TraceableApi {

String value() default "";

/**
* require default constructor
*
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/usf/traceapi/core/TraceableAspect.java
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ public Object aroundBatch(ProceedingJoinPoint joinPoint) throws Throwable {
private static String batchName(ProceedingJoinPoint joinPoint) {
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
var ant = signature.getMethod().getAnnotation(TraceableBatch.class);
return ant.name().isBlank() ? signature.getMethod().getName() : ant.name();
return ant.value().isBlank() ? signature.getMethod().getName() : ant.value();
}

}
2 changes: 1 addition & 1 deletion src/main/java/org/usf/traceapi/core/TraceableBatch.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@
@Retention(RetentionPolicy.RUNTIME)
public @interface TraceableBatch {

String name() default "";
String value() default "";

}

0 comments on commit 62c43da

Please sign in to comment.