Class RestTransportConfigBuilder


public class RestTransportConfigBuilder extends ClientTransportConfigBuilder<RestTransportConfig, RestTransportConfigBuilder>
Builder for creating RestTransportConfig instances.

This builder provides a fluent API for configuring the REST transport protocol. All configuration options are optional - if not specified, sensible defaults are used:

  • HTTP client: Auto-selected via A2AHttpClientFactory (prefers Vert.x, falls back to JDK)
  • Interceptors: None

Basic usage:

// Minimal configuration (uses all defaults)
RestTransportConfig config = new RestTransportConfigBuilder()
    .build();

Client client = Client.builder(agentCard)
    .withTransport(RestTransport.class, config)
    .build();

Custom HTTP client:

// Configure custom HTTP client for connection pooling, timeouts, etc.
A2AHttpClient httpClient = new ApacheHttpClient()
    .withConnectionTimeout(Duration.ofSeconds(10))
    .withMaxConnections(50);

RestTransportConfig config = new RestTransportConfigBuilder()
    .httpClient(httpClient)
    .build();

With interceptors:

RestTransportConfig config = new RestTransportConfigBuilder()
    .addInterceptor(new LoggingInterceptor())
    .addInterceptor(new MetricsInterceptor())
    .addInterceptor(new RetryInterceptor(3))
    .build();

Direct usage in ClientBuilder:

// Can pass builder directly to withTransport()
Client client = Client.builder(agentCard)
    .withTransport(RestTransport.class, new RestTransportConfigBuilder()
        .httpClient(customClient)
        .addInterceptor(loggingInterceptor))
    .build();
See Also:
  • Constructor Details

    • RestTransportConfigBuilder

      public RestTransportConfigBuilder()
  • Method Details

    • httpClient

      public RestTransportConfigBuilder httpClient(A2AHttpClient httpClient)
      Set the HTTP client to use for REST requests.

      Custom HTTP clients can provide:

      • Connection pooling and reuse
      • Custom timeout configuration
      • SSL/TLS configuration
      • Proxy support
      • Custom header handling

      If not specified, a client is auto-selected via A2AHttpClientFactory.

      Example:

      A2AHttpClient client = new CustomHttpClient()
          .withConnectTimeout(Duration.ofSeconds(5))
          .withReadTimeout(Duration.ofSeconds(30))
          .withConnectionPool(10, 50);
      
      builder.httpClient(client);
      
      Parameters:
      httpClient - the HTTP client to use
      Returns:
      this builder for method chaining
    • build

      public RestTransportConfig build()
      Build the REST transport configuration.

      If no HTTP client was configured, one is auto-selected via A2AHttpClientFactory. Any configured interceptors are transferred to the configuration.

      Specified by:
      build in class ClientTransportConfigBuilder<RestTransportConfig, RestTransportConfigBuilder>
      Returns:
      the configured REST transport configuration