Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master' into feature/auth-caching
Browse files Browse the repository at this point in the history
# Conflicts:
#	repo/repo-cache/src/main/java/com/evolveum/midpoint/repo/cache/RepositoryCache.java
  • Loading branch information
1azyman committed Apr 12, 2018
1 parent 4e98eff commit 61c1339
Showing 1 changed file with 22 additions and 20 deletions.
Expand Up @@ -179,16 +179,15 @@ public static String debugDump() {
public <T extends ObjectType> PrismObject<T> getObject(Class<T> type, String oid,
Collection<SelectorOptions<GetOperationOptions>> options, OperationResult parentResult) throws ObjectNotFoundException, SchemaException {

boolean readOnly = GetOperationOptions.isReadOnly(SelectorOptions.findRootOptions(options));

if (!isCacheable(type) || !nullOrHarmlessOptions(options)) {
// local cache not interested in caching this object
log("Cache: PASS {} ({})", oid, type.getSimpleName());

PrismObject<T> object = getObjectTryGlobalCache(type, oid, options, parentResult);
return cloneIfNecessary(object, readOnly);
return getObjectTryGlobalCache(type, oid, options, parentResult);
}

boolean readOnly = GetOperationOptions.isReadOnly(SelectorOptions.findRootOptions(options));

Cache cache = getCache();
if (cache == null) {
log("Cache: NULL {} ({})", oid, type.getSimpleName());
Expand All @@ -203,8 +202,7 @@ public <T extends ObjectType> PrismObject<T> getObject(Class<T> type, String oid

PrismObject<T> object = getObjectTryGlobalCache(type, oid, options, parentResult);
cacheObject(cache, object, readOnly);

return cloneIfNecessary(object, readOnly);
return object;
}

private <T extends ObjectType> PrismObject<T> cloneIfNecessary(PrismObject<T> object, boolean readOnly) {
Expand All @@ -225,25 +223,29 @@ private <T extends ObjectType> PrismObject<T> getObjectTryGlobalCache(Class<T> t
org.ehcache.Cache<String, CacheObject<T>> gCache = getGlobalCache(type);
CacheObject cacheObject = gCache != null ? gCache.get(oid) : null;

PrismObject<T> object;
if (cacheObject == null) {
// reload object
return reloadObjectInGlobalCache(type, oid, options, parentResult, gCache);
}

if (!shouldCheckVersion(cacheObject, options)) {
log("Cache: Global HIT {} ({})", oid, type.getSimpleName());
return cacheObject.getObject();
}
object = reloadObjectInGlobalCache(type, oid, options, parentResult, gCache);
} else {
if (!shouldCheckVersion(cacheObject, options)) {
log("Cache: Global HIT {} ({})", oid, type.getSimpleName());
object = cacheObject.getObject();
} else {
if (hasVersionChanged(cacheObject, parentResult)) {
object = reloadObjectInGlobalCache(type, oid, options, parentResult, gCache);
} else {
// version matches, just update last version check
cacheObject.setLastVersionCheck(System.currentTimeMillis());

if (hasVersionChanged(cacheObject, parentResult)) {
return reloadObjectInGlobalCache(type, oid, options, parentResult, gCache);
log("Cache: Global HIT, version check {} ({})", oid, type.getSimpleName());
object = cacheObject.getObject();
}
}
}

// version matches, just update last version check
cacheObject.setLastVersionCheck(System.currentTimeMillis());
boolean readOnly = GetOperationOptions.isReadOnly(SelectorOptions.findRootOptions(options));

log("Cache: Global HIT, version check {} ({})", oid, type.getSimpleName());
return cacheObject.getObject();
return cloneIfNecessary(object, readOnly);
}

private <T extends ObjectType> PrismObject<T> getObjectInternal(Class<T> type, String oid, Collection<SelectorOptions<GetOperationOptions>> options,
Expand Down

0 comments on commit 61c1339

Please sign in to comment.