mobile/android/base/sync/repositories/delegates/DeferredRepositorySessionFinishDelegate.java

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:a3acea8e2898
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4
5 package org.mozilla.gecko.sync.repositories.delegates;
6
7 import java.util.concurrent.ExecutorService;
8
9 import org.mozilla.gecko.sync.repositories.RepositorySession;
10 import org.mozilla.gecko.sync.repositories.RepositorySessionBundle;
11
12 public class DeferredRepositorySessionFinishDelegate implements
13 RepositorySessionFinishDelegate {
14 protected final ExecutorService executor;
15 protected final RepositorySessionFinishDelegate inner;
16
17 public DeferredRepositorySessionFinishDelegate(RepositorySessionFinishDelegate inner,
18 ExecutorService executor) {
19 this.executor = executor;
20 this.inner = inner;
21 }
22
23 @Override
24 public void onFinishSucceeded(final RepositorySession session,
25 final RepositorySessionBundle bundle) {
26 executor.execute(new Runnable() {
27 @Override
28 public void run() {
29 inner.onFinishSucceeded(session, bundle);
30 }
31 });
32 }
33
34 @Override
35 public void onFinishFailed(final Exception ex) {
36 executor.execute(new Runnable() {
37 @Override
38 public void run() {
39 inner.onFinishFailed(ex);
40 }
41 });
42 }
43
44 @Override
45 public RepositorySessionFinishDelegate deferredFinishDelegate(ExecutorService newExecutor) {
46 if (newExecutor == executor) {
47 return this;
48 }
49 throw new IllegalArgumentException("Can't re-defer this delegate.");
50 }
51 }

mercurial