Class ReaderInterceptorExecutor
- java.lang.Object
-
- org.glassfish.jersey.message.internal.InterceptorExecutor<javax.ws.rs.ext.ReaderInterceptor>
-
- org.glassfish.jersey.message.internal.ReaderInterceptorExecutor
-
- All Implemented Interfaces:
javax.ws.rs.ext.InterceptorContext
,javax.ws.rs.ext.ReaderInterceptorContext
,InjectionManagerSupplier
,PropertiesDelegate
public final class ReaderInterceptorExecutor extends InterceptorExecutor<javax.ws.rs.ext.ReaderInterceptor> implements javax.ws.rs.ext.ReaderInterceptorContext, InjectionManagerSupplier
Represents reader interceptor chain executor for both client and server side. It constructs wrapped interceptor chain and invokes it. At the end of the chain amessage body reader
execution interceptor is inserted, which finally reads an entity from the output stream provided by the chain.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private class
ReaderInterceptorExecutor.TerminalReaderInterceptor
Terminal reader interceptor which choose the appropriateMessageBodyReader
and reads the entity from the input stream.private static class
ReaderInterceptorExecutor.UnCloseableInputStream
MessageBodyReader
s should not close the givenstream
.
-
Field Summary
Fields Modifier and Type Field Description private javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String>
headers
private InjectionManager
injectionManager
private java.io.InputStream
inputStream
private java.util.Iterator<javax.ws.rs.ext.ReaderInterceptor>
interceptors
private static java.util.logging.Logger
LOGGER
private int
processedCount
private boolean
translateNce
private MessageBodyWorkers
workers
-
Constructor Summary
Constructors Constructor Description ReaderInterceptorExecutor(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.String> headers, PropertiesDelegate propertiesDelegate, java.io.InputStream inputStream, MessageBodyWorkers workers, java.lang.Iterable<javax.ws.rs.ext.ReaderInterceptor> readerInterceptors, boolean translateNce, InjectionManager injectionManager)
Constructs a new executor to read given type from providedentityStream
.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static java.io.InputStream
closeableInputStream(java.io.InputStream inputStream)
Make theInputStream
able to close.javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String>
getHeaders()
InjectionManager
getInjectionManager()
Get injection manager.java.io.InputStream
getInputStream()
(package private) int
getProcessedCount()
Get number of processed interceptors.java.lang.Object
proceed()
Starts the interceptor chain execution.void
setInputStream(java.io.InputStream is)
-
Methods inherited from class org.glassfish.jersey.message.internal.InterceptorExecutor
clearLastTracedInterceptor, getAnnotations, getGenericType, getMediaType, getProperty, getPropertyNames, getTracingLogger, getType, removeProperty, setAnnotations, setGenericType, setMediaType, setProperty, setType, traceAfter, traceBefore
-
-
-
-
Field Detail
-
LOGGER
private static final java.util.logging.Logger LOGGER
-
headers
private final javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> headers
-
interceptors
private final java.util.Iterator<javax.ws.rs.ext.ReaderInterceptor> interceptors
-
workers
private final MessageBodyWorkers workers
-
translateNce
private final boolean translateNce
-
injectionManager
private final InjectionManager injectionManager
-
inputStream
private java.io.InputStream inputStream
-
processedCount
private int processedCount
-
-
Constructor Detail
-
ReaderInterceptorExecutor
ReaderInterceptorExecutor(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.String> headers, PropertiesDelegate propertiesDelegate, java.io.InputStream inputStream, MessageBodyWorkers workers, java.lang.Iterable<javax.ws.rs.ext.ReaderInterceptor> readerInterceptors, boolean translateNce, InjectionManager injectionManager)
Constructs a new executor to read given type from providedentityStream
.- Parameters:
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 byMethod.getParameterAnnotations
.mediaType
- media type of the HTTP entity.headers
- mutable message headers.propertiesDelegate
- request-scoped properties delegate.inputStream
- entity input stream.workers
-Message body workers
.readerInterceptors
- Reader interceptor that are to be used to intercept the reading of an entity. The interceptors will be executed in the same order as given in this parameter.translateNce
- iftrue
, theNoContentException
thrown by a selected message body reader will be translated into aBadRequestException
as required byinjectionManager
- injection manager.
-
-
Method Detail
-
proceed
public java.lang.Object proceed() throws java.io.IOException
Starts the interceptor chain execution.- Specified by:
proceed
in interfacejavax.ws.rs.ext.ReaderInterceptorContext
- Returns:
- an entity read from the stream.
- Throws:
java.io.IOException
-
getInputStream
public java.io.InputStream getInputStream()
- Specified by:
getInputStream
in interfacejavax.ws.rs.ext.ReaderInterceptorContext
-
setInputStream
public void setInputStream(java.io.InputStream is)
- Specified by:
setInputStream
in interfacejavax.ws.rs.ext.ReaderInterceptorContext
-
getHeaders
public javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> getHeaders()
- Specified by:
getHeaders
in interfacejavax.ws.rs.ext.ReaderInterceptorContext
-
getProcessedCount
int getProcessedCount()
Get number of processed interceptors.- Returns:
- number of processed interceptors.
-
getInjectionManager
public InjectionManager getInjectionManager()
Description copied from interface:InjectionManagerSupplier
Get injection manager.- Specified by:
getInjectionManager
in interfaceInjectionManagerSupplier
- Returns:
- injection manager.
-
closeableInputStream
public static java.io.InputStream closeableInputStream(java.io.InputStream inputStream)
Make theInputStream
able to close. The purpose of this utility method is to undo effect ofReaderInterceptorExecutor.UnCloseableInputStream
.- Parameters:
inputStream
- PotentialReaderInterceptorExecutor.UnCloseableInputStream
to undo its effect- Returns:
- Input stream that is possible to close
-
-