
nl.tweeenveertig.openstack.client.mock.scheduled.ObjectDeleter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of joss Show documentation
Show all versions of joss Show documentation
Java Client library for OpenStack Storage (Swift)
package nl.tweeenveertig.openstack.client.mock.scheduled;
import nl.tweeenveertig.openstack.model.StoredObject;
import java.util.*;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class ObjectDeleter implements Runnable {
private List objectsToDelete = new ArrayList();
public ObjectDeleter(int startAfter, int intervalInSeconds) {
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.scheduleAtFixedRate(this, startAfter, intervalInSeconds, TimeUnit.SECONDS);
}
public void scheduleForDeletion(StoredObject storedObject, Date deleteAt) {
objectsToDelete.add(new ScheduledForDeletion(storedObject, deleteAt));
}
@Override
public void run() {
Date now = new Date();
List objectsToDeleteNow = new ArrayList();
for (ScheduledForDeletion scheduledForDeletion : objectsToDelete) {
if (scheduledForDeletion.deleteIf(now)) {
objectsToDeleteNow.add(scheduledForDeletion);
}
}
objectsToDelete.removeAll(objectsToDeleteNow);
}
}