javax.ws.rs.client

## Class ClientBuilder

- java.lang.Object
- - javax.ws.rs.client.ClientBuilder

- All Implemented Interfaces:
    Configurable<ClientBuilder>
  Direct Known Subclasses:
    ResteasyClientBuilder

      public abstract class ClientBuilder
      extends Object
      implements Configurable<ClientBuilder>

  Main entry point to the client API used to bootstrap `Client` instances.
  Since:
    2.0
  Author:
    Marek Potociar

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `JAXRS_DEFAULT_CLIENT_BUILDER_PROPERTY` Name of the property identifying the `ClientBuilder` implementation to be returned from `newBuilder()`.

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `ClientBuilder()` Allows custom implementations to extend the `ClientBuilder` class.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `abstract Client` | `build()` Build a new client instance using all the configuration previously specified in this client builder.
    `abstract ClientBuilder` | `hostnameVerifier(HostnameVerifier verifier)` Set the hostname verifier to be used by the client to verify the endpoint's hostname against it's identification information.
    `abstract ClientBuilder` | `keyStore(KeyStore keyStore, char[] password)` Set the client-side key store.
    `ClientBuilder` | `keyStore(KeyStore keyStore, String password)` Set the client-side key store.
    `static ClientBuilder` | `newBuilder()` Create a new `ClientBuilder` instance using the default client builder implementation class provided by the JAX-RS implementation provider.
    `static Client` | `newClient()` Create a new `Client` instance using the default client builder implementation class provided by the JAX-RS implementation provider.
    `static Client` | `newClient(Configuration configuration)` Create a new custom-configured `Client` instance using the default client builder implementation class provided by the JAX-RS implementation provider.
    `abstract ClientBuilder` | `sslContext(SSLContext sslContext)` Set the SSL context that will be used when creating secured transport connections to server endpoints from `web targets` created by the client instance that is using this SSL context.
    `abstract ClientBuilder` | `trustStore(KeyStore trustStore)` Set the client-side trust store.
    `abstract ClientBuilder` | `withConfig(Configuration config)` Set the internal configuration state to an externally provided configuration state.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface javax.ws.rs.core.Configurable

      `getConfiguration, property, register, register, register, register, register, register, register, register`

- - ### Field Detail

    - #### JAXRS_DEFAULT_CLIENT_BUILDER_PROPERTY

          public static final String JAXRS_DEFAULT_CLIENT_BUILDER_PROPERTY

      Name of the property identifying the `ClientBuilder` implementation to be returned from `newBuilder()`.
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### ClientBuilder

          protected ClientBuilder()

      Allows custom implementations to extend the `ClientBuilder` class.

  - ### Method Detail

    - #### newBuilder

          public static ClientBuilder newBuilder()

      Create a new `ClientBuilder` instance using the default client builder implementation class provided by the JAX-RS implementation provider.
      Returns:
        new client builder instance.

    - #### newClient

          public static Client newClient()

      Create a new `Client` instance using the default client builder implementation class provided by the JAX-RS implementation provider.
      Returns:
        new client instance.

    - #### newClient

          public static Client newClient(Configuration configuration)

      Create a new custom-configured `Client` instance using the default client builder implementation class provided by the JAX-RS implementation provider.
      Parameters:
        `configuration` - data used to provide initial configuration for the new client instance.
      Returns:
        new configured client instance.

    - #### withConfig

          public abstract ClientBuilder withConfig(Configuration config)

      Set the internal configuration state to an externally provided configuration state.
      Parameters:
        `config` - external configuration state to replace the configuration of this configurable instance.
      Returns:
        the updated client builder instance.

    - #### sslContext

          public abstract ClientBuilder sslContext(SSLContext sslContext)

      Set the SSL context that will be used when creating secured transport connections to server endpoints from `web targets` created by the client instance that is using this SSL context. The SSL context is expected to have all the security infrastructure initialized, including the key and trust managers.

      Setting a SSL context instance resets any `key store` or `trust store` values previously specified.

      Parameters:
        `sslContext` - secure socket protocol implementation which acts as a factory for secure socket factories or `SSL engines`. Must not be `null`.
      Returns:
        an updated client builder instance.
      Throws:
        `NullPointerException` - in case the `sslContext` parameter is `null`.
      See Also:
        `keyStore(java.security.KeyStore, char[])`, `keyStore(java.security.KeyStore, String)`, `trustStore(java.security.KeyStore)`

    - #### keyStore

          public abstract ClientBuilder keyStore(KeyStore keyStore,
                               char[] password)

      Set the client-side key store. Key store contains client's private keys, and the certificates with their corresponding public keys.

      Setting a key store instance resets any `SSL context instance` value previously specified.

      Note that a custom key store is only required if you want to enable a custom setup of a 2-way SSL connections (client certificate authentication).

      Parameters:
        `keyStore` - client-side key store. Must not be `null`.
        `password` - client key password. Must not be `null`.
      Returns:
        an updated client builder instance.
      Throws:
        `NullPointerException` - in case any of the supplied parameters is `null`.
      See Also:
        `sslContext(javax.net.ssl.SSLContext)`, `keyStore(java.security.KeyStore, String)`, `trustStore(java.security.KeyStore)`

    - #### keyStore

          public ClientBuilder keyStore(KeyStore keyStore,
                               String password)

      Set the client-side key store. Key store contains client's private keys, and the certificates with their corresponding public keys.

      Setting a key store instance resets any `SSL context instance` value previously specified.

      Note that for improved security of working with password data and avoid storing passwords in Java string objects, the `keyStore(java.security.KeyStore, char[])` version of the method can be utilized. Also note that a custom key store is only required if you want to enable a custom setup of a 2-way SSL connections (client certificate authentication).

      Parameters:
        `keyStore` - client-side key store. Must not be `null`.
        `password` - client key password. Must not be `null`.
      Returns:
        an updated client builder instance.
      Throws:
        `NullPointerException` - in case any of the supplied parameters is `null`.
      See Also:
        `sslContext(javax.net.ssl.SSLContext)`, `keyStore(java.security.KeyStore, char[])`, `trustStore(java.security.KeyStore)`

    - #### trustStore

          public abstract ClientBuilder trustStore(KeyStore trustStore)

      Set the client-side trust store. Trust store is expected to contain certificates from other parties the client is you expect to communicate with, or from Certificate Authorities that are trusted to identify other parties.

      Setting a trust store instance resets any `SSL context instance` value previously specified.

      In case a custom trust store or custom SSL context is not specified, the trust management will be configured to use the default Java runtime settings.

      Parameters:
        `trustStore` - client-side trust store. Must not be `null`.
      Returns:
        an updated client builder instance.
      Throws:
        `NullPointerException` - in case the supplied trust store parameter is `null`.
      See Also:
        `sslContext(javax.net.ssl.SSLContext)`, `keyStore(java.security.KeyStore, char[])`, `keyStore(java.security.KeyStore, String)`

    - #### hostnameVerifier

          public abstract ClientBuilder hostnameVerifier(HostnameVerifier verifier)

      Set the hostname verifier to be used by the client to verify the endpoint's hostname against it's identification information.
      Parameters:
        `verifier` - hostname verifier.
      Returns:
        an updated client builder instance.

    - #### build

          public abstract Client build()

      Build a new client instance using all the configuration previously specified in this client builder.
      Returns:
        a new client instance.

Copyright © 2014. All Rights Reserved.