Revision b8404854
Added by Andreas Müller about 3 years ago
cdmlib-cache/src/main/java/eu/etaxonomy/cdm/cache/CacheLoader.java | ||
---|---|---|
249 | 249 |
|
250 | 250 |
if(cachedCdmEntity != null) { |
251 | 251 |
// if cdm entity was found in cache then |
252 |
if (logger.isDebugEnabled()){logger.debug(" - object of type " + cdmEntity.getClass().getSimpleName() + " with id " + cdmEntity.getId() + " already exists");}
|
|
252 |
if (logger.isDebugEnabled()){logger.debug(" - object " + cdmEntity.getClass().getSimpleName() + "[" + cdmEntity.getId() + "|" + cdmEntity.getUuid() + "] already exists. ("+ System.identityHashCode(cdmEntity) +") already exists");}
|
|
253 | 253 |
// .. return if the cached and input objects are identical, else (this is a newly loaded object so) continue |
254 | 254 |
if(cachedCdmEntity == cdmEntity) { |
255 | 255 |
return cachedCdmEntity; |
... | ... | |
258 | 258 |
|
259 | 259 |
T loadedCdmBase; |
260 | 260 |
if(isRecursiveEnabled && recursive) { |
261 |
if (logger.isDebugEnabled()){logger.debug("---- starting recursive load for cdm entity " + cdmEntity.getClass().getSimpleName() + " with id " + cdmEntity.getId());} |
|
261 |
if (logger.isDebugEnabled()){logger.debug("---- starting recursive load for cdm entity " + cdmEntity.getClass().getSimpleName() + " with id " + cdmEntity.getId() + "("+ System.identityHashCode(cdmEntity) +")");}
|
|
262 | 262 |
List<Object> alreadyVisitedEntities = new ArrayList<>(); |
263 | 263 |
T cb = loadRecursive(cdmEntity, alreadyVisitedEntities, update); |
264 | 264 |
alreadyVisitedEntities.clear(); |
265 |
if (logger.isDebugEnabled()){logger.debug("---- ending recursive load for cdm entity " + cdmEntity.getClass().getSimpleName() + " with id " + cdmEntity.getId() + "\n");} |
|
265 |
if (logger.isDebugEnabled()){logger.debug("---- ending recursive load for cdm entity " + cdmEntity.getClass().getSimpleName() + " with id " + cdmEntity.getId() + "("+ System.identityHashCode(cdmEntity) +")\n");}
|
|
266 | 266 |
loadedCdmBase = cb; |
267 | 267 |
} else { |
268 | 268 |
loadedCdmBase = putToCache(cdmEntity); |
... | ... | |
270 | 270 |
return loadedCdmBase; |
271 | 271 |
|
272 | 272 |
// if(isRecursiveEnabled && recursive) { |
273 |
// if (logger.isDebugEnabled()){logger.debug("---- starting recursive load for cdm entity " + cdmEntity.getClass().getSimpleName() + " with id " + cdmEntity.getId());} |
|
273 |
// if (logger.isDebugEnabled()){logger.debug("---- starting recursive load for cdm entity " + cdmEntity.getClass().getSimpleName() + " with id " + cdmEntity.getId() + "("+ System.identityHashCode(cdmEntity) +")" );}
|
|
274 | 274 |
// List<Object> alreadyVisitedEntities = new ArrayList<>(); |
275 | 275 |
// loadedCdmBase = loadRecursive(cdmEntity, alreadyVisitedEntities, update); |
276 | 276 |
// alreadyVisitedEntities.clear(); |
277 |
// if (logger.isDebugEnabled()){logger.debug("---- ending recursive load for cdm entity " + cdmEntity.getClass().getSimpleName() + " with id " + cdmEntity.getId() + "\n");} |
|
277 |
// if (logger.isDebugEnabled()){logger.debug("---- ending recursive load for cdm entity " + cdmEntity.getClass().getSimpleName() + " with id " + cdmEntity.getId() + "("+ System.identityHashCode(cdmEntity) +")" + "\n");}
|
|
278 | 278 |
// } else if (update){ |
279 |
// if (logger.isDebugEnabled()){logger.debug("---- update cdm entity " + cdmEntity.getClass().getSimpleName() + " with id " + cdmEntity.getId());} |
|
279 |
// if (logger.isDebugEnabled()){logger.debug("---- update cdm entity " + cdmEntity.getClass().getSimpleName() + " with id " + cdmEntity.getId() + "("+ System.identityHashCode(cdmEntity) +")" );}
|
|
280 | 280 |
// loadedCdmBase = loadRecursive(cdmEntity, null, update); |
281 |
// if (logger.isDebugEnabled()){logger.debug("---- ending update for cdm entity " + cdmEntity.getClass().getSimpleName() + " with id " + cdmEntity.getId() + "\n");}
|
|
281 |
// if (logger.isDebugEnabled()){logger.debug("---- ending update for cdm entity " + cdmEntity.getClass().getSimpleName() + " with id " + cdmEntity.getId() + + "("+ System.identityHashCode(cdmEntity) +")\n");}
|
|
282 | 282 |
// } else { |
283 | 283 |
// loadedCdmBase = putToCache(cdmEntity); |
284 | 284 |
// } |
... | ... | |
290 | 290 |
* Puts the entity to the cache if it does not yet exist and returns the cached entity. |
291 | 291 |
*/ |
292 | 292 |
protected <T extends CdmBase> T putToCache(T cdmEntity) { |
293 |
if (logger.isDebugEnabled()){logger.debug("put object of type " + cdmEntity.getClass().getSimpleName() + " with id " + cdmEntity.getId() + " to cache ");} |
|
293 |
if (logger.isDebugEnabled()){logger.debug("put object of type " + cdmEntity.getClass().getSimpleName() + " with id " + cdmEntity.getId() + "("+ System.identityHashCode(cdmEntity) +") to cache ");}
|
|
294 | 294 |
cdmCacher.putToCache(ProxyUtils.deproxyIfInitialized(cdmEntity)); |
295 | 295 |
return cdmCacher.getFromCache(cdmEntity); |
296 | 296 |
} |
... | ... | |
316 | 316 |
*/ |
317 | 317 |
private <T extends CdmBase> T loadRecursive(T cdmEntity, List<Object> alreadyVisitedEntities, boolean update) { |
318 | 318 |
if (cdmCacher.ignoreRecursiveLoad(cdmEntity)){ |
319 |
if (logger.isDebugEnabled()){logger.debug("recursive load for " + cdmEntity.getClass() + "#" + cdmEntity.getId() + " which is usually ignored by the cache");}
|
|
319 |
if (logger.isDebugEnabled()){logger.debug("recursive load for " + cdmEntity.getClass() + "#" + cdmEntity.getId()+ "("+ System.identityHashCode(cdmEntity) +") which is usually ignored by the cache");}
|
|
320 | 320 |
} |
321 | 321 |
T cachedCdmEntity = putToCache(cdmEntity); |
322 | 322 |
|
... | ... | |
326 | 326 |
// start by getting the fields from the cdm entity |
327 | 327 |
T deproxiedEntity = ProxyUtils.deproxyOrNull(cdmEntity); |
328 | 328 |
if(deproxiedEntity == null){ |
329 |
if (logger.isDebugEnabled()){logger.debug("ignoring uninitlialized proxy " + cdmEntity.getClass() + "#" + cdmEntity.getId());} |
|
329 |
if (logger.isDebugEnabled()){logger.debug("ignoring uninitlialized proxy " + cdmEntity.getClass() + "#" + cdmEntity.getId()+ "("+ System.identityHashCode(cdmEntity) +")" );}
|
|
330 | 330 |
}else{ |
331 | 331 |
String className = deproxiedEntity.getClass().getName(); |
332 | 332 |
CdmModelFieldPropertyFromClass classFields = getFromCdmlibModelCache(className); |
... | ... | |
362 | 362 |
CdmBase cdmEntityInSubGraph = (CdmBase)fieldValue; |
363 | 363 |
if(!entityAlreadyVisisted(alreadyVisitedEntities, cdmEntityInSubGraph) ) { |
364 | 364 |
if(cdmCacher.ignoreRecursiveLoad(cdmEntityInSubGraph)){ |
365 |
if (logger.isDebugEnabled()){logger.debug("recursive load of type " + cdmEntityInSubGraph.getClass().getSimpleName() + " with id " + cdmEntityInSubGraph.getId() + " ignored");} |
|
365 |
if (logger.isDebugEnabled()){logger.debug("recursive load of type " + cdmEntityInSubGraph.getClass().getSimpleName() + " with id " + cdmEntityInSubGraph.getId() + "("+ System.identityHashCode(cdmEntityInSubGraph) +") ignored");}
|
|
366 | 366 |
}else{ |
367 |
if (logger.isDebugEnabled()){logger.debug("recursive loading object of type " + cdmEntityInSubGraph.getClass().getSimpleName() + " with id " + cdmEntityInSubGraph.getId());} |
|
367 |
if (logger.isDebugEnabled()){logger.debug("recursive loading object of type " + cdmEntityInSubGraph.getClass().getSimpleName() + " with id " + cdmEntityInSubGraph.getId() + "("+ System.identityHashCode(cdmEntityInSubGraph) +")" );}
|
|
368 | 368 |
loadRecursive(cdmEntityInSubGraph, alreadyVisitedEntities, update); |
369 | 369 |
} |
370 | 370 |
} else { |
371 |
if (logger.isDebugEnabled()){logger.debug("object of type " + cdmEntityInSubGraph.getClass().getSimpleName() + " with id " + cdmEntityInSubGraph.getId() + " already visited");} |
|
371 |
if (logger.isDebugEnabled()){logger.debug("object of type " + cdmEntityInSubGraph.getClass().getSimpleName() + " with id " + cdmEntityInSubGraph.getId() + "("+ System.identityHashCode(cdmEntityInSubGraph) +") already visited");}
|
|
372 | 372 |
} |
373 | 373 |
// } else if (fieldValue != null){ |
374 | 374 |
// throw new IllegalArgumentException("Unhandled field value of type " + fieldValue.getClass().getName() + " for field " + field); |
... | ... | |
443 | 443 |
|
444 | 444 |
if(obj != null && !ProxyUtils.isUninitializedProxy(obj)) { |
445 | 445 |
if(CdmBase.class.isAssignableFrom(obj.getClass())) { |
446 |
if (logger.isDebugEnabled()){logger.debug("found initialised cdm entity '" + fieldName + "' in object of type " + clazz.getSimpleName() + " with id " + cdmEntity.getId());} |
|
446 |
if (logger.isDebugEnabled()){logger.debug("found initialised cdm entity '" + fieldName + "' in object of type " + clazz.getSimpleName() + " with id " + cdmEntity.getId() + "("+ System.identityHashCode(cdmEntity) +")" );}
|
|
447 | 447 |
|
448 | 448 |
cdmEntityInSubGraph = (CdmBase)obj; |
449 | 449 |
CdmBase cachedCdmEntityInSubGraph = cdmCacher.getFromCache(cdmEntityInSubGraph); |
... | ... | |
454 | 454 |
// the field has been already initialized, cached and |
455 | 455 |
// is not the same as the one in the cache, in which case we set the value |
456 | 456 |
// of the field to the one found in the cache |
457 |
if (logger.isDebugEnabled()){logger.debug("setting cached + real value to '" + fieldName + "' in object of type " + clazz.getSimpleName() + " with id " + cdmEntity.getId());} |
|
457 |
if (logger.isDebugEnabled()){logger.debug("setting cached + real value to '" + fieldName + "' in object of type " + clazz.getSimpleName() + " with id " + cdmEntity.getId() + "("+ System.identityHashCode(cdmEntity) +")" );}
|
|
458 | 458 |
field.set(cachedCdmEntity, cachedCdmEntityInSubGraph); |
459 | 459 |
field.set(cdmEntity, cachedCdmEntityInSubGraph); |
460 | 460 |
} else { |
Also available in: Unified diff
improve logging in CacheLoader