Merge 1806 code of vid-common
[vid.git] / vid-app-common / src / main / java / org / onap / vid / controllers / WebConfig.java
1 package org.onap.vid.controllers;
2
3 import com.fasterxml.jackson.databind.ObjectMapper;
4 import org.onap.vid.aai.*;
5 import org.onap.vid.aai.model.PortDetailsTranslator;
6 import org.onap.vid.aai.util.AAIRestInterface;
7 import org.onap.vid.aai.util.HttpsAuthClient;
8 import org.onap.vid.asdc.AsdcClient;
9 import org.onap.vid.asdc.parser.ToscaParserImpl2;
10 import org.onap.vid.asdc.rest.RestfulAsdcClient;
11 import org.onap.vid.exceptions.GenericUncheckedException;
12 import org.onap.vid.properties.AsdcClientConfiguration;
13 import org.onap.vid.services.*;
14 import org.springframework.beans.factory.annotation.Qualifier;
15 import org.springframework.context.annotation.Bean;
16 import org.springframework.context.annotation.Configuration;
17 import org.togglz.core.manager.FeatureManager;
18
19 import javax.net.ssl.SSLContext;
20 import javax.servlet.ServletContext;
21 import javax.ws.rs.client.Client;
22 import javax.ws.rs.client.ClientBuilder;
23 import java.io.File;
24 import java.net.URI;
25 import java.net.URISyntaxException;
26 import java.security.KeyManagementException;
27 import java.security.NoSuchAlgorithmException;
28
29 @Configuration
30 public class WebConfig {
31
32     /**
33      * Gets the object mapper.
34      *
35      * @return the object mapper
36      */
37     @Bean
38     public ObjectMapper getObjectMapper() {
39         return new ObjectMapper();
40     }
41
42
43     @Bean
44     public VidService vidService(AsdcClient asdcClient, FeatureManager featureManager) {
45         return new VidServiceImpl(asdcClient, featureManager);
46     }
47
48     @Bean
49     public AaiService getAaiService() {
50         return new AaiServiceImpl();
51     }
52
53     @Bean
54     public AaiResponseTranslator aaiResponseTranslator() {
55         return new AaiResponseTranslator();
56     }
57
58     @Bean
59     public PortDetailsTranslator portDetailsTranslator() {
60         return new PortDetailsTranslator();
61     }
62
63     @Bean
64     public AaiClientInterface getAaiRestInterface(@Qualifier("aaiRestInterface") AAIRestInterface restController, PortDetailsTranslator portsDetailsTranslator) {
65         return new AaiClient(restController, portsDetailsTranslator);
66     }
67
68     @Bean(name = "aaiRestInterface")
69     public AAIRestInterface aaiRestInterface(HttpsAuthClient httpsAuthClientFactory) {
70         return new AAIRestInterface(httpsAuthClientFactory);
71     }
72
73     @Bean
74     public PombaRestInterface getPombaRestInterface(HttpsAuthClient httpsAuthClientFactory) {
75         return new PombaRestInterface(httpsAuthClientFactory);
76     }
77
78     @Bean
79     public HttpsAuthClient httpsAuthClientFactory(ServletContext servletContext) {
80         final String certFilePath = new File(servletContext.getRealPath("/WEB-INF/cert/")).getAbsolutePath();
81         return new HttpsAuthClient(certFilePath);
82     }
83
84     @Bean
85     public AsdcClient asdcClient(AsdcClientConfiguration asdcClientConfig) {
86
87         final String protocol = asdcClientConfig.getAsdcClientProtocol();
88         final String host = asdcClientConfig.getAsdcClientHost();
89         final int port = asdcClientConfig.getAsdcClientPort();
90         final String auth = asdcClientConfig.getAsdcClientAuth();
91         Client cl = null;
92         if (protocol.equalsIgnoreCase("https")) {
93             try {
94                 SSLContext ctx = SSLContext.getInstance("TLSv1.2");
95                 ctx.init(null, null, null);
96                 cl = ClientBuilder.newBuilder().sslContext(ctx).build();
97             } catch (NoSuchAlgorithmException n) {
98                 throw new GenericUncheckedException("SDC Client could not be instantiated due to unsupported protocol TLSv1.2", n);
99             } catch (KeyManagementException k) {
100                 throw new GenericUncheckedException("SDC Client could not be instantiated due to a key management exception", k);
101             }
102         } else {
103             cl = ClientBuilder.newBuilder().build();
104         }
105
106         try {
107             final URI uri = new URI(protocol + "://" + host + ":" + port + "/");
108             return new RestfulAsdcClient.Builder(cl, uri)
109                     .auth(auth)
110                     .build();
111         } catch (URISyntaxException e) {
112             throw new GenericUncheckedException("SDC Client could not be instantiated due to a syntax error in the URI", e);
113         }
114     }
115
116     @Bean
117     public ToscaParserImpl2 getToscaParser() {
118         return new ToscaParserImpl2();
119     }
120
121     @Bean
122     public PombaService getVerifyServiceInstanceService() {
123         return new PombaServiceImpl();
124     }
125
126     @Bean
127     public PombaClientInterface getVerifyServiceInstanceClientInterface() {
128         return new PombaClientImpl();
129     }
130 }