/*
* ============LICENSE_START=======================================================
- * Copyright (C) 2022 Nordix Foundation
+ * Copyright (C) 2022-2023 Nordix Foundation
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* limitations under the License.
*
* SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
+ * ============LICENSE_END=========================================================
*/
package org.onap.cps.ncmp.api.impl.utils;
-import static org.onap.cps.ncmp.api.impl.operations.RequiredDmiService.DATA;
-
import java.util.HashMap;
import java.util.Map;
import lombok.RequiredArgsConstructor;
import org.apache.logging.log4j.util.Strings;
import org.apache.logging.log4j.util.TriConsumer;
import org.onap.cps.ncmp.api.impl.config.NcmpConfiguration;
-import org.onap.cps.ncmp.api.impl.operations.DmiOperations;
-import org.onap.cps.ncmp.api.impl.yangmodels.YangModelCmHandle;
-import org.onap.cps.utils.CpsValidator;
+import org.onap.cps.spi.utils.CpsValidator;
import org.springframework.stereotype.Component;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
public class DmiServiceUrlBuilder {
private final NcmpConfiguration.DmiProperties dmiProperties;
+ private final CpsValidator cpsValidator;
/**
* This method creates the dmi service url.
*/
public String getDmiDatastoreUrl(final MultiValueMap<String, String> queryParams,
final Map<String, Object> uriVariables) {
- final UriComponentsBuilder uriComponentsBuilder = getCmHandleUrl()
- .pathSegment("data")
- .pathSegment("ds")
- .pathSegment("{dataStore}")
- .queryParams(queryParams)
- .uriVariables(uriVariables);
- return uriComponentsBuilder.buildAndExpand().toUriString();
+ return getUriComponentsBuilder(getResourceDataBasePathUriBuilder(), queryParams, uriVariables)
+ .buildAndExpand().toUriString();
+ }
+
+ /**
+ * This method builds data operation request url.
+ *
+ * @param dataoperationRequestQueryParams query param map as key, value pair
+ * @param dataoperationRequestUriVariables uri param map as key (placeholder), value pair
+ * @return {@code String} data operation request url as string
+ */
+ public String getDataOperationRequestUrl(final MultiValueMap<String, String> dataoperationRequestQueryParams,
+ final Map<String, Object> dataoperationRequestUriVariables) {
+ return getDataOperationResourceDataBasePathUriBuilder()
+ .queryParams(dataoperationRequestQueryParams)
+ .uriVariables(dataoperationRequestUriVariables)
+ .buildAndExpand().toUriString();
}
/**
*
* @return {@code UriComponentsBuilder} dmi service url builder object
*/
- public UriComponentsBuilder getCmHandleUrl() {
+ public UriComponentsBuilder getResourceDataBasePathUriBuilder() {
return UriComponentsBuilder.newInstance()
.path("{dmiServiceName}")
.pathSegment("{dmiBasePath}")
.pathSegment("{cmHandleId}");
}
+ /**
+ * This method creates the dmi service url builder object with path variables for data operation request.
+ *
+ * @return {@code UriComponentsBuilder} dmi service url builder object
+ */
+ public UriComponentsBuilder getDataOperationResourceDataBasePathUriBuilder() {
+ return UriComponentsBuilder.newInstance()
+ .path("{dmiServiceName}")
+ .pathSegment("{dmiBasePath}")
+ .pathSegment("v1")
+ .pathSegment("data");
+ }
+
/**
* This method populates uri variables.
*
- * @param yangModelCmHandle get dmi service name
+ * @param dataStoreName data store name
+ * @param dmiServiceName dmi service name
* @param cmHandleId cm handle id for dmi registration
* @return {@code String} dmi service url as string
*/
- public Map<String, Object> populateUriVariables(final YangModelCmHandle yangModelCmHandle,
- final String cmHandleId,
- final DmiOperations.DataStoreEnum dataStore) {
- CpsValidator.validateNameCharacters(cmHandleId);
+ public Map<String, Object> populateUriVariables(final String dataStoreName,
+ final String dmiServiceName,
+ final String cmHandleId) {
+ cpsValidator.validateNameCharacters(cmHandleId);
final Map<String, Object> uriVariables = new HashMap<>();
final String dmiBasePath = dmiProperties.getDmiBasePath();
- uriVariables.put("dmiServiceName",
- yangModelCmHandle.resolveDmiServiceName(DATA));
+ uriVariables.put("dmiServiceName", dmiServiceName);
uriVariables.put("dmiBasePath", dmiBasePath);
uriVariables.put("cmHandleId", cmHandleId);
- uriVariables.put("dataStore", dataStore.getValue());
+ uriVariables.put("dataStore", dataStoreName);
+ return uriVariables;
+ }
+
+ /**
+ * This method populates uri variables for data operation request.
+ *
+ * @param dmiServiceName dmi service name
+ * @return {@code Map<String, Object>} uri variables as map
+ */
+ public Map<String, Object> populateDataOperationRequestUriVariables(final String dmiServiceName) {
+ final Map<String, Object> uriVariables = new HashMap<>();
+ final String dmiBasePath = dmiProperties.getDmiBasePath();
+ uriVariables.put("dmiServiceName", dmiServiceName);
+ uriVariables.put("dmiBasePath", dmiBasePath);
return uriVariables;
}
return queryParams;
}
+ /**
+ * This method is used to populate map from query params for data operation request.
+ *
+ * @param topicParamInQuery topic into url param
+ * @param requestId unique id of response for valid topic
+ * @return all valid query params as map
+ */
+ public MultiValueMap<String, String> getDataOperationRequestQueryParams(final String topicParamInQuery,
+ final String requestId) {
+ final MultiValueMap<String, String> queryParams = new LinkedMultiValueMap<>();
+ getQueryParamConsumer().accept("topic", topicParamInQuery, queryParams);
+ getQueryParamConsumer().accept("requestId", requestId, queryParams);
+ return queryParams;
+ }
+
private TriConsumer<String, String, MultiValueMap<String, String>> getQueryParamConsumer() {
return (paramName, paramValue, paramMap) -> {
if (Strings.isNotEmpty(paramValue)) {
}
};
}
+
+ private UriComponentsBuilder getUriComponentsBuilder(final UriComponentsBuilder uriComponentsBuilder,
+ final MultiValueMap<String, String> queryParams,
+ final Map<String, Object> uriVariables) {
+ return uriComponentsBuilder
+ .pathSegment("data")
+ .pathSegment("ds")
+ .pathSegment("{dataStore}")
+ .queryParams(queryParams)
+ .uriVariables(uriVariables);
+ }
}