Skip to content

Commit

Permalink
Raise proper exception for uninitialized provider
Browse files Browse the repository at this point in the history
  • Loading branch information
valldrac committed Dec 12, 2020
1 parent 1190824 commit 4de878d
Showing 1 changed file with 25 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public class ApplicationDependencies {
private static final Object LOCK = new Object();
private static final Object FRAME_RATE_TRACKER_LOCK = new Object();

private static Provider provider;
private static Provider dependencyProvider;
private static MessageNotifier messageNotifier;
private static TrimThreadsByDateManager trimThreadsByDateManager;

Expand All @@ -70,16 +70,23 @@ public class ApplicationDependencies {
@MainThread
public static void init(@NonNull Provider provider) {
synchronized (LOCK) {
if (ApplicationDependencies.provider != null) {
if (ApplicationDependencies.dependencyProvider != null) {
throw new IllegalStateException("Already initialized!");
}

ApplicationDependencies.provider = provider;
ApplicationDependencies.dependencyProvider = provider;
ApplicationDependencies.messageNotifier = provider.provideMessageNotifier();
ApplicationDependencies.trimThreadsByDateManager = provider.provideTrimThreadsByDateManager();
}
}

public static @NonNull Provider getProvider() {
if (dependencyProvider == null) {
throw new IllegalStateException("ApplicationDependencies not initialized yet");
}
return dependencyProvider;
}

public static @NonNull Application getApplication() {
return ApplicationContext.getInstance();
}
Expand All @@ -88,7 +95,7 @@ public static void init(@NonNull Provider provider) {
if (accountManager == null) {
synchronized (LOCK) {
if (accountManager == null) {
accountManager = provider.provideSignalServiceAccountManager();
accountManager = getProvider().provideSignalServiceAccountManager();
}
}
}
Expand All @@ -113,7 +120,7 @@ public static void init(@NonNull Provider provider) {
if (groupsV2Operations == null) {
synchronized (LOCK) {
if (groupsV2Operations == null) {
groupsV2Operations = provider.provideGroupsV2Operations();
groupsV2Operations = getProvider().provideGroupsV2Operations();
}
}
}
Expand Down Expand Up @@ -144,7 +151,7 @@ public static void init(@NonNull Provider provider) {
public static @NonNull SignalServiceMessageSender getSignalServiceMessageSender() {
synchronized (LOCK) {
if (messageSender == null) {
messageSender = provider.provideSignalServiceMessageSender();
messageSender = getProvider().provideSignalServiceMessageSender();
} else {
messageSender.update(
IncomingMessageObserver.getPipe(),
Expand All @@ -160,7 +167,7 @@ public static void init(@NonNull Provider provider) {
if (messageReceiver == null) {
synchronized (LOCK) {
if (messageReceiver == null) {
messageReceiver = provider.provideSignalServiceMessageReceiver();
messageReceiver = getProvider().provideSignalServiceMessageReceiver();
}
}
}
Expand All @@ -175,14 +182,14 @@ public static void resetSignalServiceMessageReceiver() {
}

public static @NonNull SignalServiceNetworkAccess getSignalServiceNetworkAccess() {
return provider.provideSignalServiceNetworkAccess();
return getProvider().provideSignalServiceNetworkAccess();
}

public static @NonNull IncomingMessageProcessor getIncomingMessageProcessor() {
if (incomingMessageProcessor == null) {
synchronized (LOCK) {
if (incomingMessageProcessor == null) {
incomingMessageProcessor = provider.provideIncomingMessageProcessor();
incomingMessageProcessor = getProvider().provideIncomingMessageProcessor();
}
}
}
Expand All @@ -194,7 +201,7 @@ public static void resetSignalServiceMessageReceiver() {
if (backgroundMessageRetriever == null) {
synchronized (LOCK) {
if (backgroundMessageRetriever == null) {
backgroundMessageRetriever = provider.provideBackgroundMessageRetriever();
backgroundMessageRetriever = getProvider().provideBackgroundMessageRetriever();
}
}
}
Expand All @@ -206,7 +213,7 @@ public static void resetSignalServiceMessageReceiver() {
if (recipientCache == null) {
synchronized (LOCK) {
if (recipientCache == null) {
recipientCache = provider.provideRecipientCache();
recipientCache = getProvider().provideRecipientCache();
}
}
}
Expand All @@ -218,7 +225,7 @@ public static void resetSignalServiceMessageReceiver() {
if (jobManager == null) {
synchronized (LOCK) {
if (jobManager == null) {
jobManager = provider.provideJobManager();
jobManager = getProvider().provideJobManager();
}
}
}
Expand All @@ -230,7 +237,7 @@ public static void resetSignalServiceMessageReceiver() {
if (frameRateTracker == null) {
synchronized (FRAME_RATE_TRACKER_LOCK) {
if (frameRateTracker == null) {
frameRateTracker = provider.provideFrameRateTracker();
frameRateTracker = getProvider().provideFrameRateTracker();
}
}
}
Expand All @@ -242,7 +249,7 @@ public static void resetSignalServiceMessageReceiver() {
if (megaphoneRepository == null) {
synchronized (LOCK) {
if (megaphoneRepository == null) {
megaphoneRepository = provider.provideMegaphoneRepository();
megaphoneRepository = getProvider().provideMegaphoneRepository();
}
}
}
Expand All @@ -254,7 +261,7 @@ public static void resetSignalServiceMessageReceiver() {
if (earlyMessageCache == null) {
synchronized (LOCK) {
if (earlyMessageCache == null) {
earlyMessageCache = provider.provideEarlyMessageCache();
earlyMessageCache = getProvider().provideEarlyMessageCache();
}
}
}
Expand All @@ -270,7 +277,7 @@ public static void resetSignalServiceMessageReceiver() {
if (incomingMessageObserver == null) {
synchronized (LOCK) {
if (incomingMessageObserver == null) {
incomingMessageObserver = provider.provideIncomingMessageObserver();
incomingMessageObserver = getProvider().provideIncomingMessageObserver();
}
}
}
Expand All @@ -284,15 +291,15 @@ public static void resetSignalServiceMessageReceiver() {

public static TypingStatusRepository getTypingStatusRepository() {
if (typingStatusRepository == null) {
typingStatusRepository = provider.provideTypingStatusRepository();
typingStatusRepository = getProvider().provideTypingStatusRepository();
}

return typingStatusRepository;
}

public static TypingStatusSender getTypingStatusSender() {
if (typingStatusSender == null) {
typingStatusSender = provider.provideTypingStatusSender();
typingStatusSender = getProvider().provideTypingStatusSender();
}

return typingStatusSender;
Expand Down

0 comments on commit 4de878d

Please sign in to comment.