Support HTTPS service registration
[msb/java-sdk.git] / src / main / java / org / onap / msb / sdk / httpclient / builder / impl / ClientRetrofitObjectBuilder.java
index e7f7cd5..7b7c6af 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright 2017 ZTE, Inc. and others.
+ * Copyright 2017-2018 ZTE, Inc. and others.
  * 
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
  * in compliance with the License. You may obtain a copy of the License at
@@ -41,141 +41,138 @@ import retrofit2.Retrofit;
 public class ClientRetrofitObjectBuilder implements IRetrofitObjectBuilder {
 
 
-  private RetrofitServiceHandlerContext context;
+    private RetrofitServiceHandlerContext context;
 
 
-  public ClientRetrofitObjectBuilder(RetrofitServiceHandlerContext context) {
-    super();
-    this.context = context;
-  }
+    public ClientRetrofitObjectBuilder(RetrofitServiceHandlerContext context) {
+        super();
+        this.context = context;
+    }
 
 
-  /*
-   * (non-Javadoc)
-   * 
-   * @see
-   * com.zte.ums.zenap.httpclient.retrofit.builder.IRetrofitObjectBuilder#buildRetrofitObject(java.
-   * util.concurrent.atomic.AtomicReference)
-   */
-  @Override
-  public Map<ServiceHttpEndPointObject, Object> buildRetrofitObject(
-      AtomicReference<Map<ServiceHttpEndPointObject, Object>> endPointToRetrofitRef,
-      ServiceHttpEndPointObject lastEndPoint) throws RetrofitServiceRuntimeException {
+    /*
+     * (non-Javadoc)
+     
+     * @see
+     * com.zte.ums.zenap.httpclient.retrofit.builder.IRetrofitObjectBuilder#buildRetrofitObject(
+     * java. util.concurrent.atomic.AtomicReference)
+     */
+    @Override
+    public Map<ServiceHttpEndPointObject, Object> buildRetrofitObject(
+                    AtomicReference<Map<ServiceHttpEndPointObject, Object>> endPointToRetrofitRef,
+                    ServiceHttpEndPointObject lastEndPoint) throws RetrofitServiceRuntimeException {
 
-    Map<ServiceHttpEndPointObject, Object> srvEndPointToRetrofit = endPointToRetrofitRef.get();
-    if (srvEndPointToRetrofit == null) {
-      srvEndPointToRetrofit = new LinkedHashMap<>();
-      try {
+        Map<ServiceHttpEndPointObject, Object> srvEndPointToRetrofit = endPointToRetrofitRef.get();
+        if (srvEndPointToRetrofit == null) {
+            srvEndPointToRetrofit = new LinkedHashMap<>();
+            try {
 
 
-        ServiceHttpEndPointBeanObject srvhttpEndPointBeanObject =
-            context.getServiceHttpEndPointBeanObject();
+                ServiceHttpEndPointBeanObject srvhttpEndPointBeanObject = context.getServiceHttpEndPointBeanObject();
 
-        // MsbClientFactory msbClient = context.getLocator().getService(MsbClientFactory.class);
+                // MsbClientFactory msbClient =
+                // context.getLocator().getService(MsbClientFactory.class);
 
-        MicroServiceFullInfo fullInfo = null;
+                MicroServiceFullInfo fullInfo = null;
 
-        fullInfo =
-            context.getMsbClient().queryMicroServiceInfo(srvhttpEndPointBeanObject.getServiceName(),
-                srvhttpEndPointBeanObject.getServiceVersion());
+                fullInfo = context.getMsbClient().queryMicroServiceInfo(srvhttpEndPointBeanObject.getServiceName(),
+                                srvhttpEndPointBeanObject.getServiceVersion());
 
 
-        for (NodeInfo nodeInfo : fullInfo.getNodes()) {
+                for (NodeInfo nodeInfo : fullInfo.getNodes()) {
 
-          MicroServiceFullInfo cloneFullInfo = cloneFullInfo(fullInfo, nodeInfo);
+                    MicroServiceFullInfo cloneFullInfo = cloneFullInfo(fullInfo, nodeInfo);
 
-          ServiceHttpEndPointObject endPointObj =
-              new ServiceHttpEndPointObject(srvhttpEndPointBeanObject.getServiceName(),
-                  srvhttpEndPointBeanObject.getServiceVersion(), nodeInfo, cloneFullInfo);
+                    ServiceHttpEndPointObject endPointObj = new ServiceHttpEndPointObject(
+                                    srvhttpEndPointBeanObject.getServiceName(),
+                                    srvhttpEndPointBeanObject.getServiceVersion(), nodeInfo, cloneFullInfo);
 
-          // 目前支持http
-          String baseUrl = null;
-          if (fullInfo.getUrl() == null || fullInfo.getUrl().trim().length() == 0
-              || fullInfo.getUrl().equals("/")) {
-            baseUrl = String.format("http://%s:%s/", nodeInfo.getIp(), nodeInfo.getPort());
-          } else {
-            baseUrl = String.format("http://%s:%s%s/", nodeInfo.getIp(), nodeInfo.getPort(),
-                fullInfo.getUrl());
-          }
+                    // 目前支持http
+                    String baseUrl = null;
+                    if (fullInfo.getUrl() == null || fullInfo.getUrl().trim().length() == 0
+                                    || fullInfo.getUrl().equals("/")) {
+                        baseUrl = String.format("http://%s:%s/", nodeInfo.getIp(), nodeInfo.getPort());
+                    } else {
+                        baseUrl = String.format("http://%s:%s%s/", nodeInfo.getIp(), nodeInfo.getPort(),
+                                        fullInfo.getUrl());
+                    }
 
-          OkHttpClient httpClient = null;
+                    OkHttpClient httpClient = null;
 
-          if (context.getHttpClientConf() != null) {
-            if (srvhttpEndPointBeanObject.getClientProtocl().toLowerCase().equals("https")) {
-              httpClient =
-                  RetrofitServiceUtils.buildDefaultOkHttpsClient(context.getHttpClientConf());
-            } else {
-              httpClient =
-                  RetrofitServiceUtils.buildDefaultOkHttpClient(context.getHttpClientConf());
-            }
-          } else {
-            if (srvhttpEndPointBeanObject.getClientProtocl().toLowerCase().equals("https")) {
-              httpClient = RetrofitServiceUtils.buildDefaultOkHttpsClient(
-                  RetrofitServiceHandlerContext.getGlobalHttpClientConf());
-            } else {
-              httpClient = RetrofitServiceUtils.buildDefaultOkHttpClient(
-                  RetrofitServiceHandlerContext.getGlobalHttpClientConf());
-            }
-          }
+                    if (context.getHttpClientConf() != null) {
+                        if (srvhttpEndPointBeanObject.getClientProtocl().toLowerCase().equals("https")) {
+                            httpClient = RetrofitServiceUtils.buildDefaultOkHttpsClient(context.getHttpClientConf());
+                        } else {
+                            httpClient = RetrofitServiceUtils.buildDefaultOkHttpClient(context.getHttpClientConf());
+                        }
+                    } else {
+                        if (srvhttpEndPointBeanObject.getClientProtocl().toLowerCase().equals("https")) {
+                            httpClient = RetrofitServiceUtils.buildDefaultOkHttpsClient(
+                                            RetrofitServiceHandlerContext.getGlobalHttpClientConf());
+                        } else {
+                            httpClient = RetrofitServiceUtils.buildDefaultOkHttpClient(
+                                            RetrofitServiceHandlerContext.getGlobalHttpClientConf());
+                        }
+                    }
 
 
 
-          Retrofit retrofit = new Retrofit.Builder().client(httpClient).baseUrl(baseUrl)
-              .addConverterFactory(context.getConverterFactoryBuilder().buildConverterFactory())
-              .build();
+                    Retrofit retrofit = new Retrofit.Builder().client(httpClient).baseUrl(baseUrl)
+                                    .addConverterFactory(context.getConverterFactoryBuilder().buildConverterFactory())
+                                    .build();
 
-          srvEndPointToRetrofit.put(endPointObj,
-              retrofit.create(context.getRetrofitSrvInterfaceClazz()));
+                    srvEndPointToRetrofit.put(endPointObj, retrofit.create(context.getRetrofitSrvInterfaceClazz()));
 
-        }
+                }
 
-        if (srvEndPointToRetrofit.isEmpty()) {
-          throw new RetrofitServiceRuntimeException(
-              "can't find service in msb,serviceName:" + srvhttpEndPointBeanObject.getServiceName()
-                  + ",serviceVersion:" + srvhttpEndPointBeanObject.getServiceVersion());
-        }
+                if (srvEndPointToRetrofit.isEmpty()) {
+                    throw new RetrofitServiceRuntimeException("can't find service in msb,serviceName:"
+                                    + srvhttpEndPointBeanObject.getServiceName() + ",serviceVersion:"
+                                    + srvhttpEndPointBeanObject.getServiceVersion());
+                }
 
-        if (lastEndPoint != null) {
-          srvEndPointToRetrofit.remove(lastEndPoint);
-        }
+                if (lastEndPoint != null) {
+                    srvEndPointToRetrofit.remove(lastEndPoint);
+                }
 
-        if (srvEndPointToRetrofit.isEmpty()) {
-          throw new RetrofitServiceRuntimeException("can't find other service in msb,serviceName:"
-              + srvhttpEndPointBeanObject.getServiceName() + ",serviceVersion:"
-              + srvhttpEndPointBeanObject.getServiceVersion());
-        }
+                if (srvEndPointToRetrofit.isEmpty()) {
+                    throw new RetrofitServiceRuntimeException("can't find other service in msb,serviceName:"
+                                    + srvhttpEndPointBeanObject.getServiceName() + ",serviceVersion:"
+                                    + srvhttpEndPointBeanObject.getServiceVersion());
+                }
+
+                if (endPointToRetrofitRef.compareAndSet(null, srvEndPointToRetrofit)) {
+                    context.setLastUpdateMsbTime(System.currentTimeMillis());
+                }
+
+                return endPointToRetrofitRef.get();
 
-        if (endPointToRetrofitRef.compareAndSet(null, srvEndPointToRetrofit)) {
-          context.setLastUpdateMsbTime(System.currentTimeMillis());
-        }
 
-        return endPointToRetrofitRef.get();
+            } catch (Exception e) {
+                throw new RetrofitServiceRuntimeException("init Retrofit service map fail", e);
+            }
 
+        } else {
+            return endPointToRetrofitRef.get();
+        }
+    }
 
-      } catch (Exception e) {
-        throw new RetrofitServiceRuntimeException("init Retrofit service map fail", e);
-      }
 
-    } else {
-      return endPointToRetrofitRef.get();
+    private MicroServiceFullInfo cloneFullInfo(MicroServiceFullInfo fullInfo, NodeInfo nodeInfo) {
+
+        MicroServiceFullInfo cloneFuleInfo = new MicroServiceFullInfo();
+        cloneFuleInfo.setMetadata(fullInfo.getMetadata());
+        cloneFuleInfo.setProtocol(fullInfo.getProtocol());
+        cloneFuleInfo.setServiceName(fullInfo.getServiceName());
+        cloneFuleInfo.setStatus(fullInfo.getStatus());
+        cloneFuleInfo.setUrl(fullInfo.getUrl());
+        cloneFuleInfo.setVersion(fullInfo.getVersion());
+        cloneFuleInfo.setVisualRange(fullInfo.getVisualRange());
+        cloneFuleInfo.setEnable_ssl(fullInfo.isEnable_ssl());
+        Set<NodeInfo> nodeInfos = new HashSet<>();
+        nodeInfos.add(nodeInfo);
+        cloneFuleInfo.setNodes(nodeInfos);
+        return cloneFuleInfo;
     }
-  }
-
-
-  private MicroServiceFullInfo cloneFullInfo(MicroServiceFullInfo fullInfo, NodeInfo nodeInfo) {
-
-    MicroServiceFullInfo cloneFuleInfo = new MicroServiceFullInfo();
-    cloneFuleInfo.setMetadata(fullInfo.getMetadata());
-    cloneFuleInfo.setProtocol(fullInfo.getProtocol());
-    cloneFuleInfo.setServiceName(fullInfo.getServiceName());
-    cloneFuleInfo.setStatus(fullInfo.getStatus());
-    cloneFuleInfo.setUrl(fullInfo.getUrl());
-    cloneFuleInfo.setVersion(fullInfo.getVersion());
-    cloneFuleInfo.setVisualRange(fullInfo.getVisualRange());
-    Set<NodeInfo> nodeInfos = new HashSet<>();
-    nodeInfos.add(nodeInfo);
-    cloneFuleInfo.setNodes(nodeInfos);
-    return cloneFuleInfo;
-  }
 
 }