diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/SyncManager.java b/app/src/main/java/at/bitfire/davdroid/syncadapter/SyncManager.java index ad6f15f4..e5b3503a 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/SyncManager.java +++ b/app/src/main/java/at/bitfire/davdroid/syncadapter/SyncManager.java @@ -187,11 +187,11 @@ abstract public class SyncManager { syncResult.stats.numIoExceptions++; } catch (Exceptions.ServiceUnavailableException e) { - Date retryAfter = null; // ((Exceptions.ServiceUnavailableException) e).retryAfter; - if (retryAfter != null) { - // how many seconds to wait? getTime() returns ms, so divide by 1000 - // syncResult.delayUntil = (retryAfter.getTime() - new Date().getTime()) / 1000; - } + Date retryAfter = null; // ((Exceptions.ServiceUnavailableException) e).retryAfter; + if (retryAfter != null) { + // how many seconds to wait? getTime() returns ms, so divide by 1000 + // syncResult.delayUntil = (retryAfter.getTime() - new Date().getTime()) / 1000; + } } catch (Exception | OutOfMemoryError e) { if (e instanceof Exceptions.UnauthorizedException) { syncResult.stats.numAuthExceptions++; @@ -221,9 +221,12 @@ abstract public class SyncManager { } - /** Prepares synchronization (for instance, allocates necessary resources). + /** + * Prepares synchronization (for instance, allocates necessary resources). + * * @return whether actual synchronization is required / can be made. true = synchronization - * shall be continued, false = synchronization can be skipped */ + * shall be continued, false = synchronization can be skipped + */ abstract protected boolean prepare() throws ContactsStorageException, CalendarStorageException; abstract protected void processSyncEntry(SyncEntry cEntry) throws IOException, ContactsStorageException, CalendarStorageException, InvalidCalendarException; @@ -257,7 +260,7 @@ abstract public class SyncManager { protected void pushEntries() throws Exceptions.HttpException, IOException, ContactsStorageException, CalendarStorageException { // upload dirty contacts - // FIXME: Deal with failure + // FIXME: Deal with failure (someone else uploaded before we go here) if (!localEntries.isEmpty()) { journal.putEntries(localEntries, remoteCTag); @@ -288,24 +291,19 @@ abstract public class SyncManager { localEntries.add(previousEntry); } - try { - for (LocalResource local : localCollection.getDirty()) { - SyncEntry.Actions action; - if (local.isLocalOnly()) { - action = SyncEntry.Actions.ADD; - } else { - action = SyncEntry.Actions.CHANGE; - } - - SyncEntry entry = new SyncEntry(local.getContent(), action); - JournalEntryManager.Entry tmp = new JournalEntryManager.Entry(); - tmp.update(settings.password(), entry.toJson(), previousEntry); - previousEntry = tmp; - localEntries.add(previousEntry); + for (LocalResource local : localCollection.getDirty()) { + SyncEntry.Actions action; + if (local.isLocalOnly()) { + action = SyncEntry.Actions.ADD; + } else { + action = SyncEntry.Actions.CHANGE; } - } catch (FileNotFoundException e) { - // FIXME: Do something - e.printStackTrace(); + + SyncEntry entry = new SyncEntry(local.getContent(), action); + JournalEntryManager.Entry tmp = new JournalEntryManager.Entry(); + tmp.update(settings.password(), entry.toJson(), previousEntry); + previousEntry = tmp; + localEntries.add(previousEntry); } } @@ -332,9 +330,6 @@ abstract public class SyncManager { * Checks Thread.interrupted() before each request to allow quick sync cancellation. */ protected List processLocallyDeleted() throws CalendarStorageException, ContactsStorageException { - // FIXME: This needs refactoring and fixing, it's just not true. - // Remove locally deleted entries from server (if they have a name, i.e. if they were uploaded before), - // but only if they don't have changed on the server. Then finally remove them from the local address book. LocalResource[] localList = localCollection.getDeleted(); List ret = new ArrayList<>(localList.length);