Hello,
I am exploring the use of Etags and was a little bit confused, does the
evaluatePreconditions handle checking to see if the If-None-Match header
exists or is it down to resource to determine this. For example I have the
following piece of code:
@GET
@Path("competition/{comp}")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response getTable(@Context Request request, @PathParam("comp")
final String comp) throws WebApplicationException {
String result =
executeXQuery(String.format(FIND_TABLE_BY_COMP_XQUERY, comp),
CACHE_KEY_PREFIX+comp);
CacheControl cacheControl = new CacheControl();
cacheControl.setMaxAge(cacheControlMaxAge);
EntityTag etag = computeEntityTag(result);
Response.ResponseBuilder responseBuilder =
request.evaluatePreconditions(etag);
if (responseBuilder != null) {
LOG.debug("Table has not changed..returning unmodified
response code");
return responseBuilder.cacheControl(cacheControl).build();
}
return
Response.ok(result).cacheControl(cacheControl).tag(etag).build();
}
But it doesn¹t appear to take into account whether If-None-Match is in the
request header or not. I can¹t actually find the source for
evaluatePreconditions.
Thanks
Jon