[cps] Fix getResourceDataForPassthroughOperational endpoint
[cps.git] / cps-ncmp-service / src / main / java / org / onap / cps / ncmp / api / impl / operations / DmiOperations.java
index 5097280..745007b 100644 (file)
@@ -1,6 +1,7 @@
 /*
  *  ============LICENSE_START=======================================================
- *  Copyright (C) 2021 Nordix Foundation
+ *  Copyright (C) 2021-2022 Nordix Foundation
+ *  Modifications Copyright (C) 2022 Bell Canada
  *  ================================================================================
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
 
 package org.onap.cps.ncmp.api.impl.operations;
 
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.base.Strings;
 import lombok.Getter;
-import lombok.extern.slf4j.Slf4j;
+import lombok.RequiredArgsConstructor;
 import org.onap.cps.ncmp.api.impl.client.DmiRestClient;
 import org.onap.cps.ncmp.api.impl.config.NcmpConfiguration;
-import org.onap.cps.ncmp.api.impl.exception.NcmpException;
-import org.springframework.http.HttpHeaders;
+import org.onap.cps.ncmp.api.impl.utils.DmiServiceUrlBuilder;
+import org.onap.cps.utils.JsonObjectMapper;
+import org.springframework.stereotype.Service;
 
-@Slf4j
+@RequiredArgsConstructor
+@Service
 public class DmiOperations {
 
     @Getter
     public enum DataStoreEnum {
         PASSTHROUGH_OPERATIONAL("ncmp-datastore:passthrough-operational"),
         PASSTHROUGH_RUNNING("ncmp-datastore:passthrough-running");
-        private String value;
+        private final String value;
 
         DataStoreEnum(final String value) {
             this.value = value;
         }
     }
 
-    protected ObjectMapper objectMapper;
-    protected PersistenceCmHandleRetriever cmHandlePropertiesRetriever;
-    protected DmiRestClient dmiRestClient;
-    protected NcmpConfiguration.DmiProperties dmiProperties;
-
-    static final String URL_SEPARATOR = "/";
-
-    /**
-     * Constructor for {@code DmiOperations}. This method also manipulates url properties.
-     *
-     * @param dmiRestClient {@code DmiRestClient}
-     */
-    public DmiOperations(final PersistenceCmHandleRetriever cmHandlePropertiesRetriever,
-                         final ObjectMapper objectMapper,
-                         final NcmpConfiguration.DmiProperties dmiProperties,
-                         final DmiRestClient dmiRestClient) {
-        this.cmHandlePropertiesRetriever = cmHandlePropertiesRetriever;
-        this.objectMapper = objectMapper;
-        this.dmiRestClient = dmiRestClient;
-        this.dmiProperties = dmiProperties;
-    }
-
-    String getCmHandleUrl(final String dmiServiceName, final String cmHandle) {
-        return dmiServiceName
-            + dmiProperties.getDmiBasePath()
-            + URL_SEPARATOR
-            + "v1"
-            + URL_SEPARATOR
-            + "ch"
-            + URL_SEPARATOR
-            + cmHandle
-            + URL_SEPARATOR;
-    }
+    protected final YangModelCmHandleRetriever yangModelCmHandleRetriever;
+    protected final JsonObjectMapper jsonObjectMapper;
+    protected final NcmpConfiguration.DmiProperties dmiProperties;
+    protected final DmiRestClient dmiRestClient;
+    protected final DmiServiceUrlBuilder dmiServiceUrlBuilder;
 
     String getDmiResourceUrl(final String dmiServiceName, final String cmHandle, final String resourceName) {
-        return getCmHandleUrl(dmiServiceName, cmHandle) + resourceName;
-    }
-
-    static String appendOptionsQuery(final String url, final String optionsParamInQuery) {
-        if (Strings.isNullOrEmpty(optionsParamInQuery)) {
-            return url;
-        }
-        return url + "&options=" + optionsParamInQuery;
-    }
-
-    static HttpHeaders prepareHeader(final String acceptParam) {
-        final var httpHeaders = new HttpHeaders();
-        httpHeaders.set(HttpHeaders.ACCEPT, acceptParam);
-        return httpHeaders;
+        return dmiServiceUrlBuilder.getCmHandleUrl()
+                .pathSegment("{resourceName}")
+                .buildAndExpand(dmiServiceName, dmiProperties.getDmiBasePath(), cmHandle, resourceName).toUriString();
     }
 
-    /**
-     * Convert DmiRequestBody to JSON.
-     *
-     * @param dmiRequestBody the dmi request body
-     * @return DmiRequestBody as JSON
-     */
-    String getDmiRequestBodyAsString(final DmiRequestBody dmiRequestBody) {
-        try {
-            return objectMapper.writeValueAsString(dmiRequestBody);
-        } catch (final JsonProcessingException e) {
-            log.error("Parsing error occurred while converting Object to JSON.");
-            throw new NcmpException("Parsing error occurred while converting given object to JSON.",
-                e.getMessage());
-        }
-    }
 
 }