Eliminate ThreadLocals
[aaa.git] / aaa-shiro / impl / src / main / java / org / opendaylight / aaa / shiro / web / env / AAAIniWebEnvironment.java
index f085e569430174470d40fe617534976988328e16..a5337cba7dfecde6f4994e764f1b5a328b9b89e2 100644 (file)
@@ -19,6 +19,8 @@ import org.opendaylight.aaa.api.TokenStore;
 import org.opendaylight.aaa.api.password.service.PasswordHashService;
 import org.opendaylight.aaa.cert.api.ICertificateManager;
 import org.opendaylight.aaa.shiro.realm.KeystoneAuthRealm;
+import org.opendaylight.aaa.shiro.realm.MDSALDynamicAuthorizationFilter;
+import org.opendaylight.aaa.shiro.realm.MdsalRealm;
 import org.opendaylight.aaa.shiro.realm.MoonRealm;
 import org.opendaylight.aaa.shiro.realm.TokenAuthRealm;
 import org.opendaylight.aaa.tokenauthrealm.auth.TokenAuthenticators;
@@ -94,13 +96,12 @@ class AAAIniWebEnvironment extends IniWebEnvironment {
 
     @Override
     public void init() {
-        ThreadLocals.DATABROKER_TL.set(dataBroker);
-        ThreadLocals.PASSWORD_HASH_SERVICE_TL.set(passwordHashService);
         try (
+            var filterLoad = MDSALDynamicAuthorizationFilter.prepareForLoad(dataBroker);
             var keyStoneLoad = KeystoneAuthRealm.prepareForLoad(certificateManager);
+            var mdsalLoad = MdsalRealm.prepareForLoad(passwordHashService, dataBroker);
             var moonLoad = MoonRealm.prepareForLoad(servletSupport);
             var tokenAuthLoad = TokenAuthRealm.prepareForLoad(authenticationService, tokenAuthenticators, tokenStore)) {
-
             // Initialize the Shiro environment from clustered-app-config
             final Ini ini = createIniFromClusteredAppConfig(shiroConfiguration);
             setIni(ini);
@@ -108,9 +109,6 @@ class AAAIniWebEnvironment extends IniWebEnvironment {
                 super.init();
                 return null;
             });
-        } finally {
-            ThreadLocals.DATABROKER_TL.remove();
-            ThreadLocals.PASSWORD_HASH_SERVICE_TL.remove();
         }
     }
 }