f514cc8f39591b221488ae60b3b07a6b0fcec972
[so/libs.git] /
1 package com.woorea.openstack.connector;
2
3 import java.io.IOException;
4
5 import javax.net.ssl.SSLContext;
6 import javax.ws.rs.client.Client;
7 import javax.ws.rs.client.ClientBuilder;
8 import javax.ws.rs.client.ClientRequestContext;
9 import javax.ws.rs.client.ClientRequestFilter;
10 import javax.ws.rs.ext.ContextResolver;
11
12 import org.codehaus.jackson.map.DeserializationConfig;
13 import org.codehaus.jackson.map.ObjectMapper;
14 import org.codehaus.jackson.map.SerializationConfig;
15 import org.codehaus.jackson.map.annotate.JsonRootName;
16 import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
17 import org.glassfish.jersey.SslConfigurator;
18 import org.glassfish.jersey.jackson.JacksonFeature;
19
20 public class OpenStack {
21
22         public static Client CLIENT;
23         
24         public static ObjectMapper DEFAULT_MAPPER;
25         
26         public static ObjectMapper WRAPPED_MAPPER;
27         
28         static {
29                 initialize();
30         }
31         
32         private static void initialize() {
33                 
34                 /*
35                 //class MyX509TrustManager implements X509TrustManager
36                 TrustManager mytm[] = null;
37         KeyManager mykm[] = null;
38
39         try {
40             mytm = new TrustManager[]{new MyX509TrustManager("./truststore_client", "asdfgh".toCharArray())};
41             mykm = new KeyManager[]{new MyX509KeyManager("./keystore_client", "asdfgh".toCharArray())};
42         } catch (Exception ex) {
43
44         }
45                 
46                 SSLContext context = null;
47         context = SSLContext.getInstance("SSL");
48         context.init(mykm, mytm, null);
49                 
50                 */
51                 
52                 try {
53                         
54                         SSLContext context = null;
55             context = SSLContext.getInstance("SSL");
56             context.init(null, null, null);
57             
58             SslConfigurator sslConfig = SslConfigurator.newInstance();
59                         /*
60                     .trustStoreFile("./truststore_client")
61                     .trustStorePassword("asdfgh")
62
63                     .keyStoreFile("./keystore_client")
64                     .keyPassword("asdfgh");
65                     */
66                         //old: CLIENT.property(ClientProperties.SSL_CONFIG, new SslConfig(context));
67             
68             CLIENT = ClientBuilder.newBuilder().sslContext(sslConfig.createSSLContext()).build();
69                         
70                         DEFAULT_MAPPER = new ObjectMapper();
71                         
72                         DEFAULT_MAPPER.setSerializationInclusion(Inclusion.NON_NULL);
73                         DEFAULT_MAPPER.enable(SerializationConfig.Feature.INDENT_OUTPUT);
74                         DEFAULT_MAPPER.enable(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
75                         DEFAULT_MAPPER.disable(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES);
76                         DEFAULT_MAPPER.enable(DeserializationConfig.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
77                         
78                         WRAPPED_MAPPER = new ObjectMapper();
79                         
80                         WRAPPED_MAPPER.setSerializationInclusion(Inclusion.NON_NULL);
81                         WRAPPED_MAPPER.enable(SerializationConfig.Feature.INDENT_OUTPUT);
82                         WRAPPED_MAPPER.enable(SerializationConfig.Feature.WRAP_ROOT_VALUE);
83                         WRAPPED_MAPPER.enable(DeserializationConfig.Feature.UNWRAP_ROOT_VALUE);
84                         WRAPPED_MAPPER.enable(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
85                         WRAPPED_MAPPER.disable(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES);
86                         WRAPPED_MAPPER.enable(DeserializationConfig.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
87                         
88                         CLIENT.register(new JacksonFeature()).register(new ContextResolver<ObjectMapper>() {
89
90                                 public ObjectMapper getContext(Class<?> type) {
91                                         return type.getAnnotation(JsonRootName.class) == null ? DEFAULT_MAPPER : WRAPPED_MAPPER;
92                                 }
93                                 
94                         });
95                         
96                         CLIENT.register(new ClientRequestFilter() {
97                                 
98                                 public void filter(ClientRequestContext requestContext) throws IOException {
99                                         requestContext.getHeaders().remove("Content-Language");
100                                         requestContext.getHeaders().remove("Content-Encoding");
101                                 }
102                         });
103                         
104                 } catch(Exception e) {
105                         throw new RuntimeException(e.getMessage(), e);
106                 }
107                 
108         }
109
110 }