Class WriterInterceptorExecutor

  • All Implemented Interfaces:
    javax.ws.rs.ext.InterceptorContext, javax.ws.rs.ext.WriterInterceptorContext, InjectionManagerSupplier, PropertiesDelegate

    public final class WriterInterceptorExecutor
    extends InterceptorExecutor<javax.ws.rs.ext.WriterInterceptor>
    implements javax.ws.rs.ext.WriterInterceptorContext, 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.
    • Field Detail

      • LOGGER

        private static final java.util.logging.Logger LOGGER
      • outputStream

        private java.io.OutputStream outputStream
      • headers

        private final javax.ws.rs.core.MultivaluedMap<java.lang.String,​java.lang.Object> headers
      • entity

        private java.lang.Object entity
      • iterator

        private final java.util.Iterator<javax.ws.rs.ext.WriterInterceptor> iterator
      • processedCount

        private int processedCount
    • Constructor Detail

      • WriterInterceptorExecutor

        public WriterInterceptorExecutor​(java.lang.Object entity,
                                         java.lang.Class<?> rawType,
                                         java.lang.reflect.Type type,
                                         java.lang.annotation.Annotation[] annotations,
                                         javax.ws.rs.core.MediaType mediaType,
                                         javax.ws.rs.core.MultivaluedMap<java.lang.String,​java.lang.Object> headers,
                                         PropertiesDelegate propertiesDelegate,
                                         java.io.OutputStream entityStream,
                                         MessageBodyWorkers workers,
                                         java.lang.Iterable<javax.ws.rs.ext.WriterInterceptor> writerInterceptors,
                                         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 Detail

      • getNextInterceptor

        private javax.ws.rs.ext.WriterInterceptor getNextInterceptor()
        Returns next interceptor in the chain. Stateful method.
        Returns:
        Next interceptor.
      • proceed

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

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

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

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

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

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

        int getProcessedCount()
        Get number of processed interceptors.
        Returns:
        number of processed interceptors.