8459027f36315af7fb6a22351869bc3ce6b5098a
[clamp.git] / src / main / java / org / onap / clamp / clds / Application.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP CLAMP
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights
6  *                             reserved.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License"); 
9  * you may not use this file except in compliance with the License. 
10  * You may obtain a copy of the License at
11  * 
12  * http://www.apache.org/licenses/LICENSE-2.0
13  * 
14  * Unless required by applicable law or agreed to in writing, software 
15  * distributed under the License is distributed on an "AS IS" BASIS, 
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
17  * See the License for the specific language governing permissions and 
18  * limitations under the License.
19  * ============LICENSE_END============================================
20  * ===================================================================
21  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
22  */
23
24 package org.onap.clamp.clds;
25
26 import com.att.ajsc.common.utility.SystemPropertiesLoader;
27 import org.apache.camel.component.servlet.CamelHttpTransportServlet;
28 import org.camunda.bpm.spring.boot.starter.webapp.CamundaBpmWebappAutoConfiguration;
29 import org.springframework.boot.SpringApplication;
30 import org.springframework.boot.actuate.autoconfigure.ManagementWebSecurityAutoConfiguration;
31 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
32 import org.springframework.boot.autoconfigure.SpringBootApplication;
33 import org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration;
34 import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
35 import org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration;
36 import org.springframework.boot.builder.SpringApplicationBuilder;
37 import org.springframework.boot.web.servlet.ServletRegistrationBean;
38 import org.springframework.boot.web.support.SpringBootServletInitializer;
39 import org.springframework.context.annotation.Bean;
40 import org.springframework.context.annotation.ComponentScan;
41 import org.springframework.scheduling.annotation.EnableAsync;
42
43 import javax.ws.rs.client.Client;
44 import javax.ws.rs.client.ClientBuilder;
45 import java.util.ArrayList;
46 import java.util.Collection;
47
48 @SpringBootApplication
49 @ComponentScan(basePackages = {"org.onap.clamp.clds","com.att.ajsc"})
50 @EnableAutoConfiguration(exclude = {CamundaBpmWebappAutoConfiguration.class, HibernateJpaAutoConfiguration.class, JpaRepositoriesAutoConfiguration.class, SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class})
51 @EnableAsync
52 public class Application extends SpringBootServletInitializer {
53
54     private static final String CAMEL_SERVLET_NAME = "CamelServlet";
55     private static final String CAMEL_URL_MAPPING = "/restservices/clds/v1/*";
56
57     @Override
58     protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
59         return application.sources(Application.class);
60     }
61
62     public static void main(String[] args) throws Exception {
63         SystemPropertiesLoader.addSystemProperties();
64         SpringApplication.run(Application.class, args);
65     }
66
67     @Bean
68     public ServletRegistrationBean servletRegistrationBean() {
69         ServletRegistrationBean registration = new ServletRegistrationBean();
70         registration.setName(CAMEL_SERVLET_NAME);
71         registration.setServlet(new CamelHttpTransportServlet());
72         Collection<String> urlMappings = new ArrayList<>();
73         urlMappings.add(CAMEL_URL_MAPPING);
74         registration.setUrlMappings(urlMappings);
75         return registration;
76     }
77
78     @Bean
79     public Client restClient() {
80         return ClientBuilder.newClient();
81     }
82
83 }