diff options
author | Daniel Silverthorn <daniel.silverthorn@amdocs.com> | 2017-05-04 13:08:13 -0400 |
---|---|---|
committer | Daniel Silverthorn <daniel.silverthorn@amdocs.com> | 2017-05-09 12:05:00 -0400 |
commit | c75a08a749718fc5ef25f8c2f826939be657c0bf (patch) | |
tree | e2a2e29f8ebc54f6e2eeac6df63d8ca2189d39a0 /src/main/java/org/openecomp/sa/rest/ApiUtils.java | |
parent | 30b899f10fb4fe638a973061bad6f8ba87003494 (diff) |
Initial search service commit
Changing common logging dep
Change-Id: I454697a9df0ee63f43d7b7d2a3818fe2d9b7bcf2
Signed-off-by: Daniel Silverthorn <daniel.silverthorn@amdocs.com>
Diffstat (limited to 'src/main/java/org/openecomp/sa/rest/ApiUtils.java')
-rw-r--r-- | src/main/java/org/openecomp/sa/rest/ApiUtils.java | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/src/main/java/org/openecomp/sa/rest/ApiUtils.java b/src/main/java/org/openecomp/sa/rest/ApiUtils.java new file mode 100644 index 0000000..4c043d4 --- /dev/null +++ b/src/main/java/org/openecomp/sa/rest/ApiUtils.java @@ -0,0 +1,180 @@ +/** + * ============LICENSE_START======================================================= + * Search Data Service + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. + * Copyright © 2017 Amdocs + * All rights reserved. + * ================================================================================ + * 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 ati + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + * + * ECOMP and OpenECOMP are trademarks + * and service marks of AT&T Intellectual Property. + */ +package org.openecomp.sa.rest; + +import org.openecomp.cl.mdc.MdcContext; +import org.openecomp.sa.searchdbabstraction.util.SearchDbConstants; +import org.slf4j.MDC; + +import java.util.UUID; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.core.HttpHeaders; +import javax.ws.rs.core.Response; + + +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 + } + + ; + + + /** + * 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(); + } + } + + 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) { + + // 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")); + + } + + 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"))); + } else { + return ((tokens.length == 8) || (tokens.length == 7)) + && (tokens[4].equals("indexes") && (tokens[6].equals("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]; + } + } + i++; + } + + return null; + } + + 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]; + } + } + 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(); + } + + return statusString; + } +} |