All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.smoketurner.snowizard.client.SnowizardClientBuilder Maven / Gradle / Ivy

There is a newer version: 2.0.1
Show newest version
package com.smoketurner.snowizard.client;

import java.util.Objects;
import javax.annotation.Nonnull;
import javax.ws.rs.client.Client;
import io.dropwizard.client.JerseyClientBuilder;
import io.dropwizard.jersey.protobuf.ProtocolBufferMessageBodyProvider;
import io.dropwizard.setup.Environment;

public class SnowizardClientBuilder {
    private final Environment environment;

    /**
     * Constructor
     *
     * @param environment
     *            Environment
     */
    public SnowizardClientBuilder(@Nonnull final Environment environment) {
        this.environment = Objects.requireNonNull(environment);
    }

    /**
     * Build a new {@link SnowizardClient}
     * 
     * @param configuration
     *            Configuration to use for the client
     * @return new SnowizardClient
     */
    public SnowizardClient build(
            @Nonnull final SnowizardClientConfiguration configuration) {
        final Client client = new JerseyClientBuilder(environment)
                .using(configuration)
                .withProvider(ProtocolBufferMessageBodyProvider.class)
                .build("snowizard");
        return build(configuration, client);
    }

    /**
     * Build a new {@link SnowizardClient}. If using this method instead of
     * {@link #build(SnowizardClientConfiguration)}, remember to register the
     * {@link ProtocolBufferMessageBodyProvider}.
     * 
     * @param configuration
     *            Configuration to use for the client
     * @param client
     *            Jersey Client to use
     * @return new SnowizardClient
     */
    public SnowizardClient build(
            @Nonnull final SnowizardClientConfiguration configuration,
            @Nonnull final Client client) {
        return new SnowizardClient(environment.metrics(), client,
                configuration.getUri());
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy