static {
    DEFAULT_MAPPER = new ObjectMapper();

    DEFAULT_MAPPER.setSerializationInclusion(Inclusion.NON_NULL);
    DEFAULT_MAPPER.enable(SerializationConfig.Feature.INDENT_OUTPUT);
    DEFAULT_MAPPER.enable(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY);

    WRAPPED_MAPPER = new ObjectMapper();

    WRAPPED_MAPPER.setSerializationInclusion(Inclusion.NON_NULL);
    WRAPPED_MAPPER.enable(SerializationConfig.Feature.INDENT_OUTPUT);
    WRAPPED_MAPPER.enable(SerializationConfig.Feature.WRAP_ROOT_VALUE);
    WRAPPED_MAPPER.enable(DeserializationConfig.Feature.UNWRAP_ROOT_VALUE);
    WRAPPED_MAPPER.enable(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY);

    providerFactory = new OpenStackProviderFactory();
  }
  private static void initialize() {

    /*
    //class MyX509TrustManager implements X509TrustManager
    TrustManager mytm[] = null;
          KeyManager mykm[] = null;

          try {
              mytm = new TrustManager[]{new MyX509TrustManager("./truststore_client", "asdfgh".toCharArray())};
              mykm = new KeyManager[]{new MyX509KeyManager("./keystore_client", "asdfgh".toCharArray())};
          } catch (Exception ex) {

          }

    SSLContext context = null;
          context = SSLContext.getInstance("SSL");
          context.init(mykm, mytm, null);

    */

    try {
      CLIENT = ClientBuilder.newClient();

      SSLContext context = null;
      context = SSLContext.getInstance("SSL");
      context.init(null, null, null);
      CLIENT.property(ClientProperties.SSL_CONFIG, new SslConfig(context));

      DEFAULT_MAPPER = new ObjectMapper();

      DEFAULT_MAPPER.setSerializationInclusion(Inclusion.NON_NULL);
      DEFAULT_MAPPER.enable(SerializationConfig.Feature.INDENT_OUTPUT);
      DEFAULT_MAPPER.enable(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY);

      WRAPPED_MAPPER = new ObjectMapper();

      WRAPPED_MAPPER.setSerializationInclusion(Inclusion.NON_NULL);
      WRAPPED_MAPPER.enable(SerializationConfig.Feature.INDENT_OUTPUT);
      WRAPPED_MAPPER.enable(SerializationConfig.Feature.WRAP_ROOT_VALUE);
      WRAPPED_MAPPER.enable(DeserializationConfig.Feature.UNWRAP_ROOT_VALUE);
      WRAPPED_MAPPER.enable(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY);

      CLIENT
          .register(new JacksonFeature())
          .register(
              new ContextResolver<ObjectMapper>() {

                public ObjectMapper getContext(Class<?> type) {
                  return type.getAnnotation(JsonRootName.class) == null
                      ? DEFAULT_MAPPER
                      : WRAPPED_MAPPER;
                }
              });

      CLIENT.register(
          new ClientRequestFilter() {

            public void filter(ClientRequestContext requestContext) throws IOException {
              requestContext.getHeaders().remove("Content-Language");
              requestContext.getHeaders().remove("Content-Encoding");
            }
          });

    } catch (Exception e) {
      throw new RuntimeException(e.getMessage(), e);
    }
  }