Fix minor code smells
[aai/search-data-service.git] / src / main / java / org / onap / aai / sa / rest / ApiUtils.java
index fc46410..f240561 100644 (file)
@@ -1,9 +1,9 @@
-/**
+/**
  * ============LICENSE_START=======================================================
  * org.onap.aai
  * ================================================================================
- * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
- * Copyright © 2017 Amdocs
+ * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017-2018 Amdocs
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * ============LICENSE_END=========================================================
- *
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
  */
 package org.onap.aai.sa.rest;
 
-import org.onap.aai.sa.searchdbabstraction.util.SearchDbConstants;
-import org.onap.aai.cl.mdc.MdcContext;
-import org.slf4j.MDC;
-
+import com.google.common.base.Strings;
 import java.util.UUID;
 import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.Response;
-
+import javax.ws.rs.core.Response.Status.Family;
+import org.onap.aai.cl.mdc.MdcContext;
+import org.onap.aai.sa.searchdbabstraction.util.SearchDbConstants;
+import org.slf4j.MDC;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
 
+/**
+ * Spring Imports.
+ *
+ */
 public class ApiUtils {
 
-  public static final String SEARCH_AUTH_POLICY_NAME = "search";
-  public static final String URL_PREFIX = "services/search-data-service/v1/search";
-
-  public enum Action {
-    POST, GET, PUT, DELETE
-  }
-
-  ;
+    public static final String URL_PREFIX = "services/search-data-service/v1/search";
+    public static final String SEARCH_AUTH_POLICY_NAME = "search";
 
+    private static final String URI_SEGMENT_INDEXES = "indexes";
+    private static final String URI_SEGMENT_DOCUMENTS = "documents";
 
-  /**
-   * This method uses the contents of the supplied HTTP headers and request
-   * structures to populate the MDC Context used for logging purposes.
-   *
-   * @param httpReq - HTTP request structure.
-   * @param headers - HTTP headers
-   */
-  protected static void initMdcContext(HttpServletRequest httpReq, HttpHeaders headers) {
-
-    // Auto generate a transaction if we were not provided one.
-    String transId = null;
-    if (headers != null) {
-      transId = headers.getRequestHeaders().getFirst("X-TransactionId");
-
-      if ((transId == null) || (transId.equals(""))) {
-        transId = UUID.randomUUID().toString();
-      }
+    public enum Action {
+        POST,
+        GET,
+        PUT,
+        DELETE
     }
 
-    String fromIp = (httpReq != null) ? httpReq.getRemoteAddr() : "";
-    String fromApp = (headers != null) ? headers.getRequestHeaders().getFirst("X-FromAppId") : "";
-
-    MdcContext.initialize(transId, SearchDbConstants.SDB_SERVICE_NAME, "", fromApp, fromIp);
-  }
-
-
-  protected static void clearMdcContext() {
-    MDC.clear();
-  }
-
-  public static String buildIndexUri(String index) {
-
-    return (URL_PREFIX + "/indexes/") + index;
-  }
-
-  public static String buildDocumentUri(String index, String documentId) {
-
-    return buildIndexUri(index) + "/documents/" + documentId;
-  }
-
-  public static boolean validateIndexUri(String uri) {
+    /**
+     * This method uses the contents of the supplied HTTP headers and request structures to populate the MDC Context
+     * used for logging purposes.
+     *
+     * @param httpReq - HTTP request structure.
+     * @param headers - HTTP headers
+     */
+    protected static void initMdcContext(HttpServletRequest httpReq, HttpHeaders headers) {
+        // Auto generate a transaction if we were not provided one.
+        String transId = null;
+        if (headers != null) {
+            transId = headers.getFirst("X-TransactionId");
+            if (Strings.isNullOrEmpty(transId)) {
+                transId = UUID.randomUUID().toString();
+            }
+        }
 
-    // If the URI starts with a leading '/' character, remove it.
-    uri = uri.startsWith("/") ? uri.substring(1) : uri;
+        String fromIp = (httpReq != null) ? httpReq.getRemoteHost() : "";
+        String fromApp = (headers != null) ? headers.getFirst("X-FromAppId") : "";
 
-    // Now, tokenize the URI string.
-    String[] tokens = uri.split("/");
+        MdcContext.initialize(transId, SearchDbConstants.SDB_SERVICE_NAME, "", fromApp, fromIp);
+    }
 
-    return (tokens.length == 6) && (tokens[4].equals("indexes"));
+    protected static void clearMdcContext() {
+        MDC.clear();
+    }
 
-  }
+    public static String buildIndexUri(String index) {
+        return (URL_PREFIX + "/indexes/") + index;
+    }
 
-  public static boolean validateDocumentUri(String uri, boolean requireId) {
+    public static String buildDocumentUri(String index, String documentId) {
+        return buildIndexUri(index) + "/documents/" + documentId;
+    }
 
-    // If the URI starts with a leading '/' character, remove it.
-    uri = uri.startsWith("/") ? uri.substring(1) : uri;
+    public static boolean validateIndexUri(String uri) {
+        uri = uri.startsWith("/") ? uri.substring(1) : uri;
+        String[] tokens = uri.split("/");
+        return (tokens.length == 6) && (tokens[4].equals(URI_SEGMENT_INDEXES));
+    }
 
-    // Now, tokenize the URI string.
-    String[] tokens = uri.split("/");
+    public static boolean validateDocumentUri(String uri, boolean requireId) {
+        uri = uri.startsWith("/") ? uri.substring(1) : uri;
+        String[] tokens = uri.split("/");
 
-    if (requireId) {
-      return (tokens.length == 8) && (tokens[4].equals("indexes")
-          && (tokens[6].equals("documents")));
-    } else {
-      return ((tokens.length == 8) || (tokens.length == 7))
-          && (tokens[4].equals("indexes") && (tokens[6].equals("documents")));
+        if (requireId) {
+            return (tokens.length == 8)
+                    && (tokens[4].equals(URI_SEGMENT_INDEXES) && (tokens[6].equals(URI_SEGMENT_DOCUMENTS)));
+        } else {
+            return ((tokens.length == 8) || (tokens.length == 7))
+                    && (tokens[4].equals(URI_SEGMENT_INDEXES) && (tokens[6].equals(URI_SEGMENT_DOCUMENTS)));
+        }
     }
-  }
-
-  public static String extractIndexFromUri(String uri) {
 
-    // If the URI starts with a leading '/' character, remove it.
-    uri = uri.startsWith("/") ? uri.substring(1) : uri;
+    public static String extractIndexFromUri(String uri) {
+        uri = uri.startsWith("/") ? uri.substring(1) : uri;
 
-    // Now, tokenize the URI string.
-    String[] tokens = uri.split("/");
+        String[] tokens = uri.split("/");
 
-    int i = 0;
-    for (String token : tokens) {
-      if (token.equals("indexes")) {
-        if (i + 1 < tokens.length) {
-          return tokens[i + 1];
+        int i = 0;
+        for (String token : tokens) {
+            if (token.equals(URI_SEGMENT_INDEXES) && i + 1 < tokens.length) {
+                return tokens[i + 1];
+            }
+            i++;
         }
-      }
-      i++;
+
+        return null;
     }
 
-    return null;
-  }
+    public static String extractIdFromUri(String uri) {
+        uri = uri.startsWith("/") ? uri.substring(1) : uri;
 
-  public static String extractIdFromUri(String uri) {
+        String[] tokens = uri.split("/");
 
-    // If the URI starts with a leading '/' character, remove it.
-    uri = uri.startsWith("/") ? uri.substring(1) : uri;
+        int i = 0;
+        for (String token : tokens) {
+            if (token.equals(URI_SEGMENT_DOCUMENTS) && i + 1 < tokens.length) {
+                return tokens[i + 1];
+            }
+            i++;
+        }
 
-    // Now, tokenize the URI string.
-    String[] tokens = uri.split("/");
+        return null;
+    }
 
-    int i = 0;
-    for (String token : tokens) {
-      if (token.equals("documents")) {
-        if (i + 1 < tokens.length) {
-          return tokens[i + 1];
+    public static String getHttpStatusString(int httpStatusCode) {
+        try {
+            return HttpStatus.valueOf(httpStatusCode).getReasonPhrase();
+        } catch (IllegalArgumentException e) {
+            if (207 == httpStatusCode) {
+                return "Multi-Status";
+            } else {
+                return "Unknown";
+            }
         }
-      }
-      i++;
     }
 
-    return null;
-  }
-
-  public static String getHttpStatusString(int httpStatusCode) {
-    // Some of the status codes we use are still in draft state in the standards, and are not
-    // recognized in the javax library.  We need to manually translate these to human-readable
-    // strings.
-    String statusString = "Unknown";
-    Response.Status status = Response.Status.fromStatusCode(httpStatusCode);
-
-    if (status == null) {
-      switch (httpStatusCode) {
-        case 207:
-          statusString = "Multi Status";
-          break;
-        default:
-      }
-    } else {
-      statusString = status.toString();
+    public static boolean isSuccessStatusCode(int statusCode) {
+        return Family.familyOf(statusCode).equals(Family.SUCCESSFUL);
     }
-
-    return statusString;
-  }
 }