michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: http://creativecommons.org/publicdomain/zero/1.0/ */ michael@0: michael@0: package org.mozilla.gecko.background.sync.helpers; michael@0: michael@0: import java.util.concurrent.ExecutorService; michael@0: michael@0: import org.mozilla.gecko.sync.repositories.delegates.RepositorySessionStoreDelegate; michael@0: michael@0: public class DefaultStoreDelegate extends DefaultDelegate implements RepositorySessionStoreDelegate { michael@0: michael@0: @Override michael@0: public void onRecordStoreFailed(Exception ex, String guid) { michael@0: performNotify("Store failed", ex); michael@0: } michael@0: michael@0: @Override michael@0: public void onRecordStoreSucceeded(String guid) { michael@0: performNotify("DefaultStoreDelegate used", null); michael@0: } michael@0: michael@0: @Override michael@0: public void onStoreCompleted(long storeEnd) { michael@0: performNotify("DefaultStoreDelegate used", null); michael@0: } michael@0: michael@0: @Override michael@0: public RepositorySessionStoreDelegate deferredStoreDelegate(final ExecutorService executor) { michael@0: final RepositorySessionStoreDelegate self = this; michael@0: return new RepositorySessionStoreDelegate() { michael@0: michael@0: @Override michael@0: public void onRecordStoreSucceeded(final String guid) { michael@0: executor.execute(new Runnable() { michael@0: @Override michael@0: public void run() { michael@0: self.onRecordStoreSucceeded(guid); michael@0: } michael@0: }); michael@0: } michael@0: michael@0: @Override michael@0: public void onRecordStoreFailed(final Exception ex, final String guid) { michael@0: executor.execute(new Runnable() { michael@0: @Override michael@0: public void run() { michael@0: self.onRecordStoreFailed(ex, guid); michael@0: } michael@0: }); michael@0: } michael@0: michael@0: @Override michael@0: public void onStoreCompleted(final long storeEnd) { michael@0: executor.execute(new Runnable() { michael@0: @Override michael@0: public void run() { michael@0: self.onStoreCompleted(storeEnd); michael@0: } michael@0: }); michael@0: } michael@0: michael@0: @Override michael@0: public RepositorySessionStoreDelegate deferredStoreDelegate(ExecutorService newExecutor) { michael@0: if (newExecutor == executor) { michael@0: return this; michael@0: } michael@0: throw new IllegalArgumentException("Can't re-defer this delegate."); michael@0: } michael@0: }; michael@0: } michael@0: }