SLING-7466 - adding update of existing resource to make sure datauri is clean
diff --git a/src/main/java/org/apache/sling/installer/core/impl/EntityResourceList.java b/src/main/java/org/apache/sling/installer/core/impl/EntityResourceList.java
index c61af04..e143af6 100644
--- a/src/main/java/org/apache/sling/installer/core/impl/EntityResourceList.java
+++ b/src/main/java/org/apache/sling/installer/core/impl/EntityResourceList.java
@@ -373,7 +373,20 @@
if ( rr.getURL().equals(r.getURL()) ) {
if ( RegisteredResourceImpl.isSameResource((RegisteredResourceImpl)rr, r) ) {
if ( !rr.getDigest().equals(r.getDigest()) ) {
- // same resource but different digest, we need to remove the file
+ // same resource but different digest, we need to to update the file
+ LOGGER.debug("Updating resource with due to different digest: {}", r);
+ try {
+ InternalResource intRes = InternalResource.create(r.getScheme(),
+ new InstallableResource(r.getEntityId(),
+ r.getInputStream(),
+ r.getDictionary(),
+ r.getDigest(),
+ r.getType(),
+ r.getPriority()));
+ ((RegisteredResourceImpl)rr).update(intRes);
+ } catch (IOException e) {
+ LOGGER.error("Failed to update resource with different digest: {}", r);
+ }
LOGGER.debug("Cleanup duplicate resource: {}", r);
this.cleanup(r);
}