You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2012/01/25 09:49:11 UTC

svn commit: r1235690 - /sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/EntityResourceList.java

Author: cziegeler
Date: Wed Jan 25 08:49:11 2012
New Revision: 1235690

URL: http://svn.apache.org/viewvc?rev=1235690&view=rev
Log:
SLING-2381 : Update detection might delete copied artifact

Modified:
    sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/EntityResourceList.java

Modified: sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/EntityResourceList.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/EntityResourceList.java?rev=1235690&r1=1235689&r2=1235690&view=diff
==============================================================================
--- sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/EntityResourceList.java (original)
+++ sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/EntityResourceList.java Wed Jan 25 08:49:11 2012
@@ -271,31 +271,31 @@ public class EntityResourceList implemen
         // If an object with same url is already present, replace with the
         // new one which might have different attributes
         boolean first = true;
+        boolean add = true;
         final Iterator<TaskResource> taskIter = this.resources.iterator();
         while ( taskIter.hasNext() ) {
             final TaskResource rr = taskIter.next();
             if ( rr.getURL().equals(r.getURL()) ) {
-                boolean removeAndCleanup = true;
-                if ( first ) {
-                    if ( RegisteredResourceImpl.isSameResource((RegisteredResourceImpl)rr, (RegisteredResourceImpl)r) ) {
-                        // same resource, just replace
-                        ((RegisteredResourceImpl)r).setState(rr.getState());
-                    } else if (rr.getState() == ResourceState.INSTALLED) {
+                if ( RegisteredResourceImpl.isSameResource((RegisteredResourceImpl)rr, (RegisteredResourceImpl)r) ) {
+                    // same resource, just ignore the new one
+                    add = false;
+                } else {
+                    if ( first && rr.getState() == ResourceState.INSTALLED) {
                         // it's not the same, but the first one is installed, so uninstall
                         ((RegisteredResourceImpl)rr).setState(ResourceState.UNINSTALL);
-                        removeAndCleanup = false;
+                    } else {
+                        LOGGER.debug("Cleanup obsolete resource: {}", rr);
+                        taskIter.remove();
+                        this.cleanup(rr);
                     }
                 }
-                if ( removeAndCleanup ) {
-                    LOGGER.debug("Cleanup obsolete resource: {}", rr);
-                    taskIter.remove();
-                    this.cleanup(rr);
-                }
                 break;
             }
             first = false;
         }
-        resources.add(r);
+        if ( add ) {
+            resources.add(r);
+        }
     }
 
     public void remove(final String url) {