2 * ============LICENSE_START=======================================================
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
13 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
23 package org.onap.so.adapters.openstack;
25 import java.util.Arrays;
27 import javax.xml.ws.Endpoint;
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 import org.onap.so.logger.MsoLogger;
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;
58 import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
62 public class CXFConfiguration {
64 private NetworkAdapterRest networkAdapterRest;
66 private TenantAdapterRest tenantAdapterRest;
68 private VnfAdapterRest vnfAdapterRest;
70 private VnfAdapterRestV2 vnfAdapterRestV2;
72 private VolumeAdapterRest volumeAdapterRest;
74 private VolumeAdapterRestV2 volumeAdapterRestV2;
76 private MsoNetworkAdapterImpl networkAdapterImpl;
78 private MsoNetworkAdapterAsyncImpl networkAdapterAsyncImpl;
80 private MsoTenantAdapterImpl tenantAdapterImpl;
82 private MsoVnfAdapterImpl vnfAdapterImpl;
84 private MsoVnfAdapterAsyncImpl vnfAdapterAsyncImpl;
86 private MsoVnfCloudifyAdapterImpl vnfCloudifyAdapterImpl;
88 private JettisonStyleMapperProvider jettisonStyleObjectMapper;
90 @Bean(name=Bus.DEFAULT_BUS_ID)
91 public SpringBus springBus() {
92 return new SpringBus();
96 public ServletRegistrationBean SoapDispatcherServlet() {
97 ServletRegistrationBean servletRegistrationBean =
98 new ServletRegistrationBean(new CXFServlet(), "/services/*");
99 servletRegistrationBean.setName("services");
100 return servletRegistrationBean;
104 * network adapter endpoint
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());
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());
129 * tenant adapter endpoint
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());
144 * VnfAsyncAdapterEndpoint
145 * VnfCloudAdapterEndpoint
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());
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());
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());
181 public Server rsServer() {
182 JAXRSServerFactoryBean endpoint = new JAXRSServerFactoryBean();
183 endpoint.setBus(springBus());
184 endpoint.setServiceBeans(Arrays.<Object>asList(networkAdapterRest,
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();
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;