Wed, 31 Dec 2014 07:22:50 +0100
Correct previous dual key logic pending first delivery installment.
1 /* Any copyright is dedicated to the Public Domain.
2 http://creativecommons.org/publicdomain/zero/1.0/ */
4 package org.mozilla.gecko.background.sync.helpers;
6 import java.util.concurrent.ExecutorService;
8 import org.mozilla.gecko.background.common.log.Logger;
9 import org.mozilla.gecko.sync.repositories.RepositorySession;
10 import org.mozilla.gecko.sync.repositories.RepositorySessionBundle;
11 import org.mozilla.gecko.sync.repositories.delegates.RepositorySessionFinishDelegate;
13 public class DefaultFinishDelegate extends DefaultDelegate implements RepositorySessionFinishDelegate {
15 @Override
16 public void onFinishFailed(Exception ex) {
17 performNotify("Finish failed", ex);
18 }
20 @Override
21 public void onFinishSucceeded(RepositorySession session, RepositorySessionBundle bundle) {
22 performNotify("Hit default finish delegate", null);
23 }
25 @Override
26 public RepositorySessionFinishDelegate deferredFinishDelegate(final ExecutorService executor) {
27 final RepositorySessionFinishDelegate self = this;
29 Logger.info("DefaultFinishDelegate", "Deferringā¦");
30 return new RepositorySessionFinishDelegate() {
31 @Override
32 public void onFinishSucceeded(final RepositorySession session,
33 final RepositorySessionBundle bundle) {
34 Logger.info("DefaultFinishDelegate", "Executing onFinishSucceeded Runnableā¦");
35 executor.execute(new Runnable() {
36 @Override
37 public void run() {
38 self.onFinishSucceeded(session, bundle);
39 }});
40 }
42 @Override
43 public void onFinishFailed(final Exception ex) {
44 executor.execute(new Runnable() {
45 @Override
46 public void run() {
47 self.onFinishFailed(ex);
48 }});
49 }
51 @Override
52 public RepositorySessionFinishDelegate deferredFinishDelegate(ExecutorService newExecutor) {
53 if (newExecutor == executor) {
54 return this;
55 }
56 throw new IllegalArgumentException("Can't re-defer this delegate.");
57 }
58 };
59 }
60 }