Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
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/. */
5 package org.mozilla.gecko.sync.repositories.delegates;
7 import java.util.concurrent.ExecutorService;
9 import org.mozilla.gecko.sync.repositories.RepositorySession;
10 import org.mozilla.gecko.sync.repositories.RepositorySessionBundle;
12 public class DeferredRepositorySessionFinishDelegate implements
13 RepositorySessionFinishDelegate {
14 protected final ExecutorService executor;
15 protected final RepositorySessionFinishDelegate inner;
17 public DeferredRepositorySessionFinishDelegate(RepositorySessionFinishDelegate inner,
18 ExecutorService executor) {
19 this.executor = executor;
20 this.inner = inner;
21 }
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 }
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 }
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 }