import adullact.publicrowdfunding.model.server.request.UpdateRequest;
/**
- * Created by Ferrand on 18/07/2014.
+ * @author Ferrand and Nelaupe
*/
public abstract class Resource<TResource extends Resource<TResource, TServerResource, TDetailedServerResource>, TServerResource, TDetailedServerResource extends TServerResource> {
/* ---- Cache manager ---- */
if (cachedType == null) {
cachedType = new HashMap<String, Cache>();
cachedResource.put(getClass().getSimpleName(), cachedType);
- m_cache = new Cache<TResource>((TResource) this);
+ m_cache = cacheInstance();
cachedType.put(id, m_cache);
}
else {
m_cache = cachedType.get(id);
if(m_cache == null) {
- m_cache = new Cache<TResource>((TResource) this);
+ m_cache = cacheInstance();
cachedType.put(id, m_cache);
}
}
return m_cache;
}
+
+ final public void overrideCache(Cache<TResource> cache) {
+ HashMap<String, Cache> cachedType = cachedResource.get(getClass().getSimpleName());
+ if (cachedType == null) {
+ cachedType = new HashMap<String, Cache>();
+ cachedResource.put(getClass().getSimpleName(), cachedType);
+ m_cache = cache;
+ cachedType.put(cache.getResourceId(), m_cache);
+ }
+ else {
+ m_cache = cache;
+ cachedType.put(cache.getResourceId(), m_cache);
+ }
+ }
+
+ protected Cache<TResource> cacheInstance() {
+ return new Cache<TResource>((TResource) this);
+ }
/* ----------------------- */
private boolean m_changed;