From 9c4a3a6d1ff8f6d91f32209bfdb59539bc20b743 Mon Sep 17 00:00:00 2001 From: Ittay Stern Date: Sun, 25 Aug 2019 13:02:27 +0300 Subject: Allow plugging-in any provided LoginStrategy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- .../java/org/onap/portalapp/conf/ExternalAppConfig.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'epsdk-app-onap/src/main/java/org/onap/portalapp/conf/ExternalAppConfig.java') 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 -- cgit 1.2.3-korg