diff options
author | 2019-08-25 13:02:27 +0300 | |
---|---|---|
committer | 2019-08-25 13:59:16 +0300 | |
commit | 9c4a3a6d1ff8f6d91f32209bfdb59539bc20b743 (patch) | |
tree | 01da9e6134416c9979c17d854a053ae14ee1f9c2 /epsdk-app-onap/src/main/java | |
parent | 87f850a6f3012aed165190bb861dcd0db8249dc6 (diff) |
Allow plugging-in any provided LoginStrategy
Support dynamic loading of provided implementations of PORTAL SDK's
`org.onap.portalsdk.core.auth.LoginStrategy` interface.
VID will load the class defined by `login.strategy.classname`
configuration parameter. Default will keep current ONAP's dev login.
Change-Id: I956a1f3376455211398769f3193703129b779871
Issue-ID: VID-594
Signed-off-by: Ittay Stern <ittay.stern@att.com>
Diffstat (limited to 'epsdk-app-onap/src/main/java')
-rw-r--r-- | epsdk-app-onap/src/main/java/org/onap/portalapp/conf/ExternalAppConfig.java | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/epsdk-app-onap/src/main/java/org/onap/portalapp/conf/ExternalAppConfig.java b/epsdk-app-onap/src/main/java/org/onap/portalapp/conf/ExternalAppConfig.java index b4dcd346a..d9b0f092e 100644 --- a/epsdk-app-onap/src/main/java/org/onap/portalapp/conf/ExternalAppConfig.java +++ b/epsdk-app-onap/src/main/java/org/onap/portalapp/conf/ExternalAppConfig.java @@ -37,6 +37,8 @@ */ package org.onap.portalapp.conf; +import static org.apache.commons.lang3.StringUtils.isNotEmpty; + import java.util.ArrayList; import java.util.List; import javax.sql.DataSource; @@ -50,6 +52,7 @@ import org.onap.portalsdk.core.objectcache.AbstractCacheManager; import org.onap.portalsdk.core.service.DataAccessService; import org.onap.portalsdk.core.util.CacheManager; import org.onap.portalsdk.core.util.SystemProperties; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @@ -164,8 +167,15 @@ public class ExternalAppConfig extends AppConfig implements Configurable { } @Bean - public LoginStrategy loginStrategy() { - return new LoginStrategyImpl(); + public LoginStrategy loginStrategy(@Value("${login.strategy.classname:}") String classname) throws ReflectiveOperationException { + return isNotEmpty(classname) ? + newLoginStrategyInstance(classname) : new LoginStrategyImpl(); + } + + private LoginStrategy newLoginStrategyInstance(String loginStrategyClassname) throws ReflectiveOperationException { + return (LoginStrategy) Class.forName(loginStrategyClassname) + .getConstructor() + .newInstance(); } @Bean |