72c74ccaf949419db0b0ada2925227681d127269
[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
27 import javax.xml.ws.Endpoint;
28
29 import org.apache.cxf.Bus;
30 import org.apache.cxf.bus.spring.SpringBus;
31 import org.apache.cxf.endpoint.Server;
32 import org.apache.cxf.feature.LoggingFeature;
33 import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
34 import org.apache.cxf.jaxrs.swagger.Swagger2Feature;
35 import org.apache.cxf.jaxws.EndpointImpl;
36 import org.apache.cxf.transport.servlet.CXFServlet;
37 import org.onap.so.adapters.network.MsoNetworkAdapterAsyncImpl;
38 import org.onap.so.adapters.network.MsoNetworkAdapterImpl;
39 import org.onap.so.adapters.network.NetworkAdapterRest;
40 import org.onap.so.adapters.tenant.MsoTenantAdapterImpl;
41 import org.onap.so.adapters.tenant.TenantAdapterRest;
42 import org.onap.so.adapters.vnf.MsoVnfAdapterAsyncImpl;
43 import org.onap.so.adapters.vnf.MsoVnfAdapterImpl;
44 import org.onap.so.adapters.vnf.MsoVnfCloudifyAdapterImpl;
45 import org.onap.so.adapters.vnf.VnfAdapterRest;
46 import org.onap.so.adapters.vnf.VnfAdapterRestV2;
47 import org.onap.so.adapters.vnf.VolumeAdapterRest;
48 import org.onap.so.adapters.vnf.VolumeAdapterRestV2;
49 import org.onap.so.client.policy.JettisonStyleMapperProvider;
50
51 import org.onap.so.logging.cxf.interceptor.SOAPLoggingInInterceptor;
52 import org.onap.so.logging.cxf.interceptor.SOAPLoggingOutInterceptor;
53 import org.springframework.beans.factory.annotation.Autowired;
54 import org.springframework.boot.web.servlet.ServletRegistrationBean;
55 import org.springframework.context.annotation.Bean;
56 import org.springframework.context.annotation.Configuration;
57
58 import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
59
60
61 @Configuration
62 public class CXFConfiguration {
63         @Autowired
64         private NetworkAdapterRest networkAdapterRest;
65         @Autowired
66         private TenantAdapterRest tenantAdapterRest;
67         @Autowired
68         private VnfAdapterRest vnfAdapterRest;
69         @Autowired
70         private VnfAdapterRestV2 vnfAdapterRestV2;
71         @Autowired
72         private VolumeAdapterRest volumeAdapterRest;
73         @Autowired
74         private VolumeAdapterRestV2 volumeAdapterRestV2;
75         @Autowired
76         private MsoNetworkAdapterImpl networkAdapterImpl;
77         @Autowired
78         private MsoNetworkAdapterAsyncImpl networkAdapterAsyncImpl;
79         @Autowired
80         private MsoTenantAdapterImpl tenantAdapterImpl;
81         @Autowired
82         private MsoVnfAdapterImpl vnfAdapterImpl;
83         @Autowired
84         private MsoVnfAdapterAsyncImpl vnfAdapterAsyncImpl;
85         @Autowired
86         private MsoVnfCloudifyAdapterImpl vnfCloudifyAdapterImpl;
87         @Autowired
88         private JettisonStyleMapperProvider jettisonStyleObjectMapper;  
89
90     @Bean(name=Bus.DEFAULT_BUS_ID)
91     public SpringBus springBus() {      
92         return new SpringBus();
93     }   
94         
95         @Bean
96         public ServletRegistrationBean SoapDispatcherServlet() {
97                 ServletRegistrationBean servletRegistrationBean = 
98                                         new ServletRegistrationBean(new CXFServlet(), "/services/*");
99         servletRegistrationBean.setName("services");
100         return servletRegistrationBean;         
101         }
102
103         /*
104          * network adapter endpoint 
105          */     
106     @Bean
107     public Endpoint networkAdapterEndpoint() {
108         EndpointImpl endpoint = new EndpointImpl(springBus(), networkAdapterImpl);
109         endpoint.publish("/NetworkAdapter");
110         endpoint.setWsdlLocation("NetworkAdapter.wsdl");
111         endpoint.getInInterceptors().add(new SOAPLoggingInInterceptor());
112         endpoint.getOutInterceptors().add(new SOAPLoggingOutInterceptor());
113         endpoint.getOutFaultInterceptors().add(new SOAPLoggingOutInterceptor());
114         return endpoint;
115     }   
116         
117     @Bean
118     public Endpoint networkAdapterAsyncEndpoint() {
119         EndpointImpl endpoint = new EndpointImpl(springBus(), networkAdapterAsyncImpl);
120         endpoint.publish("/NetworkAdapterAsync");
121         endpoint.setWsdlLocation("NetworkAdapterAsync.wsdl");
122         endpoint.getInInterceptors().add(new SOAPLoggingInInterceptor());
123         endpoint.getOutInterceptors().add(new SOAPLoggingOutInterceptor());
124         endpoint.getOutFaultInterceptors().add(new SOAPLoggingOutInterceptor());
125         return endpoint;
126     }           
127         
128     /*
129      * tenant adapter endpoint
130      */
131     @Bean
132     public Endpoint tenantAdapterEndpoint() {
133         EndpointImpl endpoint = new EndpointImpl(springBus(), tenantAdapterImpl);
134         endpoint.publish("/TenantAdapter");
135         endpoint.setWsdlLocation("TenantAdapter.wsdl");
136         endpoint.getInInterceptors().add(new SOAPLoggingInInterceptor());
137         endpoint.getOutInterceptors().add(new SOAPLoggingOutInterceptor());
138         endpoint.getOutFaultInterceptors().add(new SOAPLoggingOutInterceptor());
139         return endpoint;
140     }
141     
142     /*
143      * vnfAdapterEndpoint
144      * VnfAsyncAdapterEndpoint
145      * VnfCloudAdapterEndpoint
146      */
147     @Bean
148     public Endpoint vnfAdapterEndpoint() {
149         EndpointImpl endpoint = new EndpointImpl(springBus(), vnfAdapterImpl);
150         endpoint.publish("/VnfAdapter");
151         endpoint.setWsdlLocation("VnfAdapter.wsdl");
152         endpoint.getInInterceptors().add(new SOAPLoggingInInterceptor());
153         endpoint.getOutInterceptors().add(new SOAPLoggingOutInterceptor());
154         endpoint.getOutFaultInterceptors().add(new SOAPLoggingOutInterceptor());
155         return endpoint;
156     }
157     
158     @Bean
159     public Endpoint VnfAsyncAdapterEndpoint() {
160         EndpointImpl endpoint = new EndpointImpl(springBus(), vnfAdapterAsyncImpl);
161         endpoint.publish("/VnfAsyncAdapter");
162         endpoint.setWsdlLocation("VnfAsyncAdapter.wsdl");
163         endpoint.getInInterceptors().add(new SOAPLoggingInInterceptor());
164         endpoint.getOutInterceptors().add(new SOAPLoggingOutInterceptor());
165         endpoint.getOutFaultInterceptors().add(new SOAPLoggingOutInterceptor());
166         return endpoint;
167     }
168     
169     @Bean
170     public Endpoint VnfCloudAdapterEndpoint() {
171         EndpointImpl endpoint = new EndpointImpl(springBus(), vnfCloudifyAdapterImpl);
172         endpoint.publish("/VnfCloudifyAdapterImpl");
173         endpoint.setWsdlLocation("VnfCloudifyAdapterImpl.wsdl");
174         endpoint.getInInterceptors().add(new SOAPLoggingInInterceptor());
175         endpoint.getOutInterceptors().add(new SOAPLoggingOutInterceptor());
176         endpoint.getOutFaultInterceptors().add(new SOAPLoggingOutInterceptor());
177         return endpoint;
178     }
179     
180     @Bean
181     public Server rsServer() {
182         JAXRSServerFactoryBean endpoint = new JAXRSServerFactoryBean();
183         endpoint.setBus(springBus());
184         endpoint.setServiceBeans(Arrays.<Object>asList(networkAdapterRest, 
185                                                                 tenantAdapterRest,
186                                                                 vnfAdapterRest,
187                                                                 vnfAdapterRestV2,
188                                                                 volumeAdapterRest,
189                                                                 volumeAdapterRestV2));
190         endpoint.setAddress("/rest");
191         endpoint.setFeatures(Arrays.asList(createSwaggerFeature(), new LoggingFeature()));
192         endpoint.setProvider(new JacksonJsonProvider(jettisonStyleObjectMapper.getMapper()));
193         return endpoint.create();
194     }   
195         
196         
197     @Bean
198     public Swagger2Feature createSwaggerFeature() {
199         Swagger2Feature swagger2Feature= new Swagger2Feature();
200         swagger2Feature.setPrettyPrint(true);
201         swagger2Feature.setTitle("SO Orchestration Application");
202         swagger2Feature.setContact("The ONAP SO team");
203         swagger2Feature.setDescription("This project is the SO Orchestration Engine");
204         swagger2Feature.setVersion("1.0.0");
205         swagger2Feature.setResourcePackage("org.onap.so.adapters.network,org.onap.so.adapters.tenant,org.onap.so.adapters.vnf");
206         swagger2Feature.setScan(true);
207         return swagger2Feature;
208     }   
209 }