-/**
+/**
* ============LICENSE_START=======================================================
* org.onap.aai
* ================================================================================
*/
package org.onap.aai.sa.rest;
+import com.google.common.base.Strings;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
+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
-
+/**
+ * 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 static final String SEARCH_AUTH_POLICY_NAME = "search";
+
+ private static final String URI_SEGMENT_INDEXES = "indexes";
+ private static final String URI_SEGMENT_DOCUMENTS = "documents";
public enum Action {
POST,
GET,
PUT,
DELETE
- };
+ }
/**
* This method uses the contents of the supplied HTTP headers and request structures to populate the MDC Context
* @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 ((transId == null) || (transId.equals(""))) {
+ if (Strings.isNullOrEmpty(transId)) {
transId = UUID.randomUUID().toString();
}
}
-
String fromIp = (httpReq != null) ? httpReq.getRemoteHost() : "";
String fromApp = (headers != null) ? headers.getFirst("X-FromAppId") : "";
}
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) {
-
- // If the URI starts with a leading '/' character, remove it.
uri = uri.startsWith("/") ? uri.substring(1) : uri;
-
- // Now, tokenize the URI string.
String[] tokens = uri.split("/");
-
- return (tokens.length == 6) && (tokens[4].equals("indexes"));
-
+ return (tokens.length == 6) && (tokens[4].equals(URI_SEGMENT_INDEXES));
}
public static boolean validateDocumentUri(String uri, boolean requireId) {
-
- // If the URI starts with a leading '/' character, remove it.
uri = uri.startsWith("/") ? uri.substring(1) : uri;
-
- // Now, tokenize the URI string.
String[] tokens = uri.split("/");
if (requireId) {
- return (tokens.length == 8) && (tokens[4].equals("indexes") && (tokens[6].equals("documents")));
+ 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("indexes") && (tokens[6].equals("documents")));
+ && (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;
- // Now, tokenize the URI string.
String[] tokens = uri.split("/");
int i = 0;
for (String token : tokens) {
- if (token.equals("indexes")) {
- if (i + 1 < tokens.length) {
- return tokens[i + 1];
- }
+ if (token.equals(URI_SEGMENT_INDEXES) && i + 1 < tokens.length) {
+ return tokens[i + 1];
}
i++;
}
}
public static String extractIdFromUri(String uri) {
-
- // If the URI starts with a leading '/' character, remove it.
uri = uri.startsWith("/") ? uri.substring(1) : uri;
- // Now, tokenize the URI string.
String[] tokens = uri.split("/");
int i = 0;
for (String token : tokens) {
- if (token.equals("documents")) {
- if (i + 1 < tokens.length) {
- return tokens[i + 1];
- }
+ if (token.equals(URI_SEGMENT_DOCUMENTS) && i + 1 < tokens.length) {
+ return tokens[i + 1];
}
i++;
}
}
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";
- HttpStatus status = null;
-
try {
- status = HttpStatus.valueOf(httpStatusCode);
+ return HttpStatus.valueOf(httpStatusCode).getReasonPhrase();
} catch (IllegalArgumentException e) {
- }
-
-
- if (status == null) {
- switch (httpStatusCode) {
- case 207:
- statusString = "Multi Status";
- break;
- default:
+ if (207 == httpStatusCode) {
+ return "Multi-Status";
+ } else {
+ return "Unknown";
}
- } else {
- statusString = status.getReasonPhrase();
}
+ }
- return statusString;
+ public static boolean isSuccessStatusCode(int statusCode) {
+ return Family.familyOf(statusCode).equals(Family.SUCCESSFUL);
}
}