Renaming openecomp to onap
[aai/data-router.git] / src / main / java / org / openecomp / datarouter / util / SearchServiceAgent.java
diff --git a/src/main/java/org/openecomp/datarouter/util/SearchServiceAgent.java b/src/main/java/org/openecomp/datarouter/util/SearchServiceAgent.java
deleted file mode 100644 (file)
index de31597..0000000
+++ /dev/null
@@ -1,366 +0,0 @@
-/**\r
- * ============LICENSE_START=======================================================\r
- * org.onap.aai\r
- * ================================================================================\r
- * Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
- * Copyright © 2017 Amdocs\r
- * ================================================================================\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *       http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- * ============LICENSE_END=========================================================\r
- *\r
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
- */\r
-package org.openecomp.datarouter.util;\r
-\r
-import java.io.BufferedReader;\r
-import java.io.InputStreamReader;\r
-import java.nio.charset.StandardCharsets;\r
-import java.util.Arrays;\r
-import java.util.HashMap;\r
-import java.util.List;\r
-import java.util.Map;\r
-import java.util.UUID;\r
-\r
-import javax.ws.rs.core.MediaType;\r
-import javax.ws.rs.core.MultivaluedMap;\r
-import javax.ws.rs.core.Response.Status;\r
-\r
-import org.eclipse.jetty.util.security.Password;\r
-import org.onap.aai.cl.api.Logger;\r
-import org.onap.aai.cl.mdc.MdcContext;\r
-import org.openecomp.datarouter.logging.DataRouterMsgs;\r
-import org.openecomp.datarouter.policy.EntityEventPolicy;\r
-import org.onap.aai.restclient.client.Headers;\r
-import org.onap.aai.restclient.client.OperationResult;\r
-import org.onap.aai.restclient.client.RestClient;\r
-import org.onap.aai.restclient.enums.RestAuthenticationMode;\r
-import org.onap.aai.restclient.rest.HttpUtil;\r
-import org.slf4j.MDC;\r
-\r
-import com.sun.jersey.core.util.MultivaluedMapImpl;\r
-\r
-public class SearchServiceAgent {\r
-\r
-  private Logger logger;\r
-  \r
-  private RestClient searchClient = null;\r
-  private Map<String, String> indexSchemaMapping = new HashMap<>();\r
-  \r
-  private String searchUrl = null;\r
-  private String documentEndpoint = null;\r
-  \r
-  \r
-  /**\r
-   * Creates a new instance of the search service agent.\r
-   * \r
-   * @param certName         - Certificate to use for talking to the Search Service.\r
-   * @param keystore         - Keystore to use for talking to the Search Service.\r
-   * @param keystorePwd      - Keystore password for talking to the Search Service.\r
-   * @param searchUrl        - URL at which the Search Service can be reached.\r
-   * @param documentEndpoint - Endpoint for accessing document resources on the Search Service.\r
-   * @param logger           - Logger to use for system logs.\r
-   */\r
-  public SearchServiceAgent(String certName, \r
-                            String keystore, \r
-                            String keystorePwd,\r
-                            String searchUrl,\r
-                            String documentEndpoint,\r
-                            Logger logger) {\r
-    \r
-    initialize(certName, keystore, keystorePwd, searchUrl, documentEndpoint, logger);\r
-  }\r
-  \r
-  \r
-  /**\r
-   * Performs all one-time initialization required for the search agent.\r
-   * \r
-   * @param certName         - Certificate to use for talking to the Search Service.\r
-   * @param keystore         - Keystore to use for talking to the Search Service.\r
-   * @param keystorePwd      - Keystore password for talking to the Search Service.\r
-   * @param searchUrl        - URL at which the Search Service can be reached.\r
-   * @param documentEndpoint - Endpoint for accessing document resources on the Search Service.\r
-   * @param logger           - Logger to use for system logs.\r
-   */\r
-  private void initialize(String certName, \r
-                          String keystore, \r
-                          String keystorePwd, \r
-                          String searchUrl, \r
-                          String documentEndpoint, \r
-                          Logger logger) {\r
-    \r
-    // Create REST client for search service\r
-    searchClient = new RestClient()\r
-                    .authenticationMode(RestAuthenticationMode.SSL_CERT)\r
-                    .validateServerHostname(false)\r
-                    .validateServerCertChain(true)\r
-                    .clientCertFile(DataRouterConstants.DR_HOME_AUTH + certName)\r
-                    .clientCertPassword(Password.deobfuscate(keystorePwd))\r
-                    .trustStore(DataRouterConstants.DR_HOME_AUTH + keystore);\r
-    \r
-    this.searchUrl        = searchUrl;\r
-    this.documentEndpoint = documentEndpoint;\r
-    \r
-    this.logger           = logger;\r
-  }\r
-  \r
-  \r
-  /**\r
-   * Creates an index through the search db abstraction\r
-   * \r
-   * @param index          - The name of the index to be created.\r
-   * @param schemaLocation - The name of the schema file for the index.\r
-   */\r
-  public void createSearchIndex(String index, String schemaLocation) {\r
-     \r
-    // Create a mapping of the index name to schema location \r
-    indexSchemaMapping.put(index, schemaLocation);\r
-    \r
-    // Now, create the index.\r
-    createIndex(index, schemaLocation);\r
-  }\r
-  \r
-  \r
-  /**\r
-   * This method performs the actual work of creating a search index.\r
-   * \r
-   * @param index          - The name of the index to be created.\r
-   * @param schemaLocation - The name of the schema file for the index.\r
-   */\r
-  private void createIndex(String index, String schemaLocation) {\r
-    \r
-    logger.debug("Creating search index, index name: = " + index + ", schemaLocation = " + schemaLocation);\r
-    \r
-    MultivaluedMap<String, String> headers = new MultivaluedMapImpl();\r
-    headers.put("Accept", Arrays.asList("application/json"));\r
-    headers.put(Headers.FROM_APP_ID, Arrays.asList("DL"));\r
-    headers.put(Headers.TRANSACTION_ID, Arrays.asList(UUID.randomUUID().toString()));\r
-      \r
-    String url = concatSubUri(searchUrl, index);\r
-    try {\r
-\r
-      OperationResult result = searchClient.put(url, loadFileData(schemaLocation), headers,\r
-                                                MediaType.APPLICATION_JSON_TYPE, null);\r
-\r
-      if (!HttpUtil.isHttpResponseClassSuccess(result.getResultCode())) {\r
-        logger.error(DataRouterMsgs.FAIL_TO_CREATE_SEARCH_INDEX, index, result.getFailureCause());\r
-      } else {\r
-        logger.info(DataRouterMsgs.SEARCH_INDEX_CREATE_SUCCESS, index);\r
-      }\r
-\r
-    } catch (Exception e) {\r
-      logger.error(DataRouterMsgs.FAIL_TO_CREATE_SEARCH_INDEX, index, e.getLocalizedMessage());\r
-    }\r
-  }\r
-  \r
-  \r
-  /**\r
-   * Retrieves a document from the search service.\r
-   * \r
-   * @param index - The index to retrieve the document from.\r
-   * @param id    - The unique identifier for the document.\r
-   * \r
-   * @return - The REST response returned from the Search Service.\r
-   */\r
-  public OperationResult getDocument(String index, String id) {\r
-    \r
-    Map<String, List<String>> headers = new HashMap<>();\r
-    headers.put(Headers.FROM_APP_ID, Arrays.asList("Data Router"));\r
-    headers.put(Headers.TRANSACTION_ID, Arrays.asList(MDC.get(MdcContext.MDC_REQUEST_ID)));\r
-    \r
-    String url = concatSubUri(searchUrl, index, documentEndpoint, id);\r
-    return searchClient.get(url, headers, MediaType.APPLICATION_JSON_TYPE);    \r
-  }\r
-  \r
-  \r
-  /**\r
-   * Creates or updates a document in the Search Service.\r
-   * \r
-   * @param index   - The index to create or update the document in.\r
-   * @param id      - The identifier for the document.\r
-   * @param payload - The document contents.\r
-   * @param headers - HTTP headers.\r
-   */\r
-  public void putDocument(String index, String id, String payload, Map<String, List<String>> headers) {\r
-        \r
-    // Try to post the document to the search service.\r
-    OperationResult result = doDocumentPut(index, id, payload, headers);\r
-    \r
-    // A 404 response from the Search Service may indicate that the index we are writing\r
-    // to does not actually exist.  We will try creating it now.\r
-    if(result.getResultCode() == Status.NOT_FOUND.getStatusCode()) {\r
-            \r
-      // Lookup the location of the schema that we want to create.\r
-      String indexSchemaLocation = indexSchemaMapping.get(index);\r
-      if(indexSchemaLocation != null) {\r
-        \r
-        // Try creating the index now...\r
-        logger.info(DataRouterMsgs.CREATE_MISSING_INDEX, index);\r
-        createIndex(index, indexSchemaLocation);\r
-        \r
-        // ...and retry the document post.\r
-        result = doDocumentPut(index, id, payload, headers);\r
-      }\r
-    }\r
-    \r
-    if(!resultSuccessful(result)) {\r
-      logger.error(DataRouterMsgs.FAIL_TO_CREATE_UPDATE_DOC, index, result.getFailureCause());\r
-    }\r
-  }\r
-  \r
-  \r
-  /**\r
-   * This method does the actual work of submitting a document PUT request to the Search Service.\r
-   * \r
-   * @param index   - The index to create or update the document in.\r
-   * @param id      - The identifier for the document.\r
-   * @param payload - The document contents.\r
-   * @param headers - HTTP headers.\r
-   * \r
-   * @return - The HTTP response returned by the Search Service.\r
-   */\r
-  private OperationResult doDocumentPut(String index, String id, String payload, Map<String, List<String>> headers) {\r
-    \r
-    String url = concatSubUri(searchUrl, index, documentEndpoint, id);\r
-    return searchClient.put(url, payload, headers, MediaType.APPLICATION_JSON_TYPE, MediaType.APPLICATION_JSON_TYPE);\r
-  }\r
-  \r
-  \r
-  /**\r
-   * Creates a document in the Search Service.\r
-   * \r
-   * @param index   - The index to create the document in.\r
-   * @param payload - The document contents.\r
-   * @param headers - HTTP headers.\r
-   */\r
-  public void postDocument(String index, String payload, Map<String, List<String>> headers) {\r
-    \r
-    // Try to post the document to the search service.\r
-    OperationResult result = doDocumentPost(index, payload, headers);\r
-    \r
-    // A 404 response from the Search Service may indicate that the index we are writing\r
-    // to does not actually exist.  We will try creating it now.\r
-    if(result.getResultCode() == Status.NOT_FOUND.getStatusCode()) {\r
-      \r
-      // Lookup the location of the schema that we want to create.\r
-      String indexSchemaLocation = indexSchemaMapping.get(index);\r
-      if(indexSchemaLocation != null) {\r
-        \r
-        // Try creating the index now...\r
-        logger.info(DataRouterMsgs.CREATE_MISSING_INDEX, index);\r
-        createIndex(index, indexSchemaLocation);\r
-        \r
-        // ...and retry the document post.\r
-        result = doDocumentPost(index, payload, headers);\r
-      }\r
-    }\r
-    \r
-    if(!resultSuccessful(result)) {\r
-      logger.error(DataRouterMsgs.FAIL_TO_CREATE_UPDATE_DOC, index, result.getFailureCause());\r
-    }\r
-  }\r
-  \r
-  \r
-  /**\r
-   * This method does the actual work of submitting a document PUT request to the Search Service.\r
-   * \r
-   * @param index   - The index to create or update the document in.\r
-   * @param payload - The document contents.\r
-   * @param headers - HTTP headers.\r
-   * \r
-   * @return - The HTTP response returned by the Search Service.\r
-   */\r
-  private OperationResult doDocumentPost(String index, String payload, Map<String, List<String>> headers) {\r
-    \r
-    String url = concatSubUri(searchUrl, index, documentEndpoint);\r
-    return searchClient.post(url, payload, headers, MediaType.APPLICATION_JSON_TYPE, MediaType.APPLICATION_JSON_TYPE);\r
-  }\r
-  \r
-  \r
-  /**\r
-   * Removes a document from the Search Service.\r
-   * \r
-   * @param index   - The index to create the document in.\r
-   * @param id      - The identifier for the document.\r
-   * @param payload - The document contents.\r
-   * @param headers - HTTP headers.\r
-   */\r
-  public void deleteDocument(String index, String documentId, Map<String, List<String>> headers) {\r
-    \r
-    String url = concatSubUri(searchUrl, index, documentEndpoint, documentId);\r
-    searchClient.delete(url, headers, null);\r
-  }\r
-  \r
-  \r
-  /**\r
-   * Convenience method to load up all the data from a file into a string\r
-   * \r
-   * @param filename the filename to read from disk\r
-   * @return the data contained within the file\r
-   * @throws Exception\r
-   */\r
-  protected String loadFileData(String filename) throws Exception {\r
-    StringBuilder data = new StringBuilder();\r
-    try {\r
-      BufferedReader in = new BufferedReader(new InputStreamReader(\r
-          EntityEventPolicy.class.getClassLoader().getResourceAsStream("/" + filename),\r
-          StandardCharsets.UTF_8));\r
-      String line;\r
-\r
-      while ((line = in.readLine()) != null) {\r
-        data.append(line);\r
-      }\r
-    } catch (Exception e) {\r
-      throw new Exception("Failed to read from file = " + filename + ".", e);\r
-    }\r
-\r
-    return data.toString();\r
-  }\r
-  \r
-  \r
-  /**\r
-   * Helper utility to concatenate substrings of a URI together to form a proper URI.\r
-   * \r
-   * @param suburis the list of substrings to concatenate together\r
-   * @return the concatenated list of substrings\r
-   */\r
-  public static String concatSubUri(String... suburis) {\r
-    String finalUri = "";\r
-\r
-    for (String suburi : suburis) {\r
-\r
-      if (suburi != null) {\r
-        // Remove any leading / since we only want to append /\r
-        suburi = suburi.replaceFirst("^/*", "");\r
-\r
-        // Add a trailing / if one isn't already there\r
-        finalUri += suburi.endsWith("/") ? suburi : suburi + "/";\r
-      }\r
-    }\r
-\r
-    return finalUri;\r
-  }\r
-  \r
-  \r
-  /**\r
-   * Helper utility to check the response code of an HTTP response.\r
-   * \r
-   * @param aResult - The response that we want to check.\r
-   * \r
-   * @return - true if the response contains a success code,\r
-   *           false otherwise.\r
-   */\r
-  private boolean resultSuccessful(OperationResult aResult) {\r
-    \r
-    return (aResult.getResultCode() >= 200) && (aResult.getResultCode() < 300);\r
-  }\r
-}\r