javax.ws.rs.core
Interface Request

An injectable helper for request processing, all methods throw
java.lang.IllegalStateException if called outside the scope of a request
(e.g. from a provider constructor).

Precondition processing (see the evaluatePreconditions methods)
can result in either a null return value to indicate that
preconditions have been met and that the request should continue, or
a non-null return value to indicate that preconditions were not met. In the
event that preconditions were not met, the returned ResponseBuilder
instance will have an appropriate status and will also include a Vary
header if the selectVariant(java.util.List) method was called prior to to calling
evaluatePreconditions. It is the responsibility of the caller
to check the status and add additional metadata if required. E.g., see
HTTP/1.1, section 10.3.5
for details of the headers that are expected to accompany a 304 Not Modified
response.

selectVariant

Select the representation variant that best matches the request. More
explicit variants are chosen ahead of less explicit ones. A vary header
is computed from the supplied list and automatically added to the
response.

Parameters:

variants - a list of Variant that describe all of the
available representation variants.

Returns:

the variant that best matches the request.

Throws:

java.lang.IllegalArgumentException - if variants is empty or null

java.lang.IllegalStateException - if called outside the scope of a request

evaluatePreconditions

null if the preconditions are met or a ResponseBuilder set with
the appropriate status if the preconditions are not met. A returned
ResponseBuilder will include an ETag header set with the value of eTag.

Throws:

java.lang.IllegalArgumentException - if eTag is null

java.lang.IllegalStateException - if called outside the scope of a request

evaluatePreconditions

lastModified - a date that specifies the modification date of the resource

eTag - an ETag for the current state of the resource

Returns:

null if the preconditions are met or a ResponseBuilder set with
the appropriate status if the preconditions are not met. A returned
ResponseBuilder will include an ETag header set with the value of eTag.

Throws:

java.lang.IllegalArgumentException - if lastModified or eTag is null

java.lang.IllegalStateException - if called outside the scope of a request