import java.io.File;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
+import javax.annotation.PostConstruct;
import javax.servlet.ServletContext;
+import org.apache.commons.lang3.StringUtils;
+import org.onap.portalsdk.core.domain.App;
+import org.onap.portalsdk.core.service.DataAccessService;
import org.onap.portalsdk.core.util.SystemProperties;
import org.onap.vid.aai.AaiClient;
import org.onap.vid.aai.AaiClientInterface;
import org.onap.vid.asdc.parser.VidNotionsBuilder;
import org.onap.vid.asdc.rest.SdcRestClient;
import org.onap.vid.client.SyncRestClient;
+import org.onap.vid.logging.VidLoggingInterceptor;
import org.onap.vid.properties.AsdcClientConfiguration;
+import org.onap.vid.properties.Features;
import org.onap.vid.properties.VidProperties;
import org.onap.vid.scheduler.SchedulerService;
import org.onap.vid.scheduler.SchedulerServiceImpl;
import org.onap.vid.services.AAIServiceTree;
-import org.onap.vid.services.AAITreeNodeBuilder;
import org.onap.vid.services.AaiService;
import org.onap.vid.services.AaiServiceImpl;
import org.onap.vid.services.ChangeManagementService;
import org.onap.vid.services.PombaServiceImpl;
import org.onap.vid.utils.JoshworksJacksonObjectMapper;
import org.onap.vid.utils.Logging;
+import org.onap.vid.utils.SystemPropertiesWrapper;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.core.Ordered;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.togglz.core.manager.FeatureManager;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
@EnableSwagger2
@Configuration
-public class WebConfig {
+public class WebConfig implements WebMvcConfigurer {
+
+ @Autowired DataAccessService dataAccessService;
+ @Autowired FeatureManager featureManager;
+ String portalAppPassword = System.getenv(VidProperties.PORTAL_APP_PASSWORD_ENVIRONMENT_VARIABLE_NAME);
+
+ @PostConstruct
+ public void persistPortalAppPassword() {
+ if (featureManager.isActive(Features.FLAG_GUILIN_CONFIG_PORTAL_APP_PASSWORD)) {
+ if (StringUtils.isEmpty(portalAppPassword)) {
+ return;
+ }
+
+ // Read self app object (i.e. where id=1) from database as AppServiceImpl.getDefaultApp() does
+ App defaultApp = (App) dataAccessService.getDomainObject(App.class, 1L, null);
+
+ if (defaultApp == null || StringUtils.equals(defaultApp.getAppPassword(), portalAppPassword)) {
+ return;
+ }
+
+ defaultApp.setAppPassword(portalAppPassword);
+ dataAccessService.saveDomainObject(defaultApp, null);
+ }
+ }
+
- /**
- * Gets the object mapper.
- *
- * @return the object mapper
- */
@Bean
public com.fasterxml.jackson.databind.ObjectMapper getObjectMapper() {
return new com.fasterxml.jackson.databind.ObjectMapper().registerModule(new KotlinModule());
@Bean
public AaiService getAaiService(AaiClientInterface aaiClient, AaiResponseTranslator aaiResponseTranslator,
- AAITreeNodeBuilder aaiTreeNode, AAIServiceTree aaiServiceTree, ExecutorService executorService) {
- return new AaiServiceImpl(aaiClient, aaiResponseTranslator, aaiServiceTree, executorService);
+ AAIServiceTree aaiServiceTree, Logging logging, ExecutorService executorService) {
+ return new AaiServiceImpl(aaiClient, aaiResponseTranslator, aaiServiceTree, executorService, logging);
}
@Bean
String protocol = asdcClientConfiguration.getAsdcClientProtocol();
int port = asdcClientConfiguration.getAsdcClientPort();
- return new SdcRestClient(protocol + "://" + host + ":" + port + "/", auth, new SyncRestClient(loggingService), loggingService);
+ return new SdcRestClient(protocol + "://" + host + ":" + port + "/", auth,
+ new SyncRestClient( loggingService, true),
+ loggingService);
}
@Bean
int threadsCount = defaultIfNull(Integer.parseInt(SystemProperties.getProperty(VidProperties.VID_THREAD_COUNT)), 1);
return Executors.newFixedThreadPool(threadsCount);
}
+
+ @Override
+ public void addInterceptors(InterceptorRegistry registry) {
+ registry.addInterceptor(
+ new VidLoggingInterceptor(new ControllersUtils(new SystemPropertiesWrapper()))
+ ).order(Ordered.HIGHEST_PRECEDENCE);
+ }
}