Package com.github.kristofa.brave.jersey

Source Code of com.github.kristofa.brave.jersey.JerseyClientTraceFilter

package com.github.kristofa.brave.jersey;

import javax.inject.Inject;
import javax.inject.Singleton;

import org.apache.commons.lang.Validate;

import com.github.kristofa.brave.ClientTracer;
import com.github.kristofa.brave.client.ClientRequestInterceptor;
import com.github.kristofa.brave.client.ClientResponseInterceptor;
import com.github.kristofa.brave.client.spanfilter.SpanNameFilter;
import com.google.common.base.Optional;
import com.sun.jersey.api.client.ClientHandlerException;
import com.sun.jersey.api.client.ClientRequest;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.filter.ClientFilter;

/**
* This filter creates or forwards trace headers and sends cs and cr annotations. Usage: Client client = Client.create()
* client.addFilter(new ClientTraceFilter(clientTracer));
*/
@Singleton
public class JerseyClientTraceFilter extends ClientFilter {

    private final ClientRequestInterceptor clientRequestInterceptor;
    private final ClientResponseInterceptor clientResponseInterceptor;
    private final Optional<String> serviceName;

    @Inject
    public JerseyClientTraceFilter(final ClientTracer clientTracer, final Optional<String> serviceName) {
        this(clientTracer, serviceName, Optional.<SpanNameFilter>absent());
    }

    public JerseyClientTraceFilter(final ClientTracer clientTracer, final Optional<String> serviceName, final Optional<SpanNameFilter> spanNameFilter) {
        Validate.notNull(clientTracer);
        Validate.notNull(serviceName);
        Validate.notNull(spanNameFilter);
        clientRequestInterceptor = new ClientRequestInterceptor(clientTracer, spanNameFilter);
        clientResponseInterceptor = new ClientResponseInterceptor(clientTracer);
        this.serviceName = serviceName;
    }

    @Override
    public ClientResponse handle(final ClientRequest clientRequest) throws ClientHandlerException {
        clientRequestInterceptor.handle(new JerseyClientRequestAdapter(clientRequest), serviceName);
        final ClientResponse clientResponse = getNext().handle(clientRequest);
        clientResponseInterceptor.handle(new JerseyClientResponseAdapter(clientResponse));
        return clientResponse;
    }
}
TOP

Related Classes of com.github.kristofa.brave.jersey.JerseyClientTraceFilter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.