Replaced all tabs with spaces in java and pom.xml
[so.git] / adapters / mso-openstack-adapters / src / main / java / org / onap / so / adapters / openstack / CXFConfiguration.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Modifications Copyright (C) 2018 IBM.
8  * ================================================================================
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  * 
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  * 
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  * ============LICENSE_END=========================================================
21  */
22
23 package org.onap.so.adapters.openstack;
24
25 import java.util.Arrays;
26 import javax.xml.ws.Endpoint;
27 import org.apache.cxf.Bus;
28 import org.apache.cxf.bus.spring.SpringBus;
29 import org.apache.cxf.endpoint.Server;
30 import org.apache.cxf.feature.LoggingFeature;
31 import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
32 import org.apache.cxf.jaxrs.swagger.Swagger2Feature;
33 import org.apache.cxf.jaxws.EndpointImpl;
34 import org.apache.cxf.transport.servlet.CXFServlet;
35 import org.onap.so.adapters.network.MsoNetworkAdapterAsyncImpl;
36 import org.onap.so.adapters.network.MsoNetworkAdapterImpl;
37 import org.onap.so.adapters.network.NetworkAdapterRest;
38 import org.onap.so.adapters.tenant.MsoTenantAdapterImpl;
39 import org.onap.so.adapters.tenant.TenantAdapterRest;
40 import org.onap.so.adapters.vnf.MsoVnfAdapterAsyncImpl;
41 import org.onap.so.adapters.vnf.MsoVnfAdapterImpl;
42 import org.onap.so.adapters.vnf.MsoVnfCloudifyAdapterImpl;
43 import org.onap.so.adapters.vnf.VnfAdapterRest;
44 import org.onap.so.adapters.vnf.VnfAdapterRestV2;
45 import org.onap.so.adapters.vnf.VolumeAdapterRest;
46 import org.onap.so.adapters.vnf.VolumeAdapterRestV2;
47 import org.onap.so.client.policy.JettisonStyleMapperProvider;
48 import org.onap.so.logging.cxf.interceptor.SOAPLoggingInInterceptor;
49 import org.onap.so.logging.cxf.interceptor.SOAPLoggingOutInterceptor;
50 import org.springframework.beans.factory.annotation.Autowired;
51 import org.springframework.boot.web.servlet.ServletRegistrationBean;
52 import org.springframework.context.annotation.Bean;
53 import org.springframework.context.annotation.Configuration;
54 import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
55
56
57 @Configuration
58 public class CXFConfiguration {
59     @Autowired
60     private NetworkAdapterRest networkAdapterRest;
61     @Autowired
62     private TenantAdapterRest tenantAdapterRest;
63     @Autowired
64     private VnfAdapterRest vnfAdapterRest;
65     @Autowired
66     private VnfAdapterRestV2 vnfAdapterRestV2;
67     @Autowired
68     private VolumeAdapterRest volumeAdapterRest;
69     @Autowired
70     private VolumeAdapterRestV2 volumeAdapterRestV2;
71     @Autowired
72     private MsoNetworkAdapterImpl networkAdapterImpl;
73     @Autowired
74     private MsoNetworkAdapterAsyncImpl networkAdapterAsyncImpl;
75     @Autowired
76     private MsoTenantAdapterImpl tenantAdapterImpl;
77     @Autowired
78     private MsoVnfAdapterImpl vnfAdapterImpl;
79     @Autowired
80     private MsoVnfAdapterAsyncImpl vnfAdapterAsyncImpl;
81     @Autowired
82     private MsoVnfCloudifyAdapterImpl vnfCloudifyAdapterImpl;
83     @Autowired
84     private JettisonStyleMapperProvider jettisonStyleObjectMapper;
85
86     @Bean(name = Bus.DEFAULT_BUS_ID)
87     public SpringBus springBus() {
88         return new SpringBus();
89     }
90
91     @Bean
92     public ServletRegistrationBean SoapDispatcherServlet() {
93         ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new CXFServlet(), "/services/*");
94         servletRegistrationBean.setName("services");
95         return servletRegistrationBean;
96     }
97
98     /*
99      * network adapter endpoint
100      */
101     @Bean
102     public Endpoint networkAdapterEndpoint() {
103         EndpointImpl endpoint = new EndpointImpl(springBus(), networkAdapterImpl);
104         endpoint.publish("/NetworkAdapter");
105         endpoint.setWsdlLocation("NetworkAdapter.wsdl");
106         endpoint.getInInterceptors().add(new SOAPLoggingInInterceptor());
107         endpoint.getOutInterceptors().add(new SOAPLoggingOutInterceptor());
108         endpoint.getOutFaultInterceptors().add(new SOAPLoggingOutInterceptor());
109         return endpoint;
110     }
111
112     @Bean
113     public Endpoint networkAdapterAsyncEndpoint() {
114         EndpointImpl endpoint = new EndpointImpl(springBus(), networkAdapterAsyncImpl);
115         endpoint.publish("/NetworkAdapterAsync");
116         endpoint.setWsdlLocation("NetworkAdapterAsync.wsdl");
117         endpoint.getInInterceptors().add(new SOAPLoggingInInterceptor());
118         endpoint.getOutInterceptors().add(new SOAPLoggingOutInterceptor());
119         endpoint.getOutFaultInterceptors().add(new SOAPLoggingOutInterceptor());
120         return endpoint;
121     }
122
123     /*
124      * tenant adapter endpoint
125      */
126     @Bean
127     public Endpoint tenantAdapterEndpoint() {
128         EndpointImpl endpoint = new EndpointImpl(springBus(), tenantAdapterImpl);
129         endpoint.publish("/TenantAdapter");
130         endpoint.setWsdlLocation("TenantAdapter.wsdl");
131         endpoint.getInInterceptors().add(new SOAPLoggingInInterceptor());
132         endpoint.getOutInterceptors().add(new SOAPLoggingOutInterceptor());
133         endpoint.getOutFaultInterceptors().add(new SOAPLoggingOutInterceptor());
134         return endpoint;
135     }
136
137     /*
138      * vnfAdapterEndpoint VnfAsyncAdapterEndpoint VnfCloudAdapterEndpoint
139      */
140     @Bean
141     public Endpoint vnfAdapterEndpoint() {
142         EndpointImpl endpoint = new EndpointImpl(springBus(), vnfAdapterImpl);
143         endpoint.publish("/VnfAdapter");
144         endpoint.setWsdlLocation("VnfAdapter.wsdl");
145         endpoint.getInInterceptors().add(new SOAPLoggingInInterceptor());
146         endpoint.getOutInterceptors().add(new SOAPLoggingOutInterceptor());
147         endpoint.getOutFaultInterceptors().add(new SOAPLoggingOutInterceptor());
148         return endpoint;
149     }
150
151     @Bean
152     public Endpoint VnfAsyncAdapterEndpoint() {
153         EndpointImpl endpoint = new EndpointImpl(springBus(), vnfAdapterAsyncImpl);
154         endpoint.publish("/VnfAsyncAdapter");
155         endpoint.setWsdlLocation("VnfAsyncAdapter.wsdl");
156         endpoint.getInInterceptors().add(new SOAPLoggingInInterceptor());
157         endpoint.getOutInterceptors().add(new SOAPLoggingOutInterceptor());
158         endpoint.getOutFaultInterceptors().add(new SOAPLoggingOutInterceptor());
159         return endpoint;
160     }
161
162     @Bean
163     public Endpoint VnfCloudAdapterEndpoint() {
164         EndpointImpl endpoint = new EndpointImpl(springBus(), vnfCloudifyAdapterImpl);
165         endpoint.publish("/VnfCloudifyAdapterImpl");
166         endpoint.setWsdlLocation("VnfCloudifyAdapterImpl.wsdl");
167         endpoint.getInInterceptors().add(new SOAPLoggingInInterceptor());
168         endpoint.getOutInterceptors().add(new SOAPLoggingOutInterceptor());
169         endpoint.getOutFaultInterceptors().add(new SOAPLoggingOutInterceptor());
170         return endpoint;
171     }
172
173     @Bean
174     public Server rsServer() {
175         JAXRSServerFactoryBean endpoint = new JAXRSServerFactoryBean();
176         endpoint.setBus(springBus());
177         endpoint.setServiceBeans(Arrays.<Object>asList(networkAdapterRest, tenantAdapterRest, vnfAdapterRest,
178                 vnfAdapterRestV2, volumeAdapterRest, volumeAdapterRestV2));
179         endpoint.setAddress("/rest");
180         endpoint.setFeatures(Arrays.asList(createSwaggerFeature(), new LoggingFeature()));
181         endpoint.setProvider(new JacksonJsonProvider(jettisonStyleObjectMapper.getMapper()));
182         return endpoint.create();
183     }
184
185
186     @Bean
187     public Swagger2Feature createSwaggerFeature() {
188         Swagger2Feature swagger2Feature = new Swagger2Feature();
189         swagger2Feature.setPrettyPrint(true);
190         swagger2Feature.setTitle("SO Orchestration Application");
191         swagger2Feature.setContact("The ONAP SO team");
192         swagger2Feature.setDescription("This project is the SO Orchestration Engine");
193         swagger2Feature.setVersion("1.0.0");
194         swagger2Feature.setResourcePackage(
195                 "org.onap.so.adapters.network,org.onap.so.adapters.tenant,org.onap.so.adapters.vnf");
196         swagger2Feature.setScan(true);
197         return swagger2Feature;
198     }
199 }