Author: cziegeler
Date: Fri Jan 29 07:59:14 2016
New Revision: 1727494

URL: http://svn.apache.org/viewvc?rev=1727494&view=rev
Log:
SLING-5467 : Sling Event - CleanUpTask wrongly marks folders

Modified:
    
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/tasks/CleanUpTask.java

Modified: 
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/tasks/CleanUpTask.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/tasks/CleanUpTask.java?rev=1727494&r1=1727493&r2=1727494&view=diff
==============================================================================
--- 
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/tasks/CleanUpTask.java
 (original)
+++ 
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/tasks/CleanUpTask.java
 Fri Jan 29 07:59:14 2016
@@ -172,6 +172,10 @@ public class CleanUpTask {
             // sanity check - should never be null
             if ( baseResource != null ) {
                 final Calendar now = Calendar.getInstance();
+                final int removeYear = now.get(Calendar.YEAR);
+                final int removeMonth = now.get(Calendar.MONTH) + 1;
+                final int removeDay = now.get(Calendar.DAY_OF_MONTH);
+                final int removeHour = now.get(Calendar.HOUR_OF_DAY);
 
                 final Iterator<Resource> topicIter = 
baseResource.listChildren();
                 while ( caps.isActive() && topicIter.hasNext() ) {
@@ -182,28 +186,41 @@ public class CleanUpTask {
                     while ( caps.isActive() && yearIter.hasNext() ) {
                         final Resource yearResource = yearIter.next();
                         final int year = 
Integer.valueOf(yearResource.getName());
-                        final boolean oldYear = year < now.get(Calendar.YEAR);
+                        // we should not have a year higher than "now", but we 
test anyway
+                        if ( year > removeYear ) {
+                            continue;
+                        }
+                        final boolean oldYear = year < removeYear;
 
                         // months
                         final Iterator<Resource> monthIter = 
yearResource.listChildren();
                         while ( caps.isActive() && monthIter.hasNext() ) {
                             final Resource monthResource = monthIter.next();
                             final int month = 
Integer.valueOf(monthResource.getName());
-                            final boolean oldMonth = oldYear || month < 
(now.get(Calendar.MONTH) + 1);
+                            if ( !oldYear && month > removeMonth ) {
+                                continue;
+                            }
+                            final boolean oldMonth = oldYear || month < 
removeMonth;
 
                             // days
                             final Iterator<Resource> dayIter = 
monthResource.listChildren();
                             while ( caps.isActive() && dayIter.hasNext() ) {
                                 final Resource dayResource = dayIter.next();
                                 final int day = 
Integer.valueOf(dayResource.getName());
-                                final boolean oldDay = oldMonth || day < 
now.get(Calendar.DAY_OF_MONTH);
+                                if ( !oldMonth && day > removeDay ) {
+                                    continue;
+                                }
+                                final boolean oldDay = oldMonth || day < 
removeDay;
 
                                 // hours
                                 final Iterator<Resource> hourIter = 
dayResource.listChildren();
                                 while ( caps.isActive() && hourIter.hasNext() 
) {
                                     final Resource hourResource = 
hourIter.next();
                                     final int hour = 
Integer.valueOf(hourResource.getName());
-                                    final boolean oldHour = (oldDay && 
(oldMonth || now.get(Calendar.HOUR_OF_DAY) > 0)) || hour < 
(now.get(Calendar.HOUR_OF_DAY) -1);
+                                    if ( !oldDay && hour > removeHour ) {
+                                        continue;
+                                    }
+                                    final boolean oldHour = (oldDay && 
(oldMonth || removeHour > 0)) || hour < (removeHour -1);
 
                                     // we only remove minutes if the hour is 
old
                                     if ( oldHour ) {


Reply via email to