Class DefaultJdkHttpClient

java.lang.Object
io.micronaut.http.client.jdk.DefaultJdkHttpClient
All Implemented Interfaces:
io.micronaut.context.LifeCycle<io.micronaut.http.client.HttpClient>, io.micronaut.http.client.HttpClient, JdkHttpClient, Closeable, AutoCloseable

@Internal public class DefaultJdkHttpClient extends Object implements JdkHttpClient
HttpClient implementation for java.net.http.* HTTP Client.
Since:
4.0.0
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected final HttpClient
     
    protected final List<io.micronaut.http.filter.HttpFilterResolver.FilterEntry>
     
    protected final String
     
    protected final io.micronaut.http.client.HttpClientConfiguration
     
    protected final String
     
    protected final io.micronaut.core.convert.ConversionService
     
    protected final CookieDecoder
     
    protected final CookieManager
     
    protected final io.micronaut.http.filter.HttpClientFilterResolver<io.micronaut.http.client.filter.ClientFilterResolutionContext>
     
    static final String
     
    static final String
     
    protected final io.micronaut.http.client.HttpVersionSelection
     
    protected final io.micronaut.http.client.LoadBalancer
     
    protected final org.slf4j.Logger
     
    protected io.micronaut.http.codec.MediaTypeCodecRegistry
     
    protected io.micronaut.http.body.MessageBodyHandlerRegistry
     
    protected final io.micronaut.http.bind.RequestBinderRegistry
     
    protected final JdkClientSslBuilder
     
    static final String
     

    Fields inherited from interface io.micronaut.http.client.HttpClient

    DEFAULT_ERROR_TYPE
  • Constructor Summary

    Constructors
    Constructor
    Description
    DefaultJdkHttpClient(@Nullable io.micronaut.http.client.LoadBalancer loadBalancer, io.micronaut.http.client.HttpVersionSelection httpVersion, @NonNull io.micronaut.http.client.HttpClientConfiguration configuration, @Nullable String contextPath, @Nullable io.micronaut.http.filter.HttpClientFilterResolver<io.micronaut.http.client.filter.ClientFilterResolutionContext> filterResolver, @Nullable List<io.micronaut.http.filter.HttpFilterResolver.FilterEntry> clientFilterEntries, io.micronaut.http.codec.MediaTypeCodecRegistry mediaTypeCodecRegistry, io.micronaut.http.body.MessageBodyHandlerRegistry messageBodyHandlerRegistry, io.micronaut.http.bind.RequestBinderRegistry requestBinderRegistry, String clientId, io.micronaut.core.convert.ConversionService conversionService, JdkClientSslBuilder sslBuilder, CookieDecoder cookieDecoder)
     
    DefaultJdkHttpClient(URI uri, io.micronaut.core.convert.ConversionService conversionService)
     
    DefaultJdkHttpClient(URI uri, io.micronaut.http.client.HttpClientConfiguration configuration, io.micronaut.http.codec.MediaTypeCodecRegistry mediaTypeCodecRegistry, io.micronaut.http.body.MessageBodyHandlerRegistry messageBodyHandlerRegistry, io.micronaut.core.convert.ConversionService conversionService)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected <I, R extends io.micronaut.http.HttpResponse<?>>
    org.reactivestreams.Publisher<R>
    applyFilterToResponsePublisher(io.micronaut.http.HttpRequest<I> request, URI requestURI, org.reactivestreams.Publisher<R> responsePublisher)
     
    <I, O, E> org.reactivestreams.Publisher<io.micronaut.http.HttpResponse<O>>
    exchange(@NonNull io.micronaut.http.HttpRequest<I> request, @NonNull io.micronaut.core.type.Argument<O> bodyType, @NonNull io.micronaut.core.type.Argument<E> errorType)
     
    protected <I, O> reactor.core.publisher.Flux<io.micronaut.http.HttpResponse<O>>
    exchangeImpl(io.micronaut.http.HttpRequest<I> request, @Nullable io.micronaut.core.type.Argument<O> bodyType)
     
    io.micronaut.http.codec.MediaTypeCodecRegistry
     
    io.micronaut.http.body.MessageBodyHandlerRegistry
     
    boolean
     
    protected <I> reactor.core.publisher.Mono<HttpRequest>
    mapToHttpRequest(io.micronaut.http.HttpRequest<I> request, @Nullable io.micronaut.core.type.Argument<?> bodyType)
    Convert the Micronaut request to a JDK request.
    protected reactor.core.publisher.Mono<URI>
    resolveRequestUri(io.micronaut.http.HttpRequest<?> request)
     
    protected <O> @NonNull io.micronaut.http.HttpResponse<O>
    response(HttpResponse<byte[]> netResponse, @NonNull io.micronaut.core.type.Argument<O> bodyType)
    Convert the JDK response to a Micronaut response.
    protected <O> org.reactivestreams.Publisher<io.micronaut.http.HttpResponse<O>>
    responsePublisher(io.micronaut.http.HttpRequest<?> request, @Nullable io.micronaut.core.type.Argument<O> bodyType)
     
    void
    setMediaTypeCodecRegistry(io.micronaut.http.codec.MediaTypeCodecRegistry mediaTypeCodecRegistry)
     
    void
    setMessageBodyHandlerRegistry(io.micronaut.http.body.MessageBodyHandlerRegistry messageBodyHandlerRegistry)
     
    io.micronaut.http.client.BlockingHttpClient
     

    Methods inherited from class java.lang.Object

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

    Methods inherited from interface io.micronaut.http.client.HttpClient

    exchange, exchange, exchange, exchange, exchange, refresh, retrieve, retrieve, retrieve, retrieve, retrieve

    Methods inherited from interface io.micronaut.context.LifeCycle

    close, start, stop
  • Field Details

    • H2C_ERROR_MESSAGE

      public static final String H2C_ERROR_MESSAGE
      See Also:
    • H3_ERROR_MESSAGE

      public static final String H3_ERROR_MESSAGE
      See Also:
    • WEIRD_ALPN_ERROR_MESSAGE

      public static final String WEIRD_ALPN_ERROR_MESSAGE
      See Also:
    • loadBalancer

      protected final io.micronaut.http.client.LoadBalancer loadBalancer
    • httpVersion

      protected final io.micronaut.http.client.HttpVersionSelection httpVersion
    • configuration

      protected final io.micronaut.http.client.HttpClientConfiguration configuration
    • contextPath

      protected final String contextPath
    • client

      protected final HttpClient client
    • cookieManager

      protected final CookieManager cookieManager
    • requestBinderRegistry

      protected final io.micronaut.http.bind.RequestBinderRegistry requestBinderRegistry
    • clientId

      protected final String clientId
    • conversionService

      protected final io.micronaut.core.convert.ConversionService conversionService
    • sslBuilder

      protected final JdkClientSslBuilder sslBuilder
    • log

      protected final org.slf4j.Logger log
    • filterResolver

      protected final io.micronaut.http.filter.HttpClientFilterResolver<io.micronaut.http.client.filter.ClientFilterResolutionContext> filterResolver
    • clientFilterEntries

      protected final List<io.micronaut.http.filter.HttpFilterResolver.FilterEntry> clientFilterEntries
    • cookieDecoder

      protected final CookieDecoder cookieDecoder
    • mediaTypeCodecRegistry

      protected io.micronaut.http.codec.MediaTypeCodecRegistry mediaTypeCodecRegistry
    • messageBodyHandlerRegistry

      protected io.micronaut.http.body.MessageBodyHandlerRegistry messageBodyHandlerRegistry
  • Constructor Details

    • DefaultJdkHttpClient

      public DefaultJdkHttpClient(@Nullable @Nullable io.micronaut.http.client.LoadBalancer loadBalancer, io.micronaut.http.client.HttpVersionSelection httpVersion, @NonNull @NonNull io.micronaut.http.client.HttpClientConfiguration configuration, @Nullable @Nullable String contextPath, @Nullable @Nullable io.micronaut.http.filter.HttpClientFilterResolver<io.micronaut.http.client.filter.ClientFilterResolutionContext> filterResolver, @Nullable @Nullable List<io.micronaut.http.filter.HttpFilterResolver.FilterEntry> clientFilterEntries, io.micronaut.http.codec.MediaTypeCodecRegistry mediaTypeCodecRegistry, io.micronaut.http.body.MessageBodyHandlerRegistry messageBodyHandlerRegistry, io.micronaut.http.bind.RequestBinderRegistry requestBinderRegistry, String clientId, io.micronaut.core.convert.ConversionService conversionService, JdkClientSslBuilder sslBuilder, CookieDecoder cookieDecoder)
    • DefaultJdkHttpClient

      public DefaultJdkHttpClient(URI uri, io.micronaut.core.convert.ConversionService conversionService)
    • DefaultJdkHttpClient

      public DefaultJdkHttpClient(URI uri, io.micronaut.http.client.HttpClientConfiguration configuration, io.micronaut.http.codec.MediaTypeCodecRegistry mediaTypeCodecRegistry, io.micronaut.http.body.MessageBodyHandlerRegistry messageBodyHandlerRegistry, io.micronaut.core.convert.ConversionService conversionService)
  • Method Details

    • toBlocking

      public io.micronaut.http.client.BlockingHttpClient toBlocking()
      Specified by:
      toBlocking in interface io.micronaut.http.client.HttpClient
    • exchange

      public <I, O, E> org.reactivestreams.Publisher<io.micronaut.http.HttpResponse<O>> exchange(@NonNull @NonNull io.micronaut.http.HttpRequest<I> request, @NonNull @NonNull io.micronaut.core.type.Argument<O> bodyType, @NonNull @NonNull io.micronaut.core.type.Argument<E> errorType)
      Specified by:
      exchange in interface io.micronaut.http.client.HttpClient
    • isRunning

      public boolean isRunning()
      Specified by:
      isRunning in interface io.micronaut.context.LifeCycle<io.micronaut.http.client.HttpClient>
    • getMediaTypeCodecRegistry

      public io.micronaut.http.codec.MediaTypeCodecRegistry getMediaTypeCodecRegistry()
      Returns:
      The MediaTypeCodecRegistry
    • setMediaTypeCodecRegistry

      public void setMediaTypeCodecRegistry(io.micronaut.http.codec.MediaTypeCodecRegistry mediaTypeCodecRegistry)
      Parameters:
      mediaTypeCodecRegistry - The MediaTypeCodecRegistry
    • getMessageBodyHandlerRegistry

      public io.micronaut.http.body.MessageBodyHandlerRegistry getMessageBodyHandlerRegistry()
      Returns:
      The MessageBodyHandlerRegistry
    • setMessageBodyHandlerRegistry

      public void setMessageBodyHandlerRegistry(io.micronaut.http.body.MessageBodyHandlerRegistry messageBodyHandlerRegistry)
      Parameters:
      messageBodyHandlerRegistry - The MessageBodyHandlerRegistry
    • mapToHttpRequest

      protected <I> reactor.core.publisher.Mono<HttpRequest> mapToHttpRequest(@NonNull io.micronaut.http.HttpRequest<I> request, @Nullable @Nullable io.micronaut.core.type.Argument<?> bodyType)
      Convert the Micronaut request to a JDK request.
      Type Parameters:
      I - The body type
      Parameters:
      request - The Micronaut request object
      bodyType - The body type
      Returns:
      A JDK request object
    • resolveRequestUri

      protected reactor.core.publisher.Mono<URI> resolveRequestUri(io.micronaut.http.HttpRequest<?> request)
    • response

      @NonNull protected <O> @NonNull io.micronaut.http.HttpResponse<O> response(@NonNull HttpResponse<byte[]> netResponse, @NonNull @NonNull io.micronaut.core.type.Argument<O> bodyType)
      Convert the JDK response to a Micronaut response.
      Type Parameters:
      O - The body type
      Parameters:
      netResponse - The JDK response
      bodyType - The body type
      Returns:
      A Micronaut response
    • exchangeImpl

      protected <I, O> reactor.core.publisher.Flux<io.micronaut.http.HttpResponse<O>> exchangeImpl(@NonNull io.micronaut.http.HttpRequest<I> request, @Nullable @Nullable io.micronaut.core.type.Argument<O> bodyType)
    • applyFilterToResponsePublisher

      protected <I, R extends io.micronaut.http.HttpResponse<?>> org.reactivestreams.Publisher<R> applyFilterToResponsePublisher(io.micronaut.http.HttpRequest<I> request, URI requestURI, org.reactivestreams.Publisher<R> responsePublisher)
    • responsePublisher

      protected <O> org.reactivestreams.Publisher<io.micronaut.http.HttpResponse<O>> responsePublisher(@NonNull io.micronaut.http.HttpRequest<?> request, @Nullable @Nullable io.micronaut.core.type.Argument<O> bodyType)