Refactor and Move NCMP Data Request Handlers
[cps.git] / cps-ncmp-service / src / main / java / org / onap / cps / ncmp / api / NetworkCmProxyDataService.java
index 0c84748..73c8d96 100644 (file)
@@ -29,6 +29,7 @@ import org.onap.cps.ncmp.api.impl.inventory.CompositeState;
 import org.onap.cps.ncmp.api.impl.operations.OperationType;
 import org.onap.cps.ncmp.api.models.CmHandleQueryApiParameters;
 import org.onap.cps.ncmp.api.models.CmHandleQueryServiceParameters;
+import org.onap.cps.ncmp.api.models.CmResourceAddress;
 import org.onap.cps.ncmp.api.models.DataOperationRequest;
 import org.onap.cps.ncmp.api.models.DmiPluginRegistration;
 import org.onap.cps.ncmp.api.models.DmiPluginRegistrationResponse;
@@ -36,6 +37,7 @@ import org.onap.cps.ncmp.api.models.NcmpServiceCmHandle;
 import org.onap.cps.spi.FetchDescendantsOption;
 import org.onap.cps.spi.model.ModuleDefinition;
 import org.onap.cps.spi.model.ModuleReference;
+import reactor.core.publisher.Mono;
 
 /*
  * Datastore interface for handling CPS data.
@@ -51,35 +53,38 @@ public interface NetworkCmProxyDataService {
     DmiPluginRegistrationResponse updateDmiRegistrationAndSyncModule(DmiPluginRegistration dmiPluginRegistration);
 
     /**
-     * Get resource data for given data store using dmi.
+     * Fetches resource data for a given data store using DMI (Data Management Interface).
+     * This method retrieves data based on the provided CmResourceAddress and additional query parameters.
+     * It supports asynchronous processing and handles authorization if required.
      *
-     * @param datastoreName       datastore name
-     * @param cmHandleId          cm handle identifier
-     * @param resourceIdentifier  resource identifier
-     * @param optionsParamInQuery options query
-     * @param topicParamInQuery   topic name for (triggering) async responses
-     * @param requestId           unique requestId for async request
-     * @return {@code Object} resource data
+     * @param cmResourceAddress   The target data store, including the CM handle and resource identifier.
+     *                            This parameter must not be null.
+     * @param optionsParamInQuery Additional query parameters that may influence the data retrieval process,
+     *                            such as filters or limits. This parameter can be null.
+     * @param topicParamInQuery   The topic name for triggering asynchronous responses. If specified,
+     *                            the response will be sent to this topic. This parameter can be null.
+     * @param requestId           A unique identifier for the request, used for tracking and correlating
+     *                            asynchronous operations. This parameter must not be null.
+     * @param authorization       The contents of the Authorization header. This parameter can be null
+     *                            if authorization is not required.
+     * @return {@code Mono<Object>} A reactive Mono that emits the resource data on successful retrieval
+     *     or an error signal if the operation fails. The Mono represents a single asynchronous
+     *     computation result.
      */
-    Object getResourceDataForCmHandle(String datastoreName,
-                                      String cmHandleId,
-                                      String resourceIdentifier,
-                                      String optionsParamInQuery,
-                                      String topicParamInQuery,
-                                      String requestId);
+    Mono<Object> getResourceDataForCmHandle(CmResourceAddress cmResourceAddress,
+                                            String optionsParamInQuery,
+                                            String topicParamInQuery,
+                                            String requestId,
+                                            String authorization);
 
     /**
      * Get resource data for operational.
      *
-     * @param datastoreName      datastore name
-     * @param cmHandleId         cm handle identifier
-     * @param resourceIdentifier resource identifier
+     * @param cmResourceAddress     target datastore, cm handle and resource identifier
      * @Link FetchDescendantsOption fetch descendants option
      * @return {@code Object} resource data
      */
-    Object getResourceDataForCmHandle(String datastoreName,
-                                      String cmHandleId,
-                                      String resourceIdentifier,
+    Object getResourceDataForCmHandle(CmResourceAddress cmResourceAddress,
                                       FetchDescendantsOption fetchDescendantsOption);
 
     /**
@@ -87,10 +92,13 @@ public interface NetworkCmProxyDataService {
      *
      * @param topicParamInQuery        topic name for (triggering) async responses
      * @param dataOperationRequest     contains a list of operation definitions(multiple operations)
+     * @param requestId                request ID
+     * @param authorization            contents of Authorization header, or null if not present
      */
     void executeDataOperationForCmHandles(String topicParamInQuery,
                                           DataOperationRequest dataOperationRequest,
-                                          String requestId);
+                                          String requestId,
+                                          String authorization);
 
 
     /**
@@ -101,13 +109,15 @@ public interface NetworkCmProxyDataService {
      * @param operationType      required operation type
      * @param requestBody        request body to create resource
      * @param contentType        content type in body
+     * @param authorization       contents of Authorization header, or null if not present
      * @return {@code Object} return data
      */
     Object writeResourceDataPassThroughRunningForCmHandle(String cmHandleId,
-                                                        String resourceIdentifier,
-                                                        OperationType operationType,
-                                                        String requestBody,
-                                                        String contentType);
+                                                          String resourceIdentifier,
+                                                          OperationType operationType,
+                                                          String requestBody,
+                                                          String contentType,
+                                                          String authorization);
 
     /**
      * Retrieve module references for the given cm handle.