Refactor AAAShiroProvider & Co. to be non static 15/69415/6
authorMichael Vorburger <vorburger@redhat.com>
Mon, 12 Mar 2018 22:56:39 +0000 (23:56 +0100)
committerTom Pantelis <tompantelis@gmail.com>
Thu, 15 Mar 2018 15:09:31 +0000 (11:09 -0400)
commit1043cf9a190cf5ebd1f51d241458cb6bce65509c
treed7528e98642f8b2e09199ccf558f0e1afd4731b0
parentd8dd081c05eb18df5aeead910207ab1eb7aacb21
Refactor AAAShiroProvider & Co. to be non static

- The IdmLightApplication is now instantiated and injected
  with the AAAShiroProvider and passed to the ServletContainer
  instead of the ServletContainer instantiating it via reflection.

- For KarafIniWebEnvironmentLoaderListener and KarafIniWebEnvironment,
  the initial plan was to inject the AAAShiroProvider however there
  are still web.xml files in ODL land that reference
  KarafIniWebEnvironment and expect a no-arg ctor. We need to keep
  backwards compatibility for a while so I'll follow-up later
  to add a new KarafIniWebEnvironmentLoaderListener that is advertised
  as a service for programmtic use. KarafIniWebEnvironment was changed
  to obtain the ShiroConfiguration statically rather than the
  AAAShiroProvider.

- The shiro lib still instantiates the filter/realm etc instances via
  reflection. These are specified via String key/value pairs with class names
  in the Ini instance. Unfortunately I see no way around this. So
  to avoid having to pass our services, eg DataBroker, via statics,
  I opted to use ThreadLocals to inject indirectly. This is a bit
  ugly but works.

Change-Id: I8f5114802c76cbd2b4bfda69952df2b28557cf8d
Signed-off-by: Michael Vorburger <vorburger@redhat.com>
Signed-off-by: Tom Pantelis <tompantelis@gmail.com>
32 files changed:
aaa-cli-jar/src/main/java/org/opendaylight/aaa/cli/jar/StandaloneCommandLineInterface.java
aaa-cli/src/main/java/org/opendaylight/aaa/cli/AaaCliAbstractCommand.java
aaa-cli/src/main/java/org/opendaylight/aaa/cli/dmstore/ChangeUserPassword.java
aaa-cli/src/main/resources/org/opendaylight/blueprint/commands.xml
aaa-shiro/impl/pom.xml
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/AAAShiroActivator.java [deleted file]
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/AAAShiroProvider.java
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/datastore/h2/H2Store.java
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/datastore/h2/IdmLightConfig.java
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/shiro/idm/DomainHandler.java
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/shiro/idm/IdmLightApplication.java
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/shiro/idm/IdmLightProxy.java
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/shiro/idm/RoleHandler.java
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/shiro/idm/UserHandler.java
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/shiro/realm/KeystoneAuthRealm.java
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/shiro/realm/MDSALDynamicAuthorizationFilter.java
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/shiro/realm/MdsalRealm.java
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/shiro/realm/ODLActiveDirectoryRealm.java
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/shiro/realm/ODLJndiLdapRealmAuthNOnly.java
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/shiro/web/env/KarafIniWebEnvironment.java
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/shiro/web/env/KarafIniWebEnvironmentLoaderListener.java
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/shiro/web/env/ThreadLocals.java [new file with mode: 0644]
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/shiro/web/env/WebInitializer.java
aaa-shiro/impl/src/main/resources/initial/aaa-app-config.xml
aaa-shiro/impl/src/main/resources/org/opendaylight/blueprint/impl-blueprint.xml
aaa-shiro/impl/src/test/java/org/opendaylight/aaa/datastore/h2/DomainStoreTest.java
aaa-shiro/impl/src/test/java/org/opendaylight/aaa/datastore/h2/H2StoreTest.java
aaa-shiro/impl/src/test/java/org/opendaylight/aaa/datastore/h2/IdmLightConfigTest.java
aaa-shiro/impl/src/test/java/org/opendaylight/aaa/shiro/idm/persistence/PasswordHashTest.java
aaa-shiro/impl/src/test/java/org/opendaylight/aaa/shiro/idm/rest/test/HandlerTest.java
aaa-shiro/impl/src/test/java/org/opendaylight/aaa/shiro/realm/KeystoneAuthRealmTest.java
aaa-shiro/impl/src/test/java/org/opendaylight/aaa/shiro/realm/MDSALDynamicAuthorizationFilterTest.java