2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.so.adapters.openstack;
23 import java.util.Arrays;
25 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.logger.MsoLogger;
49 import org.springframework.beans.factory.annotation.Autowired;
50 import org.springframework.boot.web.servlet.ServletRegistrationBean;
51 import org.springframework.context.annotation.Bean;
52 import org.springframework.context.annotation.Configuration;
54 import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
58 public class CXFConfiguration {
59 private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.RA, CXFConfiguration.class);
62 private NetworkAdapterRest networkAdapterRest;
64 private TenantAdapterRest tenantAdapterRest;
66 private VnfAdapterRest vnfAdapterRest;
68 private VnfAdapterRestV2 vnfAdapterRestV2;
70 private VolumeAdapterRest volumeAdapterRest;
72 private VolumeAdapterRestV2 volumeAdapterRestV2;
74 private MsoNetworkAdapterImpl networkAdapterImpl;
76 private MsoNetworkAdapterAsyncImpl networkAdapterAsyncImpl;
78 private MsoTenantAdapterImpl tenantAdapterImpl;
80 private MsoVnfAdapterImpl vnfAdapterImpl;
82 private MsoVnfAdapterAsyncImpl vnfAdapterAsyncImpl;
84 private MsoVnfCloudifyAdapterImpl vnfCloudifyAdapterImpl;
86 private JettisonStyleMapperProvider jettisonStyleObjectMapper;
89 @Bean(name=Bus.DEFAULT_BUS_ID)
90 public SpringBus springBus() {
91 return new SpringBus();
95 public ServletRegistrationBean SoapDispatcherServlet() {
96 ServletRegistrationBean servletRegistrationBean =
97 new ServletRegistrationBean(new CXFServlet(), "/services/*");
98 servletRegistrationBean.setName("services");
99 return servletRegistrationBean;
103 * network adapter endpoint
106 public Endpoint networkAdapterEndpoint() {
107 EndpointImpl endpoint = new EndpointImpl(springBus(), networkAdapterImpl);
108 endpoint.publish("/NetworkAdapter");
109 endpoint.setWsdlLocation("NetworkAdapter.wsdl");
114 public Endpoint networkAdapterAsyncEndpoint() {
115 EndpointImpl endpoint = new EndpointImpl(springBus(), networkAdapterAsyncImpl);
116 endpoint.publish("/NetworkAdapterAsync");
117 endpoint.setWsdlLocation("NetworkAdapterAsync.wsdl");
122 * tenant adapter endpoint
125 public Endpoint tenantAdapterEndpoint() {
126 EndpointImpl endpoint = new EndpointImpl(springBus(), tenantAdapterImpl);
127 endpoint.publish("/TenantAdapter");
128 endpoint.setWsdlLocation("TenantAdapter.wsdl");
134 * VnfAsyncAdapterEndpoint
135 * VnfCloudAdapterEndpoint
138 public Endpoint vnfAdapterEndpoint() {
139 EndpointImpl endpoint = new EndpointImpl(springBus(), vnfAdapterImpl);
140 endpoint.publish("/VnfAdapter");
141 endpoint.setWsdlLocation("VnfAdapter.wsdl");
146 public Endpoint VnfAsyncAdapterEndpoint() {
147 EndpointImpl endpoint = new EndpointImpl(springBus(), vnfAdapterAsyncImpl);
148 endpoint.publish("/VnfAsyncAdapter");
149 endpoint.setWsdlLocation("VnfAsyncAdapter.wsdl");
154 public Endpoint VnfCloudAdapterEndpoint() {
155 EndpointImpl endpoint = new EndpointImpl(springBus(), vnfCloudifyAdapterImpl);
156 endpoint.publish("/VnfCloudifyAdapterImpl");
157 endpoint.setWsdlLocation("VnfCloudifyAdapterImpl.wsdl");
162 public Server rsServer() {
163 JAXRSServerFactoryBean endpoint = new JAXRSServerFactoryBean();
164 endpoint.setBus(springBus());
165 endpoint.setServiceBeans(Arrays.<Object>asList(networkAdapterRest,
170 volumeAdapterRestV2));
171 endpoint.setAddress("/rest");
172 endpoint.setFeatures(Arrays.asList(createSwaggerFeature(), new LoggingFeature()));
173 endpoint.setProvider(new JacksonJsonProvider(jettisonStyleObjectMapper.getMapper()));
174 return endpoint.create();
179 public Swagger2Feature createSwaggerFeature() {
180 Swagger2Feature swagger2Feature= new Swagger2Feature();
181 swagger2Feature.setPrettyPrint(true);
182 swagger2Feature.setTitle("SO Orchestration Application");
183 swagger2Feature.setContact("The ONAP SO team");
184 swagger2Feature.setDescription("This project is the SO Orchestration Engine");
185 swagger2Feature.setVersion("1.0.0");
186 swagger2Feature.setResourcePackage("org.onap.so.adapters.network,org.onap.so.adapters.tenant,org.onap.so.adapters.vnf");
187 swagger2Feature.setScan(true);
188 return swagger2Feature;