Class ClientRequest

All Implemented Interfaces:
javax.ws.rs.client.ClientRequestContext, InjectionManagerSupplier

public class ClientRequest extends OutboundMessageContext implements javax.ws.rs.client.ClientRequestContext, InjectionManagerSupplier
Jersey client request context.
  • Field Details

    • clientConfig

      private final ClientConfig clientConfig
    • propertiesDelegate

      private final PropertiesDelegate propertiesDelegate
    • requestUri

      private URI requestUri
    • httpMethod

      private String httpMethod
    • abortResponse

      private javax.ws.rs.core.Response abortResponse
    • workers

      private MessageBodyWorkers workers
    • asynchronous

      private boolean asynchronous
    • entityWritten

      private boolean entityWritten
    • writerInterceptors

      private Iterable<javax.ws.rs.ext.WriterInterceptor> writerInterceptors
    • readerInterceptors

      private Iterable<javax.ws.rs.ext.ReaderInterceptor> readerInterceptors
    • ignoreUserAgent

      private boolean ignoreUserAgent
    • LOGGER

      private static final Logger LOGGER
  • Constructor Details

    • ClientRequest

      protected ClientRequest(URI requestUri, ClientConfig clientConfig, PropertiesDelegate propertiesDelegate)
      Create new Jersey client request context.
      Parameters:
      requestUri - request Uri.
      clientConfig - request configuration.
      propertiesDelegate - properties delegate.
    • ClientRequest

      public ClientRequest(ClientRequest original)
      Copy constructor.
      Parameters:
      original - original instance.
  • Method Details

    • resolveProperty

      public <T> T resolveProperty(String name, Class<T> type)
      Resolve a property value for the specified property name.

      The method returns the value of the property registered in the request-specific property bag, if available. If no property for the given property name is found in the request-specific property bag, the method looks at the properties stored in the global client-runtime configuration this request belongs to. If there is a value defined in the client-runtime configuration, it is returned, otherwise the method returns null if no such property is registered neither in the client runtime nor in the request-specific property bag.

      Type Parameters:
      T - property Java type.
      Parameters:
      name - property name.
      type - expected property class type.
      Returns:
      resolved property value or null if no such property is registered.
    • resolveProperty

      public <T> T resolveProperty(String name, T defaultValue)
      Resolve a property value for the specified property name.

      The method returns the value of the property registered in the request-specific property bag, if available. If no property for the given property name is found in the request-specific property bag, the method looks at the properties stored in the global client-runtime configuration this request belongs to. If there is a value defined in the client-runtime configuration, it is returned, otherwise the method returns defaultValue if no such property is registered neither in the client runtime nor in the request-specific property bag.

      Type Parameters:
      T - property Java type.
      Parameters:
      name - property name.
      defaultValue - default value to return if the property is not registered.
      Returns:
      resolved property value or defaultValue if no such property is registered.
    • resolveProperty

      private <T> T resolveProperty(String name, Object defaultValue, Class<T> type)
    • getProperty

      public Object getProperty(String name)
      Specified by:
      getProperty in interface javax.ws.rs.client.ClientRequestContext
    • getPropertyNames

      public Collection<String> getPropertyNames()
      Specified by:
      getPropertyNames in interface javax.ws.rs.client.ClientRequestContext
    • setProperty

      public void setProperty(String name, Object object)
      Specified by:
      setProperty in interface javax.ws.rs.client.ClientRequestContext
    • removeProperty

      public void removeProperty(String name)
      Specified by:
      removeProperty in interface javax.ws.rs.client.ClientRequestContext
    • getPropertiesDelegate

      PropertiesDelegate getPropertiesDelegate()
      Get the underlying properties delegate.
      Returns:
      underlying properties delegate.
    • getClientRuntime

      ClientRuntime getClientRuntime()
      Get the underlying client runtime.
      Returns:
      underlying client runtime.
    • getUri

      public URI getUri()
      Specified by:
      getUri in interface javax.ws.rs.client.ClientRequestContext
    • setUri

      public void setUri(URI uri)
      Specified by:
      setUri in interface javax.ws.rs.client.ClientRequestContext
    • getMethod

      public String getMethod()
      Specified by:
      getMethod in interface javax.ws.rs.client.ClientRequestContext
    • setMethod

      public void setMethod(String method)
      Specified by:
      setMethod in interface javax.ws.rs.client.ClientRequestContext
    • getClient

      public JerseyClient getClient()
      Specified by:
      getClient in interface javax.ws.rs.client.ClientRequestContext
    • abortWith

      public void abortWith(javax.ws.rs.core.Response response)
      Specified by:
      abortWith in interface javax.ws.rs.client.ClientRequestContext
    • getAbortResponse

      public javax.ws.rs.core.Response getAbortResponse()
      Get the request filter chain aborting response if set, or null otherwise.
      Returns:
      request filter chain aborting response if set, or null otherwise.
    • getConfiguration

      public javax.ws.rs.core.Configuration getConfiguration()
      Specified by:
      getConfiguration in interface javax.ws.rs.client.ClientRequestContext
    • getClientConfig

      ClientConfig getClientConfig()
      Get internal client configuration state.
      Returns:
      internal client configuration state.
    • getCookies

      public Map<String,javax.ws.rs.core.Cookie> getCookies()
      Specified by:
      getCookies in interface javax.ws.rs.client.ClientRequestContext
    • getWorkers

      public MessageBodyWorkers getWorkers()
      Get the message body workers associated with the request.
      Returns:
      message body workers.
    • setWorkers

      public void setWorkers(MessageBodyWorkers workers)
      Set the message body workers associated with the request.
      Parameters:
      workers - message body workers.
    • accept

      public void accept(javax.ws.rs.core.MediaType... types)
      Add new accepted types to the message headers.
      Parameters:
      types - accepted types to be added.
    • accept

      public void accept(String... types)
      Add new accepted types to the message headers.
      Parameters:
      types - accepted types to be added.
    • acceptLanguage

      public void acceptLanguage(Locale... locales)
      Add new accepted languages to the message headers.
      Parameters:
      locales - accepted languages to be added.
    • acceptLanguage

      public void acceptLanguage(String... locales)
      Add new accepted languages to the message headers.
      Parameters:
      locales - accepted languages to be added.
    • cookie

      public void cookie(javax.ws.rs.core.Cookie cookie)
      Add new cookie to the message headers.
      Parameters:
      cookie - cookie to be added.
    • cacheControl

      public void cacheControl(javax.ws.rs.core.CacheControl cacheControl)
      Add new cache control entry to the message headers.
      Parameters:
      cacheControl - cache control entry to be added.
    • encoding

      public void encoding(String encoding)
      Set message encoding.
      Parameters:
      encoding - message encoding to be set.
    • language

      public void language(String language)
      Set message language.
      Parameters:
      language - message language to be set.
    • language

      public void language(Locale language)
      Set message language.
      Parameters:
      language - message language to be set.
    • type

      public void type(javax.ws.rs.core.MediaType type)
      Set message content type.
      Parameters:
      type - message content type to be set.
    • type

      public void type(String type)
      Set message content type.
      Parameters:
      type - message content type to be set.
    • variant

      public void variant(javax.ws.rs.core.Variant variant)
      Set message content variant (type, language and encoding).
      Parameters:
      variant - message content content variant (type, language and encoding) to be set.
    • isAsynchronous

      public boolean isAsynchronous()
      Returns true if the request is called asynchronously using AsyncInvoker
      Returns:
      True if the request is asynchronous; false otherwise.
    • setAsynchronous

      void setAsynchronous(boolean async)
      Sets the flag indicating whether the request is called asynchronously using AsyncInvoker.
      Parameters:
      async - True if the request is asynchronous; false otherwise.
    • enableBuffering

      public void enableBuffering()
      Enable a buffering of serialized entity. The buffering will be configured from runtime configuration associated with this request. The property determining the size of the buffer is CommonProperties.OUTBOUND_CONTENT_LENGTH_BUFFER.

      The buffering functionality is by default disabled and could be enabled by calling this method. In this case this method must be called before first bytes are written to the entity stream.

    • writeEntity

      public void writeEntity() throws IOException
      Write (serialize) the entity set in this request into the entity stream. The method use writer interceptors and message body writer.

      This method modifies the state of this request and therefore it can be called only once per request life cycle otherwise IllegalStateException is thrown.

      Note that OutboundMessageContext.setStreamProvider(org.glassfish.jersey.message.internal.OutboundMessageContext.StreamProvider) and optionally enableBuffering() must be called before calling this method.

      Throws:
      IOException - In the case of IO error.
    • doWriteEntity

      void doWriteEntity(MessageBodyWorkers writeWorkers, javax.ws.rs.core.GenericType<?> entityType) throws IOException
      Added only to make the code testable.
      Parameters:
      writeWorkers - Message body workers instance used to write the entity.
      entityType - entity type.
      Throws:
      IOException - when MessageBodyWorkers.writeTo(Object, Class, Type, Annotation[], MediaType, MultivaluedMap, PropertiesDelegate, OutputStream, Iterable) throws an IOException. This state is always regarded as connection failure.
    • ensureMediaType

      private void ensureMediaType()
    • getMediaType

      private javax.ws.rs.core.MediaType getMediaType(List<javax.ws.rs.core.MediaType> mediaTypes)
    • setWriterInterceptors

      void setWriterInterceptors(Iterable<javax.ws.rs.ext.WriterInterceptor> writerInterceptors)
      Set writer interceptors for this request.
      Parameters:
      writerInterceptors - Writer interceptors in the interceptor execution order.
    • getWriterInterceptors

      public Iterable<javax.ws.rs.ext.WriterInterceptor> getWriterInterceptors()
      Get writer interceptors of this request.
      Returns:
      Writer interceptors in the interceptor execution order.
    • getReaderInterceptors

      public Iterable<javax.ws.rs.ext.ReaderInterceptor> getReaderInterceptors()
      Get reader interceptors of this request.
      Returns:
      Reader interceptors in the interceptor execution order.
    • setReaderInterceptors

      void setReaderInterceptors(Iterable<javax.ws.rs.ext.ReaderInterceptor> readerInterceptors)
      Set reader interceptors for this request.
      Parameters:
      readerInterceptors - Reader interceptors in the interceptor execution order.
    • getInjectionManager

      public InjectionManager getInjectionManager()
      Description copied from interface: InjectionManagerSupplier
      Get injection manager.
      Specified by:
      getInjectionManager in interface InjectionManagerSupplier
      Returns:
      injection manager.
    • ignoreUserAgent

      public boolean ignoreUserAgent()
      Indicates whether the User-Agent header should be omitted if not directly set to the map of headers.
      Returns:
      true if the header should be omitted, false otherwise.
    • ignoreUserAgent

      public void ignoreUserAgent(boolean ignore)
      Indicates whether the User-Agent header should be omitted if not directly set to the map of headers.
      Parameters:
      ignore - true if the header should be omitted, false otherwise.