com.sun.jersey.api
Class JResponse<E>

java.lang.Object
  extended by com.sun.jersey.api.JResponse<E>
Type Parameters:
E - The entity type

public class JResponse<E>
extends java.lang.Object

Defines the contract between a returned instance and the runtime when an application needs to provide metadata to the runtime.

JResponse is a type safe alternative to Response that preserves the type information of response entity thus it is not necessary to utilize GenericEntity. It provides equivalent functonality to Response.

JResponse may be extended in combination with JResponse.AJResponseBuilder specialization when building responses.

Several methods have parameters of type URI, UriBuilder provides convenient methods to create such values as does URI.create().

Author:
[email protected]
See Also:
JResponse.JResponseBuilder, Response

Nested Class Summary
static class JResponse.AJResponseBuilder<E,B extends JResponse.AJResponseBuilder>
          An abstract response builder that may be utilized to extend response building and the construction of JResponse instances.
static class JResponse.JResponseBuilder<E>
          A class used to build JResponse instances that contain metadata instead of or in addition to an entity.
 
Constructor Summary
  JResponse(int status, OutBoundHeaders headers, E entity)
          Construct given a status, entity and metadata.
protected JResponse(JResponse.AJResponseBuilder<E,?> b)
          Construct from a JResponse.AJResponseBuilder.
  JResponse(JResponse<E> that)
          Construct a shallow copy.
  JResponse(Response.StatusType statusType, OutBoundHeaders headers, E entity)
          Construct given a status type, entity and metadata.
 
Method Summary
static
<E> JResponse.JResponseBuilder<E>
created(java.net.URI location)
          Create a new JResponse.JResponseBuilder for a created resource, set the location header using the supplied value.
static
<E> JResponse.JResponseBuilder<E>
fromResponse(JResponse<E> response)
          Create a new JResponse.JResponseBuilder by performing a shallow copy of an existing JResponse.
static
<E> JResponse.JResponseBuilder<E>
fromResponse(Response response)
          Create a new JResponse.JResponseBuilder by performing a shallow copy of an existing Response.
 E getEntity()
          Get the response entity.
 OutBoundHeaders getMetadata()
          Get metadata associated with the response as a map.
 int getStatus()
          Get the status code associated with the response.
 Response.StatusType getStatusType()
          Get the status type associated with the response.
 java.lang.reflect.Type getType()
          Get the type of the entity.
static
<E> JResponse.JResponseBuilder<E>
noContent()
          Create a new JResponse.JResponseBuilder for an empty response.
static
<E> JResponse.JResponseBuilder<E>
notAcceptable(java.util.List<Variant> variants)
          Create a new JResponse.JResponseBuilder for a not acceptable response.
static
<E> JResponse.JResponseBuilder<E>
notModified()
          Create a new JResponse.JResponseBuilder with a not-modified status.
static
<E> JResponse.JResponseBuilder<E>
notModified(EntityTag tag)
          Create a new JResponse.JResponseBuilder with a not-modified status.
static
<E> JResponse.JResponseBuilder<E>
notModified(java.lang.String tag)
          Create a new JResponse.JResponseBuilder with a not-modified status and a strong entity tag.
static
<E> JResponse.JResponseBuilder<E>
ok()
          Create a new JResponse.JResponseBuilder with an OK status.
static
<E> JResponse.JResponseBuilder<E>
ok(E entity)
          Create a new JResponse.JResponseBuilder that contains a representation.
static
<E> JResponse.JResponseBuilder<E>
ok(E entity, MediaType type)
          Create a new JResponse.JResponseBuilder that contains a representation.
static
<E> JResponse.JResponseBuilder<E>
ok(E entity, java.lang.String type)
          Create a new JResponse.JResponseBuilder that contains a representation.
static
<E> JResponse.JResponseBuilder<E>
ok(E entity, Variant variant)
          Create a new JResponse.JResponseBuilder that contains a representation.
static
<E> JResponse.JResponseBuilder<E>
seeOther(java.net.URI location)
          Create a new JResponse.JResponseBuilder for a redirection.
static
<E> JResponse.JResponseBuilder<E>
serverError()
          Create a new JResponse.JResponseBuilder with an server error status.
static
<E> JResponse.JResponseBuilder<E>
status(int status)
          Create a new JResponse.JResponseBuilder with the supplied status.
static
<E> JResponse.JResponseBuilder<E>
status(Response.Status status)
          Create a new JResponse.JResponseBuilder with the supplied status.
static
<E> JResponse.JResponseBuilder<E>
status(Response.StatusType status)
          Create a new JResponse.JResponseBuilder with the supplied status.
