Class WriterInterceptorExecutor

java.lang.Object
org.glassfish.jersey.message.internal.WriterInterceptorExecutor
All Implemented Interfaces:
javax.ws.rs.ext.InterceptorContext, javax.ws.rs.ext.WriterInterceptorContext, org.glassfish.jersey.internal.inject.InjectionManagerSupplier, PropertiesDelegate

public final class WriterInterceptorExecutor extends Object implements javax.ws.rs.ext.WriterInterceptorContext, org.glassfish.jersey.internal.inject.InjectionManagerSupplier
Represents writer interceptor chain executor for both client and server side. It constructs wrapped interceptor chain and invokes it. At the end of the chain a message body writer execution interceptor is inserted, which writes entity to the output stream provided by the chain.
Author:
Miroslav Fuksa, Jakub Podlesak (jakub.podlesak at oracle.com)
  • Constructor Details

    • WriterInterceptorExecutor

      public WriterInterceptorExecutor(Object entity, Class<?> rawType, Type type, Annotation[] annotations, javax.ws.rs.core.MediaType mediaType, javax.ws.rs.core.MultivaluedMap<String,Object> headers, PropertiesDelegate propertiesDelegate, OutputStream entityStream, MessageBodyWorkers workers, Iterable<javax.ws.rs.ext.WriterInterceptor> writerInterceptors, org.glassfish.jersey.internal.inject.InjectionManager injectionManager)
      Constructs a new executor to write given type to provided entityStream.
      Parameters:
      entity - entity object to be processed.
      rawType - raw Java entity type.
      type - generic Java entity type.
      annotations - array of annotations on the declaration of the artifact that will be initialized with the produced instance. E.g. if the message body is to be converted into a method parameter, this will be the annotations on that parameter returned by Method.getParameterAnnotations.
      mediaType - media type of the HTTP entity.
      headers - mutable HTTP headers associated with HTTP entity.
      propertiesDelegate - request-scoped properties delegate.
      entityStream - InputStream from which an entity will be read. The stream is not closed after reading the entity.
      workers - Message body workers.
      writerInterceptors - Writer interceptors that are to be used to intercept writing of an entity.
      injectionManager - injection manager.
  • Method Details

    • proceed

      public void proceed() throws IOException
      Starts the interceptor chain execution.
      Specified by:
      proceed in interface javax.ws.rs.ext.WriterInterceptorContext
      Throws:
      IOException
    • getEntity

      public Object getEntity()
      Specified by:
      getEntity in interface javax.ws.rs.ext.WriterInterceptorContext
    • setEntity

      public void setEntity(Object entity)
      Specified by:
      setEntity in interface javax.ws.rs.ext.WriterInterceptorContext
    • getOutputStream

      public OutputStream getOutputStream()
      Specified by:
      getOutputStream in interface javax.ws.rs.ext.WriterInterceptorContext
    • setOutputStream

      public void setOutputStream(OutputStream os)
      Specified by:
      setOutputStream in interface javax.ws.rs.ext.WriterInterceptorContext
    • getHeaders

      public javax.ws.rs.core.MultivaluedMap<String,Object> getHeaders()
      Specified by:
      getHeaders in interface javax.ws.rs.ext.WriterInterceptorContext
    • getInjectionManager

      public org.glassfish.jersey.internal.inject.InjectionManager getInjectionManager()
      Description copied from interface: org.glassfish.jersey.internal.inject.InjectionManagerSupplier
      Get injection manager.
      Specified by:
      getInjectionManager in interface org.glassfish.jersey.internal.inject.InjectionManagerSupplier
      Returns:
      injection manager.
    • getProperty

      public Object getProperty(String name)
      Description copied from interface: PropertiesDelegate
      Returns the property with the given name registered in the current request/response exchange context, or null if there is no property by that name.

      A property allows a JAX-RS filters and interceptors to exchange additional custom information not already provided by this interface.

      A list of supported properties can be retrieved using PropertiesDelegate.getPropertyNames(). Custom property names should follow the same convention as package names.

      Specified by:
      getProperty in interface javax.ws.rs.ext.InterceptorContext
      Specified by:
      getProperty in interface PropertiesDelegate
      Parameters:
      name - a String specifying the name of the property.
      Returns:
      an Object containing the value of the property, or null if no property exists matching the given name.
      See Also:
    • getPropertyNames

      public Collection<String> getPropertyNames()
      Description copied from interface: PropertiesDelegate
      Returns an immutable collection containing the property names available within the context of the current request/response exchange context.

      Use the PropertiesDelegate.getProperty(String) method with a property name to get the value of a property.

      Specified by:
      getPropertyNames in interface javax.ws.rs.ext.InterceptorContext
      Specified by:
      getPropertyNames in interface PropertiesDelegate
      Returns:
      an immutable collection of property names.
      See Also:
    • setProperty

      public void setProperty(String name, Object object)
      Description copied from interface: PropertiesDelegate
      Binds an object to a given property name in the current request/response exchange context. If the name specified is already used for a property, this method will replace the value of the property with the new value.

      A property allows a JAX-RS filters and interceptors to exchange additional custom information not already provided by this interface.

      A list of supported properties can be retrieved using PropertiesDelegate.getPropertyNames(). Custom property names should follow the same convention as package names.

      If a null value is passed, the effect is the same as calling the PropertiesDelegate.removeProperty(String) method.

      Specified by:
      setProperty in interface javax.ws.rs.ext.InterceptorContext
      Specified by:
      setProperty in interface PropertiesDelegate
      Parameters:
      name - a String specifying the name of the property.
      object - an Object representing the property to be bound.
    • removeProperty

      public void removeProperty(String name)
      Description copied from interface: PropertiesDelegate
      Removes a property with the given name from the current request/response exchange context. After removal, subsequent calls to PropertiesDelegate.getProperty(String) to retrieve the property value will return null.
      Specified by:
      removeProperty in interface javax.ws.rs.ext.InterceptorContext
      Specified by:
      removeProperty in interface PropertiesDelegate
      Parameters:
      name - a String specifying the name of the property to be removed.
    • getTracingLogger

      protected final TracingLogger getTracingLogger()
      Get tracing logger instance configured in via properties.
      Returns:
      tracing logger instance.
    • traceBefore

      protected final void traceBefore(javax.ws.rs.ext.WriterInterceptor interceptor, TracingLogger.Event event)
      Tracing support - log invocation of interceptor BEFORE context.proceed() call.
      Parameters:
      interceptor - invoked interceptor
      event - event type to be tested
    • traceAfter

      protected final void traceAfter(javax.ws.rs.ext.WriterInterceptor interceptor, TracingLogger.Event event)
      Tracing support - log invocation of interceptor AFTER context.proceed() call.
      Parameters:
      interceptor - invoked interceptor
      event - event type to be tested
    • clearLastTracedInterceptor

      protected final void clearLastTracedInterceptor()
      Clear last traced interceptor information.
    • getAnnotations

      public Annotation[] getAnnotations()
      Specified by:
      getAnnotations in interface javax.ws.rs.ext.InterceptorContext
    • setAnnotations

      public void setAnnotations(Annotation[] annotations)
      Specified by:
      setAnnotations in interface javax.ws.rs.ext.InterceptorContext
    • getType

      public Class getType()
      Specified by:
      getType in interface javax.ws.rs.ext.InterceptorContext
    • setType

      public void setType(Class type)
      Specified by:
      setType in interface javax.ws.rs.ext.InterceptorContext
    • getGenericType

      public Type getGenericType()
      Specified by:
      getGenericType in interface javax.ws.rs.ext.InterceptorContext
    • setGenericType

      public void setGenericType(Type genericType)
      Specified by:
      setGenericType in interface javax.ws.rs.ext.InterceptorContext
    • getMediaType

      public javax.ws.rs.core.MediaType getMediaType()
      Specified by:
      getMediaType in interface javax.ws.rs.ext.InterceptorContext
    • setMediaType

      public void setMediaType(javax.ws.rs.core.MediaType mediaType)
      Specified by:
      setMediaType in interface javax.ws.rs.ext.InterceptorContext