Class OutboundMessageContext
- java.lang.Object
-
- org.glassfish.jersey.message.internal.OutboundMessageContext
-
- Direct Known Subclasses:
ClientRequest
public class OutboundMessageContext extends java.lang.ObjectBase outbound message context implementation.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceOutboundMessageContext.StreamProviderThe callback interface which is used to get the terminal output stream into which the entity should be written and to inform the implementation about the entity size.
-
Field Summary
Fields Modifier and Type Field Description private CommittingOutputStreamcommittingOutputStreamprivate static java.lang.annotation.Annotation[]EMPTY_ANNOTATIONSprivate java.lang.Objectentityprivate java.lang.annotation.Annotation[]entityAnnotationsprivate java.io.OutputStreamentityStreamprivate javax.ws.rs.core.GenericType<?>entityTypeprivate javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.Object>headersprivate static java.util.List<javax.ws.rs.core.MediaType>WILDCARD_ACCEPTABLE_TYPE_SINGLETON_LIST
-
Constructor Summary
Constructors Constructor Description OutboundMessageContext()Create new outbound message context.OutboundMessageContext(OutboundMessageContext original)Create new outbound message context copying the content of another context.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()Closes the context.voidcommitStream()Commits theentity streamif it wasn't already committed.voidenableBuffering(javax.ws.rs.core.Configuration configuration)Enable a buffering of serialized entity.private static HeaderValueExceptionexception(java.lang.String headerName, java.lang.Object headerValue, java.lang.Exception e)java.util.List<java.util.Locale>getAcceptableLanguages()Get a list of languages that are acceptable for the message.java.util.List<javax.ws.rs.core.MediaType>getAcceptableMediaTypes()Get a list of media types that are acceptable for the message.java.util.Set<java.lang.String>getAllowedMethods()Get the allowed HTTP methods from the Allow HTTP header.java.util.DategetDate()Get message date.java.lang.ObjectgetEntity()Get the message entity Java instance.java.lang.annotation.Annotation[]getEntityAnnotations()Get the annotations attached to the entity.java.lang.Class<?>getEntityClass()Get the raw message entity type information.java.io.OutputStreamgetEntityStream()Get the entity output stream.javax.ws.rs.core.EntityTaggetEntityTag()Get the entity tag.java.lang.reflect.TypegetEntityType()Get the message entity type information.javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.Object>getHeaders()Get the mutable message headers multivalued map.java.lang.StringgetHeaderString(java.lang.String name)Get a message header as a single string value.java.util.LocalegetLanguage()Get the language of the entity.java.util.DategetLastModified()Get the last modified date.intgetLength()Get Content-Length value.longgetLengthLong()Get Content-Length value.javax.ws.rs.core.LinkgetLink(java.lang.String relation)Get the link for the relation.javax.ws.rs.core.Link.BuildergetLinkBuilder(java.lang.String relation)Convenience method that returns aLink.Builderfor the relation.java.util.Set<javax.ws.rs.core.Link>getLinks()Get the links attached to the message as header.java.net.URIgetLocation()Get the location.javax.ws.rs.core.MediaTypegetMediaType()Get the media type of the entity.java.util.Map<java.lang.String,javax.ws.rs.core.Cookie>getRequestCookies()Get any cookies that accompanied the message.java.util.Map<java.lang.String,javax.ws.rs.core.NewCookie>getResponseCookies()Get any new cookies set on the message message.javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String>getStringHeaders()Get a multi-valued map representing outbound message headers with their values converted to strings.booleanhasEntity()Check if there is an entity available in the message.booleanhasLink(java.lang.String relation)Check if link for relation exists.booleanisCommitted()Returnstrueif the entity stream has been committed.voidreplaceHeaders(javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.Object> headers)Replace all headers.voidsetEntity(java.lang.Object entity)Set a new message message entity.voidsetEntity(java.lang.Object entity, java.lang.annotation.Annotation[] annotations)Set a new message message entity.voidsetEntity(java.lang.Object entity, java.lang.annotation.Annotation[] annotations, javax.ws.rs.core.MediaType mediaType)Set a new message message entity.voidsetEntity(java.lang.Object entity, java.lang.reflect.Type type, java.lang.annotation.Annotation[] annotations)Set a new message message entity.private voidsetEntity(java.lang.Object entity, javax.ws.rs.core.GenericType<?> type)Set a new message message entity.voidsetEntityAnnotations(java.lang.annotation.Annotation[] annotations)Set the annotations attached to the entity.voidsetEntityStream(java.io.OutputStream outputStream)Set a new entity output stream.voidsetEntityType(java.lang.reflect.Type type)Set the message entity type information.voidsetMediaType(javax.ws.rs.core.MediaType mediaType)Set the message content media type.voidsetStreamProvider(OutboundMessageContext.StreamProvider streamProvider)Set a stream provider callback.private <T> TsingleHeader(java.lang.String name, java.lang.Class<T> valueType, java.util.function.Function<java.lang.String,T> converter, boolean convertNull)Get a single typed header value.
-
-
-
Field Detail
-
EMPTY_ANNOTATIONS
private static final java.lang.annotation.Annotation[] EMPTY_ANNOTATIONS
-
WILDCARD_ACCEPTABLE_TYPE_SINGLETON_LIST
private static final java.util.List<javax.ws.rs.core.MediaType> WILDCARD_ACCEPTABLE_TYPE_SINGLETON_LIST
-
headers
private final javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.Object> headers
-
committingOutputStream
private final CommittingOutputStream committingOutputStream
-
entity
private java.lang.Object entity
-
entityType
private javax.ws.rs.core.GenericType<?> entityType
-
entityAnnotations
private java.lang.annotation.Annotation[] entityAnnotations
-
entityStream
private java.io.OutputStream entityStream
-
-
Constructor Detail
-
OutboundMessageContext
public OutboundMessageContext()
Create new outbound message context.
-
OutboundMessageContext
public OutboundMessageContext(OutboundMessageContext original)
Create new outbound message context copying the content of another context.- Parameters:
original- the original outbound message context.
-
-
Method Detail
-
replaceHeaders
public void replaceHeaders(javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.Object> headers)
Replace all headers.- Parameters:
headers- new headers.
-
getStringHeaders
public javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> getStringHeaders()
Get a multi-valued map representing outbound message headers with their values converted to strings.- Returns:
- multi-valued map of outbound message header names to their string-converted values.
-
getHeaderString
public java.lang.String getHeaderString(java.lang.String name)
Get a message header as a single string value.Each single header value is converted to String using a
RuntimeDelegate.HeaderDelegateif one is available viaRuntimeDelegate.createHeaderDelegate(java.lang.Class)for the header value class or using itstoStringmethod if a header delegate is not available.- Parameters:
name- the message header.- Returns:
- the message header value. If the message header is not present then
nullis 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.
-
singleHeader
private <T> T singleHeader(java.lang.String name, java.lang.Class<T> valueType, java.util.function.Function<java.lang.String,T> converter, boolean convertNull)Get a single typed header value.- Type Parameters:
T- header value type.- Parameters:
name- header name.valueType- header value class.converter- from string conversion function. Is expected to throwProcessingExceptionif conversion fails.convertNull- iftruethis method calls the provided converter even fornull. Otherwise this method returns thenullwithout calling the converter.- Returns:
- value of the header, or (possibly converted)
nullif not present.
-
exception
private static HeaderValueException exception(java.lang.String headerName, java.lang.Object headerValue, java.lang.Exception e)
-
getHeaders
public javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.Object> getHeaders()
Get the mutable message headers multivalued map.- Returns:
- mutable multivalued map of message headers.
-
getDate
public java.util.Date getDate()
Get message date.- Returns:
- the message date, otherwise
nullif not present.
-
getLanguage
public java.util.Locale getLanguage()
Get the language of the entity.- Returns:
- the language of the entity or
nullif not specified
-
getMediaType
public javax.ws.rs.core.MediaType getMediaType()
Get the media type of the entity.- Returns:
- the media type or
nullif not specified (e.g. there's no message entity).
-
getAcceptableMediaTypes
public java.util.List<javax.ws.rs.core.MediaType> getAcceptableMediaTypes()
Get a list of media types that are acceptable for the message.- Returns:
- a read-only list of requested message media types sorted according to their q-value, with highest preference first.
-
getAcceptableLanguages
public java.util.List<java.util.Locale> getAcceptableLanguages()
Get a list of languages that are acceptable for the message.- Returns:
- a read-only list of acceptable languages sorted according to their q-value, with highest preference first.
-
getRequestCookies
public java.util.Map<java.lang.String,javax.ws.rs.core.Cookie> getRequestCookies()
Get any cookies that accompanied the message.- Returns:
- a read-only map of cookie name (String) to
Cookie.
-
getAllowedMethods
public java.util.Set<java.lang.String> getAllowedMethods()
Get the allowed HTTP methods from the Allow HTTP header.- Returns:
- the allowed HTTP methods, all methods will returned as upper case strings.
-
getLength
public int getLength()
Get Content-Length value.Note:
getLengthLong()should be preferred over this method, since it returns alonginstead and is therefore more portable.- Returns:
- Content-Length as a postive integer if present and valid number,
-1if negative number. - Throws:
javax.ws.rs.ProcessingException- whenInteger.parseInt(String)(String)} throwsNumberFormatException.
-
getLengthLong
public long getLengthLong()
Get Content-Length value.- Returns:
- Content-Length as a positive long if present and valid number,
-1if negative number. - Throws:
javax.ws.rs.ProcessingException- whenLong.parseLong(String)throwsNumberFormatException.
-
getResponseCookies
public java.util.Map<java.lang.String,javax.ws.rs.core.NewCookie> getResponseCookies()
Get any new cookies set on the message message.- Returns:
- a read-only map of cookie name (String) to a
new cookie.
-
getEntityTag
public javax.ws.rs.core.EntityTag getEntityTag()
Get the entity tag.- Returns:
- the entity tag, otherwise
nullif not present.
-
getLastModified
public java.util.Date getLastModified()
Get the last modified date.- Returns:
- the last modified date, otherwise
nullif not present.
-
getLocation
public java.net.URI getLocation()
Get the location.- Returns:
- the location URI, otherwise
nullif not present.
-
getLinks
public java.util.Set<javax.ws.rs.core.Link> getLinks()
Get the links attached to the message as header.- Returns:
- links, may return empty
Setif no links are present. Never returnsnull.
-
hasLink
public boolean hasLink(java.lang.String relation)
Check if link for relation exists.- Parameters:
relation- link relation.- Returns:
trueif the for the relation link exists,falseotherwise.
-
getLink
public javax.ws.rs.core.Link getLink(java.lang.String relation)
Get the link for the relation.- Parameters:
relation- link relation.- Returns:
- the link for the relation, otherwise
nullif not present.
-
getLinkBuilder
public javax.ws.rs.core.Link.Builder getLinkBuilder(java.lang.String relation)
Convenience method that returns aLink.Builderfor the relation.- Parameters:
relation- link relation.- Returns:
- the link builder for the relation, otherwise
nullif not present.
-
hasEntity
public boolean hasEntity()
Check if there is an entity available in the message.The method returns
trueif the entity is present, returnsfalseotherwise.- Returns:
trueif there is an entity present in the message,falseotherwise.
-
getEntity
public java.lang.Object getEntity()
Get the message entity Java instance.Returns
nullif the message does not contain an entity.- Returns:
- the message entity or
nullif message does not contain an entity body.
-
setEntity
public void setEntity(java.lang.Object entity)
Set a new message message entity.- Parameters:
entity- entity object.- See Also:
MessageBodyWriter
-
setEntity
public void setEntity(java.lang.Object entity, java.lang.annotation.Annotation[] annotations)Set a new message message entity.- Parameters:
entity- entity object.annotations- annotations attached to the entity.- See Also:
MessageBodyWriter
-
setEntity
private void setEntity(java.lang.Object entity, javax.ws.rs.core.GenericType<?> type)Set a new message message entity.- Parameters:
entity- entity object.type- entity generic type information.- See Also:
MessageBodyWriter
-
setEntity
public void setEntity(java.lang.Object entity, java.lang.reflect.Type type, java.lang.annotation.Annotation[] annotations)Set a new message message entity.- Parameters:
entity- entity object.type- declared entity class.annotations- annotations attached to the entity.- See Also:
MessageBodyWriter
-
setEntity
public void setEntity(java.lang.Object entity, java.lang.annotation.Annotation[] annotations, javax.ws.rs.core.MediaType mediaType)Set a new message message entity.- Parameters:
entity- entity object.annotations- annotations attached to the entity.mediaType- entity media type.- See Also:
MessageBodyWriter
-
setMediaType
public void setMediaType(javax.ws.rs.core.MediaType mediaType)
Set the message content media type.- Parameters:
mediaType- message content media type.
-
getEntityClass
public java.lang.Class<?> getEntityClass()
Get the raw message entity type information.- Returns:
- raw message entity type information.
-
getEntityType
public java.lang.reflect.Type getEntityType()
Get the message entity type information.- Returns:
- message entity type.
-
setEntityType
public void setEntityType(java.lang.reflect.Type type)
Set the message entity type information.This method overrides any computed or previously set entity type information.
- Parameters:
type- overriding message entity type.
-
getEntityAnnotations
public java.lang.annotation.Annotation[] getEntityAnnotations()
Get the annotations attached to the entity.- Returns:
- entity annotations.
-
setEntityAnnotations
public void setEntityAnnotations(java.lang.annotation.Annotation[] annotations)
Set the annotations attached to the entity.- Parameters:
annotations- entity annotations.
-
getEntityStream
public java.io.OutputStream getEntityStream()
Get the entity output stream.- Returns:
- entity output stream.
-
setEntityStream
public void setEntityStream(java.io.OutputStream outputStream)
Set a new entity output stream.- Parameters:
outputStream- new entity output stream.
-
enableBuffering
public void enableBuffering(javax.ws.rs.core.Configuration configuration)
Enable a buffering of serialized entity. The buffering will be configured from configuration. The property determining the size of the buffer isCommonProperties.OUTBOUND_CONTENT_LENGTH_BUFFER. The buffering functionality is by default disabled and could be enabled by calling this method. In this case this method must be called before first bytes are written to theentity stream.- Parameters:
configuration- runtime configuration.
-
setStreamProvider
public void setStreamProvider(OutboundMessageContext.StreamProvider streamProvider)
Set a stream provider callback. This method must be called before first bytes are written to theentity stream.- Parameters:
streamProvider- non-nulloutput stream provider.
-
commitStream
public void commitStream() throws java.io.IOExceptionCommits theentity streamif it wasn't already committed.- Throws:
java.io.IOException- in case of the IO error.
-
isCommitted
public boolean isCommitted()
Returnstrueif the entity stream has been committed.- Returns:
trueif the entity stream has been committed. Otherwise returnsfalse.
-
close
public void close()
Closes the context. Flushes and closes the entity stream.
-
-