@@ -51,7 +51,7 @@ public static <T extends BaseProvider> T getProvider(Class<T> providerClass) {
5151 Constructor <T > constructor = providerClass .getDeclaredConstructor (CacheManager .class );
5252 T provider = constructor .newInstance (cacheManager );
5353 provider .setTransformationManager (transformationManager );
54- providers .put (providerClass , provider );
54+ providers .putIfAbsent (providerClass , provider );
5555 }
5656 return (T ) providers .get (providerClass );
5757 } catch (InstantiationException | IllegalAccessException | NoSuchMethodException | InvocationTargetException e ) {
@@ -70,7 +70,7 @@ public static SecretsProvider getSecretsProvider() {
7070 .withCacheManager (cacheManager )
7171 .withTransformationManager (transformationManager )
7272 .build ();
73- providers .put (SecretsProvider .class , secretsProvider );
73+ providers .putIfAbsent (SecretsProvider .class , secretsProvider );
7474 }
7575 return secretsProvider ;
7676 }
@@ -86,7 +86,7 @@ public static SSMProvider getSsmProvider() {
8686 .withCacheManager (cacheManager )
8787 .withTransformationManager (transformationManager )
8888 .build ();
89- providers .put (SSMProvider .class , ssmProvider );
89+ providers .putIfAbsent (SSMProvider .class , ssmProvider );
9090 }
9191 return ssmProvider ;
9292 }
@@ -103,7 +103,7 @@ public static SecretsProvider getSecretsProvider(SecretsManagerClient client) {
103103 .withCacheManager (cacheManager )
104104 .withTransformationManager (transformationManager )
105105 .build ();
106- providers .put (SecretsProvider .class , secretsProvider );
106+ providers .putIfAbsent (SecretsProvider .class , secretsProvider );
107107 }
108108 return secretsProvider ;
109109 }
@@ -114,12 +114,13 @@ public static SecretsProvider getSecretsProvider(SecretsManagerClient client) {
114114 * @return a {@link SSMProvider}
115115 */
116116 public static SSMProvider getSsmProvider (SsmClient client ) {
117- if (ssmProvider == null ) {
117+ if (! providers . containsKey ( SSMProvider . class ) ) {
118118 ssmProvider = SSMProvider .builder ()
119119 .withClient (client )
120120 .withCacheManager (cacheManager )
121121 .withTransformationManager (transformationManager )
122122 .build ();
123+ providers .putIfAbsent (SSMProvider .class , ssmProvider );
123124 }
124125 return ssmProvider ;
125126 }
0 commit comments