static
<E> JResponse.JResponseBuilder<E>
temporaryRedirect(java.net.URI location)
          Create a new JResponse.JResponseBuilder for a temporary redirection.
 JResponseAsResponse toResponse()
          Convert to a Response compatible instance.
 JResponseAsResponse toResponse(java.lang.reflect.Type type)
          Convert to a Response compatible instance.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JResponse

public JResponse(Response.StatusType statusType,
                 OutBoundHeaders headers,
                 E entity)
Construct given a status type, entity and metadata.

Parameters:
statusType - the status type
headers - the metadata, it is the callers responsibility to copy the metadata if necessary.
entity - the entity

JResponse

public JResponse(int status,
                 OutBoundHeaders headers,
                 E entity)
Construct given a status, entity and metadata.

Parameters:
status - the status
headers - the metadata, it is the callers responsibility to copy the metadata if necessary.
entity - the entity

JResponse

public JResponse(JResponse<E> that)
Construct a shallow copy. The metadata map will be copied but not the key/value references.

Parameters:
that - the JResponse to copy from.

JResponse

protected JResponse(JResponse.AJResponseBuilder<E,?> b)
Construct from a JResponse.AJResponseBuilder.

Parameters:
b - the builder.
Method Detail

toResponse

public JResponseAsResponse toResponse()
Convert to a Response compatible instance.

Returns:
the Response compatible instance.

toResponse

public JResponseAsResponse toResponse(java.lang.reflect.Type type)
Convert to a Response compatible instance.

Parameters:
type - the entity type
Returns:
the Response compatible instance.

getStatusType

public Response.StatusType getStatusType()
Get the status type associated with the response.

Returns:
the response status type.

getStatus

public int getStatus()
Get the status code associated with the response.

Returns:
the response status code.

getMetadata

public OutBoundHeaders getMetadata()
Get metadata associated with the response as a map. The returned map may be subsequently modified by the JAX-RS runtime. Values will be serialized using a RuntimeDelegate.HeaderDelegate if one is available via RuntimeDelegate.createHeaderDelegate(java.lang.Class) for the class of the value or using the values toString method if a header delegate is not available.

Returns:
response metadata as a map

getEntity

public E getEntity()
Get the response entity. The response will be serialized using a MessageBodyWriter for the class and type the entity E.

Returns:
the response entity.
See Also:
MessageBodyWriter

getType

public java.lang.reflect.Type getType()
Get the type of the entity.

Returns:
the type of the entity.

fromResponse

public static <E> JResponse.JResponseBuilder<E> fromResponse(Response response)
Create a new JResponse.JResponseBuilder by performing a shallow copy of an existing Response. The returned builder has its own metadata map but entries are simply references to the keys and values contained in the supplied Response metadata map.

Type Parameters:
E - The entity type
Parameters:
response - a Response from which the status code, entity and metadata will be copied
Returns:
a new JResponseBuilder

fromResponse

public static <E> JResponse.JResponseBuilder<E> fromResponse(JResponse<E> response)
Create a new JResponse.JResponseBuilder by performing a shallow copy of an existing JResponse. The returned builder has its own metadata map but entries are simply references to the keys and values contained in the supplied Response metadata map.

Type Parameters:
E - The entity type
Parameters:
response - a JResponse from which the status code, entity and metadata will be copied
Returns:
a new JResponseBuilder

status

public static <E> JResponse.JResponseBuilder<E> status(Response.StatusType status)
Create a new JResponse.JResponseBuilder with the supplied status.

Type Parameters:
E - The entity type
Parameters:
status - the response status
Returns:
a new JResponseBuilder
Throws:
java.lang.IllegalArgumentException - if status is null

status

public static <E> JResponse.JResponseBuilder<E> status(Response.Status status)
Create a new JResponse.JResponseBuilder with the supplied status.

Type Parameters:
E - The entity type
Parameters:
status - the response status
Returns:
a new JResponseBuilder
Throws:
java.lang.IllegalArgumentException - if status is null

status

public static <E> JResponse.JResponseBuilder<E> status(int status)
Create a new JResponse.JResponseBuilder with the supplied status.

Type Parameters:
E - The entity type
Parameters:
status - the response status
Returns:
a new JResponseBuilder
Throws:
java.lang.IllegalArgumentException - if status is less than 100 or greater than 599.

ok

public static <E> JResponse.JResponseBuilder<E> ok()
Create a new JResponse.JResponseBuilder with an OK status.

Type Parameters:
E - The entity type
Returns:
a new JResponseBuilder

ok

