diff --git a/libtextsecure/src/main/java/org/whispersystems/textsecure/util/FutureTaskListener.java b/libtextsecure/src/main/java/org/whispersystems/textsecure/util/FutureTaskListener.java deleted file mode 100644 index 01de1e7f53..0000000000 --- a/libtextsecure/src/main/java/org/whispersystems/textsecure/util/FutureTaskListener.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.whispersystems.textsecure.util; - -public interface FutureTaskListener { - public void onSuccess(V result); - public void onFailure(Throwable error); -} diff --git a/libtextsecure/src/main/java/org/whispersystems/textsecure/util/ListenableFutureTask.java b/libtextsecure/src/main/java/org/whispersystems/textsecure/util/ListenableFutureTask.java deleted file mode 100644 index d478d5b8c1..0000000000 --- a/libtextsecure/src/main/java/org/whispersystems/textsecure/util/ListenableFutureTask.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.whispersystems.textsecure.util; - -import java.util.LinkedList; -import java.util.List; -import java.util.concurrent.Callable; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.FutureTask; - -public class ListenableFutureTask extends FutureTask { - - private final List> listeners; - - public ListenableFutureTask(Callable callable) { - super(callable); - this.listeners = new LinkedList<>(); - } - - public synchronized void addListener(FutureTaskListener listener) { - if (this.isDone()) { - callback(listener); - return; - } - listeners.add(listener); - } - - public synchronized boolean removeListener(FutureTaskListener listener) { - return listeners.remove(listener); - } - - @Override - protected synchronized void done() { - callback(); - } - - private void callback() { - for (FutureTaskListener listener : listeners) { - callback(listener); - } - } - - private void callback(FutureTaskListener listener) { - if (listener != null) { - try { - listener.onSuccess(get()); - } catch (ExecutionException ee) { - listener.onFailure(ee); - } catch (InterruptedException e) { - throw new AssertionError(e); - } - } - } -} diff --git a/src/org/thoughtcrime/securesms/ConversationItem.java b/src/org/thoughtcrime/securesms/ConversationItem.java index edd2feb3e4..e0fea08107 100644 --- a/src/org/thoughtcrime/securesms/ConversationItem.java +++ b/src/org/thoughtcrime/securesms/ConversationItem.java @@ -54,8 +54,8 @@ import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.util.DateUtils; import org.thoughtcrime.securesms.util.Dialogs; import org.thoughtcrime.securesms.util.Emoji; -import org.whispersystems.textsecure.util.FutureTaskListener; -import org.whispersystems.textsecure.util.ListenableFutureTask; +import org.thoughtcrime.securesms.util.FutureTaskListener; +import org.thoughtcrime.securesms.util.ListenableFutureTask; /** * A view that displays an individual conversation item within a conversation diff --git a/src/org/thoughtcrime/securesms/database/MmsDatabase.java b/src/org/thoughtcrime/securesms/database/MmsDatabase.java index 0710f16115..26a0ba3fe1 100644 --- a/src/org/thoughtcrime/securesms/database/MmsDatabase.java +++ b/src/org/thoughtcrime/securesms/database/MmsDatabase.java @@ -51,7 +51,7 @@ import org.thoughtcrime.securesms.recipients.Recipients; import org.thoughtcrime.securesms.util.LRUCache; import org.whispersystems.libaxolotl.util.guava.Optional; import org.whispersystems.textsecure.util.InvalidNumberException; -import org.whispersystems.textsecure.util.ListenableFutureTask; +import org.thoughtcrime.securesms.util.ListenableFutureTask; import org.thoughtcrime.securesms.util.Trimmer; import org.whispersystems.textsecure.util.Util; diff --git a/src/org/thoughtcrime/securesms/database/model/MediaMmsMessageRecord.java b/src/org/thoughtcrime/securesms/database/model/MediaMmsMessageRecord.java index 0b4cd6a9ab..070d530c66 100644 --- a/src/org/thoughtcrime/securesms/database/model/MediaMmsMessageRecord.java +++ b/src/org/thoughtcrime/securesms/database/model/MediaMmsMessageRecord.java @@ -27,11 +27,9 @@ import org.thoughtcrime.securesms.mms.Slide; import org.thoughtcrime.securesms.mms.SlideDeck; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.Recipients; -import org.whispersystems.textsecure.push.exceptions.NotFoundException; -import org.whispersystems.textsecure.util.FutureTaskListener; -import org.whispersystems.textsecure.util.ListenableFutureTask; +import org.thoughtcrime.securesms.util.FutureTaskListener; +import org.thoughtcrime.securesms.util.ListenableFutureTask; -import java.util.List; import java.util.concurrent.ExecutionException; /** diff --git a/src/org/thoughtcrime/securesms/recipients/Recipient.java b/src/org/thoughtcrime/securesms/recipients/Recipient.java index 2f1843a1df..9efb4b70ef 100644 --- a/src/org/thoughtcrime/securesms/recipients/Recipient.java +++ b/src/org/thoughtcrime/securesms/recipients/Recipient.java @@ -26,8 +26,8 @@ import android.util.Log; import org.thoughtcrime.securesms.contacts.ContactPhotoFactory; import org.thoughtcrime.securesms.recipients.RecipientProvider.RecipientDetails; import org.thoughtcrime.securesms.util.GroupUtil; -import org.whispersystems.textsecure.util.FutureTaskListener; -import org.whispersystems.textsecure.util.ListenableFutureTask; +import org.thoughtcrime.securesms.util.FutureTaskListener; +import org.thoughtcrime.securesms.util.ListenableFutureTask; import java.util.HashSet; diff --git a/src/org/thoughtcrime/securesms/recipients/RecipientProvider.java b/src/org/thoughtcrime/securesms/recipients/RecipientProvider.java index 21b508fdff..6cf15b0f29 100644 --- a/src/org/thoughtcrime/securesms/recipients/RecipientProvider.java +++ b/src/org/thoughtcrime/securesms/recipients/RecipientProvider.java @@ -17,7 +17,6 @@ package org.thoughtcrime.securesms.recipients; import android.content.Context; -import android.database.ContentObserver; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; @@ -34,7 +33,7 @@ import org.thoughtcrime.securesms.util.BitmapUtil; import org.thoughtcrime.securesms.util.GroupUtil; import org.thoughtcrime.securesms.util.LRUCache; import org.thoughtcrime.securesms.util.Util; -import org.whispersystems.textsecure.util.ListenableFutureTask; +import org.thoughtcrime.securesms.util.ListenableFutureTask; import java.io.IOException; import java.util.Collections; diff --git a/src/org/thoughtcrime/securesms/util/FutureTaskListener.java b/src/org/thoughtcrime/securesms/util/FutureTaskListener.java new file mode 100644 index 0000000000..61091345b6 --- /dev/null +++ b/src/org/thoughtcrime/securesms/util/FutureTaskListener.java @@ -0,0 +1,22 @@ +/** + * Copyright (C) 2014 Open Whisper Systems + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.thoughtcrime.securesms.util; + +public interface FutureTaskListener { + public void onSuccess(V result); + public void onFailure(Throwable error); +} diff --git a/src/org/thoughtcrime/securesms/util/ListenableFutureTask.java b/src/org/thoughtcrime/securesms/util/ListenableFutureTask.java new file mode 100644 index 0000000000..a0fdd1bd9f --- /dev/null +++ b/src/org/thoughtcrime/securesms/util/ListenableFutureTask.java @@ -0,0 +1,67 @@ +/** + * Copyright (C) 2014 Open Whisper Systems + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.thoughtcrime.securesms.util; + +import java.util.LinkedList; +import java.util.List; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.FutureTask; + +public class ListenableFutureTask extends FutureTask { + + private final List> listeners = new LinkedList<>(); + + public ListenableFutureTask(Callable callable) { + super(callable); + } + + public synchronized void addListener(FutureTaskListener listener) { + if (this.isDone()) { + callback(listener); + } else { + this.listeners.add(listener); + } + } + + public synchronized void removeListener(FutureTaskListener listener) { + this.listeners.remove(listener); + } + + @Override + protected synchronized void done() { + callback(); + } + + private void callback() { + for (FutureTaskListener listener : listeners) { + callback(listener); + } + } + + private void callback(FutureTaskListener listener) { + if (listener != null) { + try { + listener.onSuccess(get()); + } catch (InterruptedException e) { + throw new AssertionError(e); + } catch (ExecutionException e) { + listener.onFailure(e); + } + } + } +}