Object factory,
boolean forcedLoad)
throws Exception {
Configuration config = (Configuration) parameters.get("config");
DeltaApplicableReferencesAdjustable result;
Object object;
parameters.put("type", "global");
Object global = this.getProfile(layoutKey, parameters, factory, forcedLoad, service)[0];
Object key = this.buildKey(service, parameters, layoutKey, true);
result = (DeltaApplicableReferencesAdjustable)this.loadProfile(key, parameters, factory);
// load role delta
parameters.put("type", "role");
try {
object = this.getProfile(layoutKey, parameters, factory, forcedLoad, service)[0];
if (object != null)
result.applyDelta(object);
} catch (Exception e) {
if (!isSourceNotFoundException(e))
throw e;
}
// load user delta
parameters.put("type", "user");
try {
key = this.buildKey(service, parameters, layoutKey, true);
object = this.loadProfile(key, parameters, factory);
if (object != null)
result.applyDelta(object);
} catch (Exception e) {
if (!isSourceNotFoundException(e))
throw e;
}
if (result == null)
throw new SourceNotFoundException("Global profile does not exist.");
// change references to objects where no delta has been applied
result.adjustReferences(global);
// FIXME
this.attributes.put(key, result);
return result;