package brave.spring.beans; import brave.Tracing; import brave.http.HttpClientParser; import brave.http.HttpSampler; import brave.http.HttpServerParser; import brave.http.HttpTracing; import org.springframework.beans.factory.FactoryBean; /** Spring XML config does not support chained builders. This converts accordingly */ public class HttpTracingFactoryBean implements FactoryBean<HttpTracing> { Tracing tracing; HttpClientParser clientParser; HttpServerParser serverParser; HttpSampler clientSampler; HttpSampler serverSampler; @Override public HttpTracing getObject() throws Exception { HttpTracing.Builder builder = HttpTracing.newBuilder(tracing); if (clientParser != null) builder.clientParser(clientParser); if (serverParser != null) builder.serverParser(serverParser); if (clientSampler != null) builder.clientSampler(clientSampler); if (serverSampler != null) builder.serverSampler(serverSampler); return builder.build(); } @Override public Class<? extends HttpTracing> getObjectType() { return HttpTracing.class; } @Override public boolean isSingleton() { return true; } public void setTracing(Tracing tracing) { this.tracing = tracing; } public void setClientParser(HttpClientParser clientParser) { this.clientParser = clientParser; } public void setServerParser(HttpServerParser serverParser) { this.serverParser = serverParser; } public void setClientSampler(HttpSampler clientSampler) { this.clientSampler = clientSampler; } public void setServerSampler(HttpSampler serverSampler) { this.serverSampler = serverSampler; } }