2 * ================================================================================
\r
4 * ================================================================================
\r
5 * Copyright (C) 2017 AT&T Intellectual Property
\r
6 * ================================================================================
\r
7 * Licensed under the Apache License, Version 2.0 (the "License");
\r
8 * you may not use this file except in compliance with the License.
\r
9 * You may obtain a copy of the License at
\r
11 * http://www.apache.org/licenses/LICENSE-2.0
\r
13 * Unless required by applicable law or agreed to in writing, software
\r
14 * distributed under the License is distributed on an "AS IS" BASIS,
\r
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
16 * See the License for the specific language governing permissions and
\r
17 * limitations under the License.
\r
18 * ================================================================================
\r
20 package org.openecomp.portalapp.conf;
\r
22 import java.util.ArrayList;
\r
23 import java.util.List;
\r
24 import javax.annotation.PostConstruct;
\r
25 import javax.sql.DataSource;
\r
27 //import org.openecomp.portalapp.lm.FusionLicenseManagerImpl;
\r
28 import org.openecomp.portalapp.login.LoginStrategyImpl;
\r
29 import org.openecomp.portalapp.scheduler.RegistryAdapter;
\r
30 import org.openecomp.portalsdk.core.auth.LoginStrategy;
\r
31 import org.openecomp.portalsdk.core.conf.AppConfig;
\r
32 import org.openecomp.portalsdk.core.conf.Configurable;
\r
33 import org.openecomp.portalsdk.core.lm.FusionLicenseManager;
\r
34 import org.openecomp.portalsdk.core.lm.FusionLicenseManagerUtils;
\r
35 //import org.openecomp.portalsdk.core.lm.LicenseableClassImpl;
\r
36 import org.openecomp.portalsdk.core.objectcache.AbstractCacheManager;
\r
37 import org.openecomp.portalsdk.core.service.DataAccessService;
\r
38 import org.openecomp.portalsdk.core.util.CacheManager;
\r
39 import org.openecomp.portalsdk.core.util.SystemProperties;
\r
40 import org.springframework.beans.factory.annotation.Autowired;
\r
41 import org.springframework.beans.factory.annotation.Value;
\r
42 import org.springframework.context.annotation.Bean;
\r
43 import org.springframework.context.annotation.ComponentScan;
\r
44 import org.springframework.context.annotation.Configuration;
\r
45 import org.springframework.context.annotation.Import;
\r
46 import org.springframework.context.annotation.Profile;
\r
47 import org.springframework.context.annotation.PropertySource;
\r
48 import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
\r
49 import org.springframework.core.io.Resource;
\r
50 import org.springframework.jdbc.datasource.init.DataSourceInitializer;
\r
51 import org.springframework.jdbc.datasource.init.DatabasePopulator;
\r
52 import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
\r
53 import org.springframework.scheduling.annotation.EnableAsync;
\r
54 import org.springframework.scheduling.annotation.EnableScheduling;
\r
55 import org.springframework.scheduling.quartz.SchedulerFactoryBean;
\r
56 import org.springframework.web.servlet.ViewResolver;
\r
57 import org.springframework.web.servlet.config.annotation.EnableWebMvc;
\r
58 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
\r
59 import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
\r
60 import org.openecomp.portalsdk.core.service.DataAccessService;
\r
61 import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;
\r
63 * ECOMP Portal SDK sample application. ECOMP Portal SDK core AppConfig class to
\r
64 * reuse interceptors, view resolvers and other features defined there.
\r
68 @ComponentScan(basePackages = "org.openecomp")
\r
69 @PropertySource(value = { "${container.classpath:}/WEB-INF/conf/app/test.properties" }, ignoreResourceNotFound = true)
\r
73 public class ExternalAppConfig extends AppConfig implements Configurable {
\r
75 private RegistryAdapter schedulerRegistryAdapter;
\r
76 /** The Constant LOG. */
\r
77 private static final EELFLoggerDelegate LOG = EELFLoggerDelegate.getLogger(ExternalAppConfig.class);
\r
79 /** The vid schema script. */
\r
80 @Value("classpath:vid-schema.sql")
\r
81 private Resource vidSchemaScript;
\r
83 /** The vid data script. */
\r
84 @Value("classpath:vid-data.sql")
\r
85 private Resource vidDataScript;
\r
88 * The Class InnerConfiguration.
\r
91 @Import(SystemProperties.class)
\r
92 static class InnerConfiguration {
\r
98 * @return the view resolver
\r
99 * @see org.openecomp.portalsdk.core.conf.AppConfig#viewResolver()
\r
101 public ViewResolver viewResolver() {
\r
102 return super.viewResolver();
\r
106 * @see org.openecomp.portalsdk.core.conf.AppConfig#addResourceHandlers(ResourceHandlerRegistry)
\r
110 public void addResourceHandlers(ResourceHandlerRegistry registry) {
\r
111 super.addResourceHandlers(registry);
\r
115 * @see org.openecomp.portalsdk.core.conf.AppConfig#dataAccessService()
\r
117 public DataAccessService dataAccessService() {
\r
118 // Echo the JDBC URL to assist developers when starting the app.
\r
119 System.out.println("ExternalAppConfig: " + SystemProperties.DB_CONNECTIONURL + " is "
\r
120 + SystemProperties.getProperty(SystemProperties.DB_CONNECTIONURL));
\r
121 return super.dataAccessService();
\r
125 * Creates a new list with a single entry that is the external app
\r
126 * definitions.xml path.
\r
128 * @return List of String, size 1
\r
130 public List<String> addTileDefinitions() {
\r
131 List<String> definitions = new ArrayList<String>();
\r
132 definitions.add("/WEB-INF/defs/definitions.xml");
\r
133 return definitions;
\r
137 * Adds request interceptors to the specified registry by calling
\r
138 * {@link AppConfig#addInterceptors(InterceptorRegistry)}, but excludes
\r
139 * certain paths from the session timeout interceptor.
\r
142 public void addInterceptors(InterceptorRegistry registry) {
\r
143 super.setExcludeUrlPathsForSessionTimeout("/login_external", "*/login_external.htm", "login", "/login.htm",
\r
144 "/api*", "/single_signon.htm", "/single_signon");
\r
145 super.addInterceptors(registry);
\r
149 * Creates and returns a new instance of a {@link CacheManager} class.
\r
151 * @return New instance of {@link CacheManager}
\r
154 public AbstractCacheManager cacheManager() {
\r
155 return new CacheManager();
\r
162 * Creates and returns a new instance of a {@link FusionLicenseManager}.
\r
164 * @return New instance of {@link FusionLicenseManager}.
\r
167 // public FusionLicenseManager fusionLicenseManager() {
\r
168 // return new FusionLicenseManagerImpl();
\r
172 * Creates and returns a new instance of a
\r
173 * {@link FusionLicenseManagerUtils}.
\r
175 * @return New instance of {@link FusionLicenseManagerUtils}.
\r
178 // public FusionLicenseManagerUtils fusionLicenseManagerUtils() {
\r
179 // return new FusionLicenseManagerUtils();
\r
183 * Creates and returns a new instance of a {@link SchedulerFactoryBean} and
\r
184 * populates it with triggers.
\r
186 * @return New instance of {@link SchedulerFactoryBean}
\r
187 * @throws Exception
\r
189 // @Bean // ANNOTATION COMMENTED OUT
\r
190 // APPLICATIONS REQUIRING QUARTZ SHOULD RESTORE ANNOTATION
\r
191 public SchedulerFactoryBean schedulerFactoryBean() throws Exception {
\r
192 SchedulerFactoryBean scheduler = new SchedulerFactoryBean();
\r
193 scheduler.setTriggers(schedulerRegistryAdapter.getTriggers());
\r
194 scheduler.setConfigLocation(appApplicationContext.getResource("WEB-INF/conf/quartz.properties"));
\r
195 scheduler.setDataSource(dataSource());
\r
200 * Data source initializer.
\r
202 * @param dataSource the data source
\r
203 * @return the data source initializer
\r
206 public DataSourceInitializer dataSourceInitializer(DataSource dataSource) {
\r
208 LOG.info("Initializing VID data source");
\r
210 final DataSourceInitializer initializer = new DataSourceInitializer();
\r
211 initializer.setDataSource(dataSource);
\r
212 initializer.setDatabasePopulator(databasePopulator());
\r
213 return initializer;
\r
217 * Database populator.
\r
219 * @return the database populator
\r
221 public DatabasePopulator databasePopulator() {
\r
222 LOG.info("Populating VID data source");
\r
224 final ResourceDatabasePopulator populator = new ResourceDatabasePopulator();
\r
225 populator.addScript(vidSchemaScript);
\r
226 populator.addScript(vidDataScript);
\r
231 * Sets the scheduler registry adapter.
\r
233 * @param schedulerRegistryAdapter
\r
236 public void setSchedulerRegistryAdapter(final RegistryAdapter schedulerRegistryAdapter) {
\r
237 this.schedulerRegistryAdapter = schedulerRegistryAdapter;
\r
241 * Creates the LoginStrategy
\r
242 * @return instance of LoginStrategy
\r
245 public LoginStrategy loginStrategy() {
\r
247 return new LoginStrategyImpl();
\r