package org.wildfly.swarm.jaxrs.btm.zipkin;
import java.io.IOException;
import javax.annotation.Priority;
import javax.naming.NamingException;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.container.PreMatching;
import javax.ws.rs.ext.Provider;
import com.github.kristofa.brave.Brave;
import com.github.kristofa.brave.http.DefaultSpanNameProvider;
import com.github.kristofa.brave.jaxrs2.BraveContainerRequestFilter;
import org.wildfly.swarm.jaxrs.btm.BraveLookup;
/**
* @author Heiko Braun
* @since 07/10/16
*/
@Provider
@PreMatching
@Priority(0)
public class ServerRequestInterceptor implements ContainerRequestFilter {
public ServerRequestInterceptor() {
try {
this.brave = BraveLookup.lookup().get();
this.delegate = new BraveContainerRequestFilter(
brave.serverRequestInterceptor(),
new DefaultSpanNameProvider()
);
} catch (NamingException e) {
throw new RuntimeException("Failed to lookup brave", e);
}
}
@Override
public void filter(ContainerRequestContext containerRequestContext) throws IOException {
delegate.filter(containerRequestContext);
}
private final Brave brave;
private final BraveContainerRequestFilter delegate;
}