Skip to content

Commit 891b68b

Browse files
authored
fix(mobile-client): prevent class def not found error (#2393)
1 parent d343c64 commit 891b68b

File tree

2 files changed

+15
-15
lines changed

2 files changed

+15
-15
lines changed

aws-android-sdk-auth-core/src/main/java/com/amazonaws/mobile/auth/core/IdentityManager.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,8 @@
4646
import java.util.Date;
4747
import java.util.HashMap;
4848
import java.util.HashSet;
49-
import java.util.LinkedList;
50-
import java.util.List;
5149
import java.util.Map;
50+
import java.util.Set;
5251
import java.util.concurrent.CountDownLatch;
5352
import java.util.concurrent.ExecutorService;
5453
import java.util.concurrent.Executors;
@@ -122,8 +121,7 @@ private void setUnderlyingProvider(final CognitoCachingCredentialsProvider under
122121
private final CountDownLatch startupAuthTimeoutLatch = new CountDownLatch(1);
123122

124123
/** Keep track of the registered sign-in providers. */
125-
private final List<Class<? extends SignInProvider>> signInProviderClasses
126-
= new LinkedList<Class<? extends SignInProvider>>();
124+
private final Set<Class<? extends SignInProvider>> signInProviderClasses = new HashSet<>();
127125

128126
/** Current provider beingIdentityProviderType used to obtain a Cognito access token. */
129127
private volatile IdentityProvider currentIdentityProvider = null;

aws-android-sdk-mobile-client/src/main/java/com/amazonaws/mobile/client/AWSMobileClient.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3544,19 +3544,21 @@ private void registerConfigSignInProviders(final AWSConfiguration awsConfigurati
35443544
Log.d(TAG, "Using the SignInProviderConfig from `awsconfiguration.json`.");
35453545
final IdentityManager identityManager = IdentityManager.getDefaultIdentityManager();
35463546

3547-
if (isConfigurationKeyPresent(USER_POOLS, awsConfiguration)
3548-
&& !identityManager.getSignInProviderClasses().contains(CognitoUserPoolsSignInProvider.class)) {
3549-
identityManager.addSignInProvider(CognitoUserPoolsSignInProvider.class);
3550-
}
3547+
try {
3548+
if (isConfigurationKeyPresent(USER_POOLS, awsConfiguration)) {
3549+
identityManager.addSignInProvider(CognitoUserPoolsSignInProvider.class);
3550+
}
35513551

3552-
if (isConfigurationKeyPresent(FACEBOOK, awsConfiguration)
3553-
&& !identityManager.getSignInProviderClasses().contains(FacebookSignInProvider.class)) {
3554-
identityManager.addSignInProvider(FacebookSignInProvider.class);
3555-
}
3552+
if (isConfigurationKeyPresent(FACEBOOK, awsConfiguration)) {
3553+
identityManager.addSignInProvider(FacebookSignInProvider.class);
3554+
}
35563555

3557-
if (isConfigurationKeyPresent(GOOGLE, awsConfiguration)
3558-
&& !identityManager.getSignInProviderClasses().contains(GoogleSignInProvider.class)) {
3559-
identityManager.addSignInProvider(GoogleSignInProvider.class);
3556+
if (isConfigurationKeyPresent(GOOGLE, awsConfiguration)) {
3557+
identityManager.addSignInProvider(GoogleSignInProvider.class);
3558+
}
3559+
} catch (NoClassDefFoundError exception) {
3560+
Log.w(TAG, "Sign in provider was not registered due to missing optional dependency. " +
3561+
"showSignIn() API may not work as expected.", exception);
35603562
}
35613563
}
35623564

0 commit comments

Comments
 (0)