Skip to content

Commit

Permalink
edit
Browse files Browse the repository at this point in the history
  • Loading branch information
usfalami committed Jun 30, 2023
1 parent 7895fc9 commit 983a2fc
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 25 deletions.
13 changes: 13 additions & 0 deletions src/main/java/org/usf/traceapi/core/Helper.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,23 @@

import static java.lang.Thread.currentThread;
import static java.util.Objects.nonNull;
import static java.util.Optional.empty;
import static java.util.UUID.randomUUID;

import java.util.List;
import java.util.Optional;
import java.util.function.Supplier;

import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;

/**
*
* @author u$f
*
*/
@Slf4j
@NoArgsConstructor(access = AccessLevel.PRIVATE)
final class Helper {

Expand Down Expand Up @@ -45,4 +49,13 @@ static String extractAuthScheme(String authHeader) { //nullable
return nonNull(authHeader) && authHeader.matches("^\\w+ ")
? authHeader.substring(0, authHeader.indexOf(' ')) : null;
}

static <T> Optional<T> newInstance(Class<? extends T> clazz) {
try {
return Optional.of(clazz.getDeclaredConstructor().newInstance());
} catch (Exception e) {
log.warn("cannot instantiate class " + clazz.getName(), e);
return empty();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,19 @@

import static java.util.Objects.nonNull;
import static org.usf.traceapi.core.Helper.localTrace;
import static org.usf.traceapi.core.Helper.newInstance;

import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;

/**
*
* @author u$f
*
*/
@Slf4j
public final class IncomingRequestInterceptor implements HandlerInterceptor { //AsyncHandlerInterceptor ?

@Override
Expand All @@ -31,7 +30,9 @@ public void afterCompletion(HttpServletRequest req, HttpServletResponse res, Obj
var trace = (IncomingRequest) localTrace.get();
if(nonNull(trace)) {
if(a.clientProvider() != DefaultUserProvider.class) {
trace.setUser(supplyClient(req, a.clientProvider()));
trace.setUser(newInstance(a.clientProvider())
.map(p-> p.getUser(req))
.orElse(null));
}
if(!a.value().isEmpty()) {
trace.setName(a.value());
Expand All @@ -40,13 +41,4 @@ public void afterCompletion(HttpServletRequest req, HttpServletResponse res, Obj
}
}

private static String supplyClient(HttpServletRequest req, Class<? extends ApiUserProvider> clasz) { //simple impl.
try {
return clasz.getDeclaredConstructor().newInstance().getUser(req);
} catch (Exception e) {
log.warn("cannot instantiate class " + clasz, e);
}
return null;
}

}
17 changes: 4 additions & 13 deletions src/main/java/org/usf/traceapi/core/TraceableAspect.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import static org.usf.traceapi.core.Helper.defaultUserProvider;
import static org.usf.traceapi.core.Helper.idProvider;
import static org.usf.traceapi.core.Helper.localTrace;
import static org.usf.traceapi.core.Helper.newInstance;
import static org.usf.traceapi.core.Helper.threadName;
import static org.usf.traceapi.core.LaunchMode.BATCH;
import static org.usf.traceapi.core.MainRequest.synchronizedMainRequest;
Expand Down Expand Up @@ -76,19 +77,9 @@ private static String batchName(ProceedingJoinPoint joinPoint) {
private static String batchUser(ProceedingJoinPoint joinPoint) { //simple impl.
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
var ant = signature.getMethod().getAnnotation(TraceableBatch.class);
BatchUserProvider provider;
if(ant.userProvider() == DefaultUserProvider.class) { // return null by default
provider = defaultUserProvider();
}
else {
try {
provider = ant.userProvider().getDeclaredConstructor().newInstance();
} catch (Exception e) {
log.warn("cannot instantiate class " + ant.userProvider(), e);
return null;
}
}
return provider.getUser();
return ant.userProvider() == DefaultUserProvider.class
? defaultUserProvider().getUser()
: newInstance(ant.userProvider()).map(BatchUserProvider::getUser).orElse(null);
}

}

0 comments on commit 983a2fc

Please sign in to comment.