Update db process part
[vfc/nfvo/driver/vnfm/svnfm.git] / nokia / vnfmdriver / vfcadaptorservice / vfcadaptor / src / main / java / org / onap / vfc / nfvo / driver / vnfm / svnfm / http / client / HttpClientUtils.java
1 /*
2  * Copyright 2016-2017, Nokia Corporation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package org.onap.vfc.nfvo.driver.vnfm.svnfm.http.client;
18
19 import java.security.KeyManagementException;
20 import java.security.NoSuchAlgorithmException;
21 import java.security.cert.CertificateException;
22
23 import javax.net.ssl.SSLContext;
24 import javax.net.ssl.TrustManager;
25 import javax.net.ssl.X509TrustManager;
26
27 import org.apache.http.client.config.RequestConfig;
28 import org.apache.http.client.methods.HttpDelete;
29 import org.apache.http.client.methods.HttpGet;
30 import org.apache.http.client.methods.HttpPost;
31 import org.apache.http.client.methods.HttpRequestBase;
32 import org.apache.http.config.Registry;
33 import org.apache.http.config.RegistryBuilder;
34 import org.apache.http.conn.socket.ConnectionSocketFactory;
35 import org.apache.http.conn.socket.PlainConnectionSocketFactory;
36 import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
37 import org.apache.http.impl.client.HttpClientBuilder;
38 import org.apache.http.impl.client.HttpClients;
39 import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
40 import org.slf4j.Logger;
41 import org.slf4j.LoggerFactory;
42 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
43 import org.springframework.context.annotation.Bean;
44 import org.springframework.stereotype.Service;
45 import org.springframework.web.bind.annotation.RequestMethod;
46
47 @EnableAutoConfiguration
48 @Service
49 public class HttpClientUtils {
50         private static final Logger logger = LoggerFactory.getLogger(HttpClientUtils.class);
51         
52         @Bean
53         public static HttpClientBuilder createHttpClientBuilder() {
54                 org.apache.commons.httpclient.protocol.Protocol.unregisterProtocol("https"); 
55                 SSLContext sslcontext = null;
56                 try {
57                         sslcontext = createIgnoreVerifySSL();
58                 } catch (KeyManagementException | NoSuchAlgorithmException e) {
59                         logger.error("HttpRequestProcessor -> generateHttpClient exception. ", e);
60                 }  
61         
62         Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create()  
63             .register("http", PlainConnectionSocketFactory.INSTANCE)  
64             .register("https", new SSLConnectionSocketFactory(sslcontext))  
65             .build();  
66         
67         PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry);  
68         connManager.setMaxTotal(200);
69         connManager.setDefaultMaxPerRoute(50);
70         
71         HttpClientBuilder httpClientBuilder = HttpClients.custom().setConnectionManager(connManager);
72                 
73                 return httpClientBuilder;
74         }
75         
76         private static SSLContext createIgnoreVerifySSL() throws NoSuchAlgorithmException, KeyManagementException {  
77         SSLContext sc = SSLContext.getInstance("TLSv1.2");  
78       
79         X509TrustManager trustManager = new X509TrustManager() {  
80             @Override  
81             public void checkClientTrusted(  
82                     java.security.cert.X509Certificate[] paramArrayOfX509Certificate,  
83                     String paramString) throws CertificateException {  
84             }  
85       
86             @Override  
87             public void checkServerTrusted(  
88                     java.security.cert.X509Certificate[] paramArrayOfX509Certificate,  
89                     String paramString) throws CertificateException {  
90             }  
91       
92             @Override  
93             public java.security.cert.X509Certificate[] getAcceptedIssuers() {  
94                 return null;  
95             }  
96         };  
97       
98         sc.init(null, new TrustManager[] { trustManager }, null);  
99         return sc;  
100     }  
101         
102         public static HttpRequestBase getHttpRequest(RequestMethod requestMethod) {
103                 HttpRequestBase base = null;
104                 switch(requestMethod) {
105                         case GET:
106                                 base = new HttpGet();
107                                 break;
108                         case DELETE:
109                                 base = new HttpDelete();
110                                 break;
111                         default:
112                                 base = new HttpPost();
113                                 break;
114                 }
115                 RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(20000).setConnectTimeout(20000).setConnectionRequestTimeout(20000).build();
116                 base.setConfig(requestConfig);
117                 return base;
118         }
119 }