Class WriterInterceptorExecutor

  • All Implemented Interfaces:
    jakarta.ws.rs.ext.InterceptorContext, jakarta.ws.rs.ext.WriterInterceptorContext, org.glassfish.jersey.internal.inject.InjectionManagerSupplier, PropertiesDelegate

    public final class WriterInterceptorExecutor
    extends Object
    implements jakarta.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
    • Constructor Detail

      • WriterInterceptorExecutor

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

      • proceed

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

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

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

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

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

        public jakarta.ws.rs.core.MultivaluedMap<String,​Object> getHeaders()
        Specified by:
        getHeaders in interface jakarta.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 jakarta.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:
        PropertiesDelegate.getPropertyNames()
      • 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 jakarta.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(java.lang.String) to retrieve the property value will return null.
        Specified by:
        removeProperty in interface jakarta.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​(T 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​(T 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 jakarta.ws.rs.ext.InterceptorContext
      • setAnnotations

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

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

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

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

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

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

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