disable caching for repositories

This commit is contained in:
Sebastian Sdorra
2011-02-13 18:36:40 +01:00
parent b69b6cb9fd
commit 54e21c986a
2 changed files with 52 additions and 4 deletions

View File

@@ -237,7 +237,18 @@ public abstract class AbstractManagerResource<T extends ModelObject,
prepareForReturn(item); prepareForReturn(item);
return createResponse(request, item); Response response = null;
if (disableCache)
{
response = Response.ok(item).build();
}
else
{
response = createCacheResponse(request, item);
}
return response;
} }
/** /**
@@ -259,7 +270,18 @@ public abstract class AbstractManagerResource<T extends ModelObject,
prepareForReturn(manager.getAll()); prepareForReturn(manager.getAll());
} }
return createResponse(request, items); Response response = null;
if (disableCache)
{
response = Response.ok(items).build();
}
else
{
response = createCacheResponse(request, items);
}
return response;
} }
/** /**
@@ -273,6 +295,17 @@ public abstract class AbstractManagerResource<T extends ModelObject,
return cacheMaxAge; return cacheMaxAge;
} }
/**
* Method description
*
*
* @return
*/
public boolean isDisableCache()
{
return disableCache;
}
//~--- set methods ---------------------------------------------------------- //~--- set methods ----------------------------------------------------------
/** /**
@@ -286,6 +319,17 @@ public abstract class AbstractManagerResource<T extends ModelObject,
this.cacheMaxAge = cacheMaxAge; this.cacheMaxAge = cacheMaxAge;
} }
/**
* Method description
*
*
* @param disableCache
*/
public void setDisableCache(boolean disableCache)
{
this.disableCache = disableCache;
}
//~--- methods -------------------------------------------------------------- //~--- methods --------------------------------------------------------------
/** /**
@@ -361,7 +405,7 @@ public abstract class AbstractManagerResource<T extends ModelObject,
* *
* @return * @return
*/ */
private Response createResponse(Request request, T item) private Response createCacheResponse(Request request, T item)
{ {
Response.ResponseBuilder builder = null; Response.ResponseBuilder builder = null;
Date lastModified = getLastModified(item); Date lastModified = getLastModified(item);
@@ -395,7 +439,7 @@ public abstract class AbstractManagerResource<T extends ModelObject,
* *
* @return * @return
*/ */
private Response createResponse(Request request, Collection<T> items) private Response createCacheResponse(Request request, Collection<T> items)
{ {
Response.ResponseBuilder builder = null; Response.ResponseBuilder builder = null;
Date lastModified = getLastModified(manager); Date lastModified = getLastModified(manager);
@@ -443,6 +487,9 @@ public abstract class AbstractManagerResource<T extends ModelObject,
/** Field description */ /** Field description */
protected int cacheMaxAge = 1; protected int cacheMaxAge = 1;
/** Field description */
protected boolean disableCache = false;
/** Field description */ /** Field description */
protected Manager<T, E> manager; protected Manager<T, E> manager;
} }

View File

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