public static <E> JResponse.JResponseBuilder<E> ok(E entity)
Create a new JResponse.JResponseBuilder that contains a representation.

Type Parameters:
E - The entity type
Parameters:
entity - the representation entity data
Returns:
a new JResponseBuilder

ok

public static <E> JResponse.JResponseBuilder<E> ok(E entity,
                                                   MediaType type)
Create a new JResponse.JResponseBuilder that contains a representation.

Type Parameters:
E - The entity type
Parameters:
entity - the representation entity data
type - the media type of the entity
Returns:
a new JResponseBuilder

ok

public static <E> JResponse.JResponseBuilder<E> ok(E entity,
                                                   java.lang.String type)
Create a new JResponse.JResponseBuilder that contains a representation.

Type Parameters:
E - The entity type
Parameters:
entity - the representation entity data
type - the media type of the entity
Returns:
a new JResponseBuilder

ok

public static <E> JResponse.JResponseBuilder<E> ok(E entity,
                                                   Variant variant)
Create a new JResponse.JResponseBuilder that contains a representation.

Type Parameters:
E - The entity type
Parameters:
entity - the representation entity data
variant - representation metadata
Returns:
a new JResponseBuilder

serverError

public static <E> JResponse.JResponseBuilder<E> serverError()
Create a new JResponse.JResponseBuilder with an server error status.

Type Parameters:
E - The entity type
Returns:
a new JResponseBuilder

created

public static <E> JResponse.JResponseBuilder<E> created(java.net.URI location)
Create a new JResponse.JResponseBuilder for a created resource, set the location header using the supplied value.

Type Parameters:
E - The entity type
Parameters:
location - the URI of the new resource. If a relative URI is supplied it will be converted into an absolute URI by resolving it relative to the request URI (see UriInfo#getRequestUri).
Returns:
a new JResponseBuilder
Throws:
java.lang.IllegalArgumentException - if location is null

noContent

public static <E> JResponse.JResponseBuilder<E> noContent()
Create a new JResponse.JResponseBuilder for an empty response.

Type Parameters:
E - The entity type
Returns:
a new JResponseBuilder

notModified

public static <E> JResponse.JResponseBuilder<E> notModified()
Create a new JResponse.JResponseBuilder with a not-modified status.

Type Parameters:
E - The entity type
Returns:
a new JResponseBuilder

notModified

public static <E> JResponse.JResponseBuilder<E> notModified(EntityTag tag)
Create a new JResponse.JResponseBuilder with a not-modified status.

Type Parameters:
E - The entity type
Parameters:
tag - a tag for the unmodified entity
Returns:
a new JResponseBuilder
Throws:
java.lang.IllegalArgumentException - if tag is null

notModified

public static <E> JResponse.JResponseBuilder<E> notModified(java.lang.String tag)
Create a new JResponse.JResponseBuilder with a not-modified status and a strong entity tag. This is a shortcut for notModified(new EntityTag(value)).

Type Parameters:
E - The entity type
Parameters:
tag - the string content of a strong entity tag. The JAX-RS runtime will quote the supplied value when creating the header.
Returns:
a new JResponseBuilder
Throws:
java.lang.IllegalArgumentException - if tag is null

seeOther

public static <E> JResponse.JResponseBuilder<E> seeOther(java.net.URI location)
Create a new JResponse.JResponseBuilder for a redirection. Used in the redirect-after-POST (aka POST/redirect/GET) pattern.

Type Parameters:
E - The entity type
Parameters:
location - the redirection URI. If a relative URI is supplied it will be converted into an absolute URI by resolving it relative to the base URI of the application (see UriInfo#getBaseUri).
Returns:
a new JResponseBuilder
Throws:
java.lang.IllegalArgumentException - if location is null

temporaryRedirect

public static <E> JResponse.JResponseBuilder<E> temporaryRedirect(java.net.URI location)
Create a new JResponse.JResponseBuilder for a temporary redirection.

Type Parameters:
E - The entity type
Parameters:
location - the redirection URI. If a relative URI is supplied it will be converted into an absolute URI by resolving it relative to the base URI of the application (see UriInfo#getBaseUri).
Returns:
a new JResponseBuilder
Throws:
java.lang.IllegalArgumentException - if location is null

notAcceptable

public static <E> JResponse.JResponseBuilder<E> notAcceptable(java.util.List<Variant> variants)
Create a new JResponse.JResponseBuilder for a not acceptable response.

Type Parameters:
E - The entity type
Parameters:
variants - list of variants that were available, a null value is equivalent to an empty list.
Returns:
a new JResponseBuilder


Copyright © 2011 Oracle Corporation. All Rights Reserved.