2 * ============LICENSE_START=======================================================
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
7 * http://www.apache.org/licenses/LICENSE-2.0
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 * ============LICENSE_END=========================================================
17 package com.woorea.openstack.connector;
19 import java.io.IOException;
21 import javax.net.ssl.SSLContext;
22 import javax.ws.rs.client.Client;
23 import javax.ws.rs.client.ClientBuilder;
24 import javax.ws.rs.client.ClientRequestContext;
25 import javax.ws.rs.client.ClientRequestFilter;
26 import javax.ws.rs.ext.ContextResolver;
28 import org.codehaus.jackson.map.DeserializationConfig;
29 import org.codehaus.jackson.map.ObjectMapper;
30 import org.codehaus.jackson.map.SerializationConfig;
31 import org.codehaus.jackson.map.annotate.JsonRootName;
32 import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
33 import org.glassfish.jersey.SslConfigurator;
34 import org.glassfish.jersey.jackson.JacksonFeature;
36 public class OpenStack {
38 public static Client CLIENT;
40 public static ObjectMapper DEFAULT_MAPPER;
42 public static ObjectMapper WRAPPED_MAPPER;
48 private static void initialize() {
51 //class MyX509TrustManager implements X509TrustManager
52 TrustManager mytm[] = null;
53 KeyManager mykm[] = null;
56 mytm = new TrustManager[]{new MyX509TrustManager("./truststore_client", "asdfgh".toCharArray())};
57 mykm = new KeyManager[]{new MyX509KeyManager("./keystore_client", "asdfgh".toCharArray())};
58 } catch (Exception ex) {
62 SSLContext context = null;
63 context = SSLContext.getInstance("SSL");
64 context.init(mykm, mytm, null);
70 SSLContext context = null;
71 context = SSLContext.getInstance("SSL");
72 context.init(null, null, null);
74 SslConfigurator sslConfig = SslConfigurator.newInstance();
76 .trustStoreFile("./truststore_client")
77 .trustStorePassword("asdfgh")
79 .keyStoreFile("./keystore_client")
80 .keyPassword("asdfgh");
82 //old: CLIENT.property(ClientProperties.SSL_CONFIG, new SslConfig(context));
84 CLIENT = ClientBuilder.newBuilder().sslContext(sslConfig.createSSLContext()).build();
86 DEFAULT_MAPPER = new ObjectMapper();
88 DEFAULT_MAPPER.setSerializationInclusion(Inclusion.NON_NULL);
89 DEFAULT_MAPPER.enable(SerializationConfig.Feature.INDENT_OUTPUT);
90 DEFAULT_MAPPER.enable(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
91 DEFAULT_MAPPER.disable(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES);
92 DEFAULT_MAPPER.enable(DeserializationConfig.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
94 WRAPPED_MAPPER = new ObjectMapper();
96 WRAPPED_MAPPER.setSerializationInclusion(Inclusion.NON_NULL);
97 WRAPPED_MAPPER.enable(SerializationConfig.Feature.INDENT_OUTPUT);
98 WRAPPED_MAPPER.enable(SerializationConfig.Feature.WRAP_ROOT_VALUE);
99 WRAPPED_MAPPER.enable(DeserializationConfig.Feature.UNWRAP_ROOT_VALUE);
100 WRAPPED_MAPPER.enable(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
101 WRAPPED_MAPPER.disable(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES);
102 WRAPPED_MAPPER.enable(DeserializationConfig.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
104 CLIENT.register(new JacksonFeature()).register(new ContextResolver<ObjectMapper>() {
106 public ObjectMapper getContext(Class<?> type) {
107 return type.getAnnotation(JsonRootName.class) == null ? DEFAULT_MAPPER : WRAPPED_MAPPER;
112 CLIENT.register(new ClientRequestFilter() {
114 public void filter(ClientRequestContext requestContext) throws IOException {
115 requestContext.getHeaders().remove("Content-Language");
116 requestContext.getHeaders().remove("Content-Encoding");
120 } catch(Exception e) {
121 throw new RuntimeException(e.getMessage(), e);