in src/main/java/org/apache/sling/installer/core/impl/PersistentResourceList.java [187:214]
public RegisteredResource addOrUpdate(final InternalResource input) {
// first check untransformed resource if there are resources with the same url and digest
for(final RegisteredResource rr : this.untransformedResources ) {
if ( rr.getURL().equals(input.getURL()) && ( rr.getDigest().equals(input.getDigest())) ) {
// if we found the resource we can return after updating
((RegisteredResourceImpl)rr).update(input);
return rr;
}
}
// installed resources are next
for(final EntityResourceList group : this.data.values()) {
for(final RegisteredResource rr : group.listResources()) {
if ( rr.getURL().equals(input.getURL()) && ( rr.getDigest().equals(input.getDigest()))) {
// if we found the resource we can return after updating
((RegisteredResourceImpl)rr).update(input);
return rr;
}
}
}
try {
final RegisteredResourceImpl registeredResource = RegisteredResourceImpl.create(input);
this.checkInstallable(registeredResource);
return registeredResource;
} catch (final IOException ioe) {
logger.warn("Ignoring resource. Error during processing of " + input.getURL(), ioe);
return null;
}
}