public abstract class InboundMessageContext
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
private static class |
InboundMessageContext.EntityContent
Input stream and its state.
|
Modifier and Type | Field and Description |
---|---|
private static java.io.InputStream |
EMPTY |
private static java.lang.annotation.Annotation[] |
EMPTY_ANNOTATIONS |
private InboundMessageContext.EntityContent |
entityContent |
private javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> |
headers |
private boolean |
translateNce |
private static java.util.List<AcceptableMediaType> |
WILDCARD_ACCEPTABLE_TYPE_SINGLETON_LIST |
private MessageBodyWorkers |
workers |
Constructor and Description |
---|
InboundMessageContext()
Create new inbound message context.
|
InboundMessageContext(boolean translateNce)
Create new inbound message context.
|
Modifier and Type | Method and Description |
---|---|
boolean |
bufferEntity()
Buffer the entity stream (if not empty).
|
void |
close()
Closes the underlying content stream.
|
private static HeaderValueException |
exception(java.lang.String headerName,
java.lang.Object headerValue,
java.lang.Exception e) |
java.util.Set<java.lang.String> |
getAllowedMethods()
Get the allowed HTTP methods from the Allow HTTP header.
|
java.util.Date |
getDate()
Get message date.
|
java.io.InputStream |
getEntityStream()
Get the entity input stream.
|
javax.ws.rs.core.EntityTag |
getEntityTag()
Get the entity tag.
|
javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> |
getHeaders()
Get the mutable message headers multivalued map.
|
java.lang.String |
getHeaderString(java.lang.String name)
Get a message header as a single string value.
|
java.util.Set<MatchingEntityTag> |
getIfMatch()
Get If-Match header.
|
java.util.Set<MatchingEntityTag> |
getIfNoneMatch()
Get If-None-Match header.
|
java.util.Locale |
getLanguage()
Get the language of the entity.
|
java.util.Date |
getLastModified()
Get the last modified date.
|
int |
getLength()
Get Content-Length value.
|
javax.ws.rs.core.Link |
getLink(java.lang.String relation)
Get the link for the relation.
|
javax.ws.rs.core.Link.Builder |
getLinkBuilder(java.lang.String relation)
Convenience method that returns a
Link.Builder
for the relation. |
java.util.Set<javax.ws.rs.core.Link> |
getLinks()
Get the links attached to the message as header.
|
java.net.URI |
getLocation()
Get the location.
|
javax.ws.rs.core.MediaType |
getMediaType()
Get the media type of the entity.
|
java.util.List<AcceptableLanguageTag> |
getQualifiedAcceptableLanguages()
Get a list of languages that are acceptable for the message.
|
java.util.List<AcceptableMediaType> |
getQualifiedAcceptableMediaTypes()
Get a list of media types that are acceptable for a request.
|
java.util.List<AcceptableToken> |
getQualifiedAcceptCharset()
Get the list of language tag from the "Accept-Charset" of an HTTP request.
|
java.util.List<AcceptableToken> |
getQualifiedAcceptEncoding()
Get the list of language tag from the "Accept-Charset" of an HTTP request.
|
protected abstract java.lang.Iterable<javax.ws.rs.ext.ReaderInterceptor> |
getReaderInterceptors()
Get reader interceptors bound to this context.
|
java.util.Map<java.lang.String,javax.ws.rs.core.Cookie> |
getRequestCookies()
Get any cookies that accompanied the request.
|
java.util.Map<java.lang.String,javax.ws.rs.core.NewCookie> |
getResponseCookies()
Get any new cookies set on the response message.
|
MessageBodyWorkers |
getWorkers()
Get context message body workers.
|
boolean |
hasEntity()
Check if there is a non-empty entity input stream is available in the
message.
|
boolean |
hasLink(java.lang.String relation)
Check if link for relation exists.
|
InboundMessageContext |
header(java.lang.String name,
java.lang.Object value)
Add a new header value.
|
InboundMessageContext |
headers(java.util.Map<java.lang.String,java.util.List<java.lang.String>> newHeaders)
Add new headers.
|
InboundMessageContext |
headers(javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> newHeaders)
Add new headers.
|
InboundMessageContext |
headers(java.lang.String name,
java.lang.Iterable<?> values)
Add new header values.
|
InboundMessageContext |
headers(java.lang.String name,
java.lang.Object... values)
Add new header values.
|
private static java.util.List<java.lang.String> |
iterableToList(java.lang.Iterable<?> values) |
<T> T |
readEntity(java.lang.Class<T> rawType,
java.lang.annotation.Annotation[] annotations,
PropertiesDelegate propertiesDelegate)
Read entity from a context entity input stream.
|
<T> T |
readEntity(java.lang.Class<T> rawType,
PropertiesDelegate propertiesDelegate)
Read entity from a context entity input stream.
|
<T> T |
readEntity(java.lang.Class<T> rawType,
java.lang.reflect.Type type,
java.lang.annotation.Annotation[] annotations,
PropertiesDelegate propertiesDelegate)
Read entity from a context entity input stream.
|
<T> T |
readEntity(java.lang.Class<T> rawType,
java.lang.reflect.Type type,
PropertiesDelegate propertiesDelegate)
Read entity from a context entity input stream.
|
InboundMessageContext |
remove(java.lang.String name)
Remove a header.
|
void |
setEntityStream(java.io.InputStream input)
Set a new entity input stream.
|
void |
setWorkers(MessageBodyWorkers workers)
Set context message body workers.
|
private <T> T |
singleHeader(java.lang.String name,
java.util.function.Function<java.lang.String,T> converter,
boolean convertNull)
Get a single typed header value.
|
private static final java.io.InputStream EMPTY
private static final java.lang.annotation.Annotation[] EMPTY_ANNOTATIONS
private static final java.util.List<AcceptableMediaType> WILDCARD_ACCEPTABLE_TYPE_SINGLETON_LIST
private final javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> headers
private final InboundMessageContext.EntityContent entityContent
private final boolean translateNce
private MessageBodyWorkers workers
public InboundMessageContext()
public InboundMessageContext(boolean translateNce)
translateNce
- if true
, the NoContentException
thrown by a
selected message body reader will be translated into a BadRequestException
as required by JAX-RS specification on the server side.public InboundMessageContext header(java.lang.String name, java.lang.Object value)
name
- header name.value
- header value.public InboundMessageContext headers(java.lang.String name, java.lang.Object... values)
name
- header name.values
- header values.public InboundMessageContext headers(java.lang.String name, java.lang.Iterable<?> values)
name
- header name.values
- header values.public InboundMessageContext headers(javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> newHeaders)
newHeaders
- new headers.public InboundMessageContext headers(java.util.Map<java.lang.String,java.util.List<java.lang.String>> newHeaders)
newHeaders
- new headers.public InboundMessageContext remove(java.lang.String name)
name
- header name.private static java.util.List<java.lang.String> iterableToList(java.lang.Iterable<?> values)
public java.lang.String getHeaderString(java.lang.String name)
RuntimeDelegate.HeaderDelegate
if one is available
via RuntimeDelegate.createHeaderDelegate(java.lang.Class)
for the header value class or using its toString
method if a header
delegate is not available.name
- the message header.null
is returned. If the message header is present but has no
value then the empty string is returned. If the message header is present
more than once then the values of joined together and separated by a ','
character.private <T> T singleHeader(java.lang.String name, java.util.function.Function<java.lang.String,T> converter, boolean convertNull)
name
- header name.converter
- from string conversion function. Is expected to throw ProcessingException
if conversion fails.convertNull
- if true
this method calls the provided converter even for null
. Otherwise this
method returns the null
without calling the converter.null
if not present.private static HeaderValueException exception(java.lang.String headerName, java.lang.Object headerValue, java.lang.Exception e)
public javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> getHeaders()
public java.util.Date getDate()
null
if not present.public java.util.Set<MatchingEntityTag> getIfMatch()
null
if not present.public java.util.Set<MatchingEntityTag> getIfNoneMatch()
null
if not present.public java.util.Locale getLanguage()
null
if not specified.public int getLength()
public javax.ws.rs.core.MediaType getMediaType()
null
if not specified (e.g. there's no
message entity).public java.util.List<AcceptableMediaType> getQualifiedAcceptableMediaTypes()
public java.util.List<AcceptableLanguageTag> getQualifiedAcceptableLanguages()
public java.util.List<AcceptableToken> getQualifiedAcceptCharset()
public java.util.List<AcceptableToken> getQualifiedAcceptEncoding()
public java.util.Map<java.lang.String,javax.ws.rs.core.Cookie> getRequestCookies()
Cookie
.public java.util.Set<java.lang.String> getAllowedMethods()
public java.util.Map<java.lang.String,javax.ws.rs.core.NewCookie> getResponseCookies()
new cookie
.public javax.ws.rs.core.EntityTag getEntityTag()
null
if not present.public java.util.Date getLastModified()
null
if not present.public java.net.URI getLocation()
null
if not present.public java.util.Set<javax.ws.rs.core.Link> getLinks()
Set
if no links are present. Never
returns null
.public boolean hasLink(java.lang.String relation)
relation
- link relation.true
if the for the relation link exists, false
otherwise.public javax.ws.rs.core.Link getLink(java.lang.String relation)
relation
- link relation.null
if not present.public javax.ws.rs.core.Link.Builder getLinkBuilder(java.lang.String relation)
Link.Builder
for the relation.relation
- link relation.null
if not
present.public MessageBodyWorkers getWorkers()
public void setWorkers(MessageBodyWorkers workers)
workers
- context message body workers.public boolean hasEntity()
true
if the entity is present, returns
false
otherwise.true
if there is an entity present in the message,
false
otherwise.public java.io.InputStream getEntityStream()
public void setEntityStream(java.io.InputStream input)
input
- new entity input stream.public <T> T readEntity(java.lang.Class<T> rawType, PropertiesDelegate propertiesDelegate)
T
- entity Java object type.rawType
- raw Java entity type.propertiesDelegate
- request-scoped properties delegate.public <T> T readEntity(java.lang.Class<T> rawType, java.lang.annotation.Annotation[] annotations, PropertiesDelegate propertiesDelegate)
T
- entity Java object type.rawType
- raw Java entity type.annotations
- entity annotations.propertiesDelegate
- request-scoped properties delegate.public <T> T readEntity(java.lang.Class<T> rawType, java.lang.reflect.Type type, PropertiesDelegate propertiesDelegate)
T
- entity Java object type.rawType
- raw Java entity type.type
- generic Java entity type.propertiesDelegate
- request-scoped properties delegate.public <T> T readEntity(java.lang.Class<T> rawType, java.lang.reflect.Type type, java.lang.annotation.Annotation[] annotations, PropertiesDelegate propertiesDelegate)
T
- entity Java object type.rawType
- raw Java entity type.type
- generic Java entity type.annotations
- entity annotations.propertiesDelegate
- request-scoped properties delegate.public boolean bufferEntity() throws javax.ws.rs.ProcessingException
true
if the entity input stream was successfully buffered.javax.ws.rs.ProcessingException
- in case of an IO error.public void close()
protected abstract java.lang.Iterable<javax.ws.rs.ext.ReaderInterceptor> getReaderInterceptors()
Interceptors will be used when one of the readEntity
methods is invoked.