package com.github.kristofa.brave.jaxrs2; import com.github.kristofa.brave.Brave; import com.github.kristofa.brave.ServerResponseInterceptor; import com.github.kristofa.brave.internal.MaybeAddClientAddress; import javax.ws.rs.container.ContainerRequestContext; import zipkin.Constants; /** * Parses the {@link Constants#CLIENT_ADDR client address}, by looking at "X-Forwarded-For". This * performs no DNS lookups. * * <p>This is a hack as {@link ServerResponseInterceptor} doesn't yet support client addresses. */ final class MaybeAddClientAddressFromRequest extends MaybeAddClientAddress<ContainerRequestContext> { MaybeAddClientAddressFromRequest(Brave brave) { // intentionally hidden super(brave); } @Override protected byte[] parseAddressBytes(ContainerRequestContext input) { return ipStringToBytes(input.getHeaderString("X-Forwarded-For")); } @Override protected int parsePort(ContainerRequestContext input) { return -1; } }