improve client side caching

This commit is contained in:
Sebastian Sdorra
2011-02-15 17:04:03 +01:00
parent 5c4ab6b77d
commit 95d1d206fb
6 changed files with 259 additions and 48 deletions

View File

@@ -245,7 +245,7 @@ public abstract class AbstractManagerResource<T extends ModelObject,
}
else
{
response = createCacheResponse(request, item);
response = createCacheResponse(request, item, item);
}
return response;
@@ -267,7 +267,7 @@ public abstract class AbstractManagerResource<T extends ModelObject,
if (Util.isNotEmpty(items))
{
prepareForReturn(manager.getAll());
items = prepareForReturn(items);
}
Response response = null;
@@ -278,7 +278,7 @@ public abstract class AbstractManagerResource<T extends ModelObject,
}
else
{
response = createCacheResponse(request, items);
response = createCacheResponse(request, manager, items);
}
return response;
@@ -401,14 +401,17 @@ public abstract class AbstractManagerResource<T extends ModelObject,
*
*
* @param request
* @param timeItem
* @param item
* @param <I>
*
* @return
*/
private Response createCacheResponse(Request request, T item)
private <I> Response createCacheResponse(Request request,
LastModifiedAware timeItem, I item)
{
Response.ResponseBuilder builder = null;
Date lastModified = getLastModified(item);
Date lastModified = getLastModified(timeItem);
EntityTag e = new EntityTag(Integer.toString(item.hashCode()));
if (lastModified != null)
@@ -430,35 +433,6 @@ public abstract class AbstractManagerResource<T extends ModelObject,
return builder.build();
}
/**
* Method description
*
*
* @param request
* @param items
*
* @return
*/
private Response createCacheResponse(Request request, Collection<T> items)
{
Response.ResponseBuilder builder = null;
Date lastModified = getLastModified(manager);
if (lastModified != null)
{
builder = request.evaluatePreconditions(lastModified);
}
if (builder == null)
{
builder = Response.ok(items).lastModified(lastModified);
}
addCacheControl(builder);
return builder.build();
}
//~--- get methods ----------------------------------------------------------
/**
@@ -485,7 +459,7 @@ public abstract class AbstractManagerResource<T extends ModelObject,
//~--- fields ---------------------------------------------------------------
/** Field description */
protected int cacheMaxAge = 1;
protected int cacheMaxAge = 0;
/** Field description */
protected boolean disableCache = false;

View File

@@ -94,7 +94,7 @@ public class RepositoryResource
this.repositoryManager = repositoryManager;
this.securityContextProvider = securityContextProvider;
this.requestProvider = requestProvider;
setDisableCache(true);
setDisableCache(false);
}
//~--- methods --------------------------------------------------------------