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;
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;
58 public class CXFConfiguration {
60 private NetworkAdapterRest networkAdapterRest;
62 private TenantAdapterRest tenantAdapterRest;
64 private VnfAdapterRest vnfAdapterRest;
66 private VnfAdapterRestV2 vnfAdapterRestV2;
68 private VolumeAdapterRest volumeAdapterRest;
70 private VolumeAdapterRestV2 volumeAdapterRestV2;
72 private MsoNetworkAdapterImpl networkAdapterImpl;
74 private MsoNetworkAdapterAsyncImpl networkAdapterAsyncImpl;
76 private MsoTenantAdapterImpl tenantAdapterImpl;
78 private MsoVnfAdapterImpl vnfAdapterImpl;
80 private MsoVnfAdapterAsyncImpl vnfAdapterAsyncImpl;
82 private MsoVnfCloudifyAdapterImpl vnfCloudifyAdapterImpl;
84 private JettisonStyleMapperProvider jettisonStyleObjectMapper;
86 @Bean(name = Bus.DEFAULT_BUS_ID)
87 public SpringBus springBus() {
88 return new SpringBus();
92 public ServletRegistrationBean SoapDispatcherServlet() {
93 ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new CXFServlet(), "/services/*");
94 servletRegistrationBean.setName("services");
95 return servletRegistrationBean;
99 * network adapter endpoint
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());
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());
124 * tenant adapter endpoint
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());
138 * vnfAdapterEndpoint VnfAsyncAdapterEndpoint VnfCloudAdapterEndpoint
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());
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());
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());
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();
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;