/*
* ============LICENSE_START=======================================================
* Copyright (C) 2021 Pantheon.tech
- * Modifications (C) 2021 Nordix Foundation
- * Modification Copyright (C) 2021 highstreet technologies GmbH
- * Modifications (C) 2021 Bell Canada
+ * Modifications Copyright (C) 2021-2023 Nordix Foundation
+ * Modifications Copyright (C) 2021 highstreet technologies GmbH
+ * Modifications Copyright (C) 2021-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.
* You may obtain a copy of the License at
*
* 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.
package org.onap.cps.ncmp.rest.controller;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import java.util.ArrayList;
+import static org.onap.cps.ncmp.api.impl.operations.OperationEnum.CREATE;
+import static org.onap.cps.ncmp.api.impl.operations.OperationEnum.DELETE;
+import static org.onap.cps.ncmp.api.impl.operations.OperationEnum.PATCH;
+import static org.onap.cps.ncmp.api.impl.operations.OperationEnum.UPDATE;
+
import java.util.Collection;
-import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
-import javax.validation.Valid;
-import javax.validation.constraints.NotNull;
+import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.onap.cps.ncmp.api.NetworkCmProxyDataService;
+import org.onap.cps.ncmp.api.impl.exception.InvalidDatastoreException;
+import org.onap.cps.ncmp.api.impl.operations.DatastoreType;
+import org.onap.cps.ncmp.api.inventory.CompositeState;
+import org.onap.cps.ncmp.api.models.CmHandleQueryApiParameters;
+import org.onap.cps.ncmp.api.models.NcmpServiceCmHandle;
import org.onap.cps.ncmp.rest.api.NetworkCmProxyApi;
-import org.onap.cps.ncmp.rest.model.CmHandleProperties;
-import org.onap.cps.ncmp.rest.model.CmHandleProperty;
-import org.onap.cps.ncmp.rest.model.CmHandles;
-import org.onap.cps.ncmp.rest.model.ConditionProperties;
-import org.onap.cps.ncmp.rest.model.Conditions;
-import org.onap.cps.ncmp.rest.model.ModuleNameAsJsonObject;
-import org.onap.cps.ncmp.rest.model.ModuleNamesAsJsonArray;
-import org.onap.cps.spi.FetchDescendantsOption;
-import org.onap.cps.spi.model.DataNode;
-import org.onap.cps.spi.model.ModuleReference;
-import org.onap.cps.utils.DataMapUtils;
+import org.onap.cps.ncmp.rest.controller.handlers.NcmpCachedResourceRequestHandler;
+import org.onap.cps.ncmp.rest.controller.handlers.NcmpDatastoreRequestHandler;
+import org.onap.cps.ncmp.rest.controller.handlers.NcmpPassthroughResourceRequestHandler;
+import org.onap.cps.ncmp.rest.mapper.CmHandleStateMapper;
+import org.onap.cps.ncmp.rest.model.CmHandlePublicProperties;
+import org.onap.cps.ncmp.rest.model.CmHandleQueryParameters;
+import org.onap.cps.ncmp.rest.model.RestModuleDefinition;
+import org.onap.cps.ncmp.rest.model.RestModuleReference;
+import org.onap.cps.ncmp.rest.model.RestOutputCmHandle;
+import org.onap.cps.ncmp.rest.model.RestOutputCmHandleCompositeState;
+import org.onap.cps.ncmp.rest.model.RestOutputCmHandlePublicProperties;
+import org.onap.cps.ncmp.rest.util.DeprecationHelper;
+import org.onap.cps.utils.JsonObjectMapper;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
@Slf4j
@RestController
@RequestMapping("${rest.api.ncmp-base-path}")
+@RequiredArgsConstructor
public class NetworkCmProxyController implements NetworkCmProxyApi {
- private static final Gson GSON = new GsonBuilder().create();
-
+ private static final String NO_BODY = null;
private final NetworkCmProxyDataService networkCmProxyDataService;
+ private final JsonObjectMapper jsonObjectMapper;
+ private final DeprecationHelper deprecationHelper;
+ private final NcmpRestInputMapper ncmpRestInputMapper;
+ private final CmHandleStateMapper cmHandleStateMapper;
+ private final NcmpCachedResourceRequestHandler ncmpCachedResourceRequestHandler;
+ private final NcmpPassthroughResourceRequestHandler ncmpPassthroughResourceRequestHandler;
/**
- * Constructor Injection for Dependencies.
- * @param networkCmProxyDataService Data Service Interface
+ * Get resource data from datastore.
+ *
+ * @param datastoreName name of the datastore
+ * @param cmHandle cm handle identifier
+ * @param resourceIdentifier resource identifier
+ * @param optionsParamInQuery options query parameter
+ * @param topicParamInQuery topic query parameter
+ * @param includeDescendants whether to include descendants or not
+ * @return {@code ResponseEntity} response from dmi plugin
*/
- public NetworkCmProxyController(final NetworkCmProxyDataService networkCmProxyDataService) {
- this.networkCmProxyDataService = networkCmProxyDataService;
+
+ @Override
+ public ResponseEntity<Object> getResourceDataForCmHandle(final String datastoreName,
+ final String cmHandle,
+ final String resourceIdentifier,
+ final String optionsParamInQuery,
+ final String topicParamInQuery,
+ final Boolean includeDescendants) {
+
+
+ final NcmpDatastoreRequestHandler ncmpDatastoreRequestHandler = getNcmpDatastoreRequestHandler(datastoreName);
+ return ncmpDatastoreRequestHandler.executeRequest(datastoreName, cmHandle, resourceIdentifier,
+ optionsParamInQuery, topicParamInQuery, includeDescendants);
}
- /**
- * Create Node.
- * @deprecated This Method is no longer used as part of NCMP.
- */
@Override
- @Deprecated(forRemoval = false)
- public ResponseEntity<Void> createNode(final String cmHandle, @Valid final String jsonData,
- @Valid final String parentNodeXpath) {
- networkCmProxyDataService.createDataNode(cmHandle, parentNodeXpath, jsonData);
- return new ResponseEntity<>(HttpStatus.CREATED);
+ public ResponseEntity<Object> getResourceDataForCmHandleBatch(final String resourceIdentifier,
+ final String topicParamInQuery,
+ final String datastoreName,
+ final Object requestBody,
+ final String optionsParamInQuery,
+ final Boolean includeDescendants) {
+
+ final NcmpDatastoreRequestHandler ncmpDatastoreRequestHandler = getNcmpDatastoreRequestHandler(datastoreName);
+
+ final List<String> cmHandleIds = jsonObjectMapper.convertJsonString(jsonObjectMapper.asJsonString(requestBody),
+ List.class);
+ return ncmpDatastoreRequestHandler.executeRequest(datastoreName, cmHandleIds, resourceIdentifier,
+ optionsParamInQuery, topicParamInQuery, includeDescendants);
}
/**
- * Add List-node Child Element.
- * @deprecated This Method is no longer used as part of NCMP.
+ * Query resource data from datastore.
+ *
+ * @param datastoreName name of the datastore
+ * @param cmHandle cm handle identifier
+ * @param cpsPath CPS Path
+ * @param optionsParamInQuery options query parameter
+ * @param topicParamInQuery topic query parameter
+ * @param includeDescendants whether to include descendants or not
+ * @return {@code ResponseEntity} response from dmi plugin
*/
+
@Override
- @Deprecated(forRemoval = false)
- public ResponseEntity<Void> addListNodeElements(@NotNull @Valid final String parentNodeXpath,
- final String cmHandle, @Valid final String jsonData) {
- networkCmProxyDataService.addListNodeElements(cmHandle, parentNodeXpath, jsonData);
- return new ResponseEntity<>(HttpStatus.CREATED);
+ public ResponseEntity<Object> queryResourceDataForCmHandle(final String datastoreName,
+ final String cmHandle,
+ final String cpsPath,
+ final String optionsParamInQuery,
+ final String topicParamInQuery,
+ final Boolean includeDescendants) {
+ validateDataStore(DatastoreType.OPERATIONAL, datastoreName);
+ return ncmpCachedResourceRequestHandler.executeRequest(cmHandle, cpsPath, includeDescendants);
}
/**
- * Get Node By CM Handle and X-Path.
- * @deprecated This Method is no longer used as part of NCMP.
+ * Patch resource data from passthrough-running.
+ *
+ * @param resourceIdentifier resource identifier
+ * @param datastoreName name of the datastore
+ * @param cmHandle cm handle identifier
+ * @param requestBody the request body
+ * @param contentType content type of body
+ * @return {@code ResponseEntity} response from dmi plugin
*/
+
@Override
- @Deprecated(forRemoval = false)
- public ResponseEntity<Object> getNodeByCmHandleAndXpath(final String cmHandle, @Valid final String xpath,
- @Valid final Boolean includeDescendants) {
- final FetchDescendantsOption fetchDescendantsOption = Boolean.TRUE.equals(includeDescendants)
- ? FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS : FetchDescendantsOption.OMIT_DESCENDANTS;
- final var dataNode = networkCmProxyDataService.getDataNode(cmHandle, xpath, fetchDescendantsOption);
- return new ResponseEntity<>(DataMapUtils.toDataMap(dataNode), HttpStatus.OK);
+ public ResponseEntity<Object> patchResourceDataRunningForCmHandle(final String resourceIdentifier,
+ final String datastoreName,
+ final String cmHandle,
+ final Object requestBody,
+ final String contentType) {
+
+ validateDataStore(DatastoreType.PASSTHROUGH_RUNNING, datastoreName);
+
+ final Object responseObject = networkCmProxyDataService
+ .writeResourceDataPassThroughRunningForCmHandle(
+ cmHandle, resourceIdentifier, PATCH,
+ jsonObjectMapper.asJsonString(requestBody), contentType);
+ return ResponseEntity.ok(responseObject);
}
/**
- * Query Data Nodes.
- * @deprecated This Method is no longer used as part of NCMP.
+ * Create resource data in datastore pass-through running for given cm-handle.
+ *
+ * @param resourceIdentifier resource identifier
+ * @param datastoreName name of the datastore
+ * @param cmHandle cm handle identifier
+ * @param requestBody the request body
+ * @param contentType content type of body
+ * @return {@code ResponseEntity} response from dmi plugin
*/
@Override
- @Deprecated(forRemoval = false)
- public ResponseEntity<Object> queryNodesByCmHandleAndCpsPath(final String cmHandle, @Valid final String cpsPath,
- @Valid final Boolean includeDescendants) {
- final FetchDescendantsOption fetchDescendantsOption = Boolean.TRUE.equals(includeDescendants)
- ? FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS : FetchDescendantsOption.OMIT_DESCENDANTS;
- final Collection<DataNode> dataNodes =
- networkCmProxyDataService.queryDataNodes(cmHandle, cpsPath, fetchDescendantsOption);
- return new ResponseEntity<>(GSON.toJson(dataNodes), HttpStatus.OK);
+ public ResponseEntity<Void> createResourceDataRunningForCmHandle(final String resourceIdentifier,
+ final String datastoreName,
+ final String cmHandle,
+ final Object requestBody,
+ final String contentType) {
+
+ validateDataStore(DatastoreType.PASSTHROUGH_RUNNING, datastoreName);
+
+ networkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle(cmHandle,
+ resourceIdentifier, CREATE, jsonObjectMapper.asJsonString(requestBody), contentType);
+ return new ResponseEntity<>(HttpStatus.CREATED);
}
/**
- * Replace Node With Descendants.
- * @deprecated This Method is no longer used as part of NCMP.
+ * Update resource data in datastore pass-through running for given cm-handle.
+ *
+ * @param resourceIdentifier resource identifier
+ * @param datastoreName name of the datastore
+ * @param cmHandle cm handle identifier
+ * @param requestBody the request body
+ * @param contentType content type of the body
+ * @return response entity
*/
+
@Override
- @Deprecated(forRemoval = false)
- public ResponseEntity<Object> replaceNode(final String cmHandle, @Valid final String jsonData,
- @Valid final String parentNodeXpath) {
- networkCmProxyDataService.replaceNodeTree(cmHandle, parentNodeXpath, jsonData);
+ public ResponseEntity<Object> updateResourceDataRunningForCmHandle(final String resourceIdentifier,
+ final String datastoreName,
+ final String cmHandle,
+ final Object requestBody,
+ final String contentType) {
+ validateDataStore(DatastoreType.PASSTHROUGH_RUNNING, datastoreName);
+
+ networkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle(cmHandle,
+ resourceIdentifier, UPDATE, jsonObjectMapper.asJsonString(requestBody), contentType);
return new ResponseEntity<>(HttpStatus.OK);
}
+ /**
+ * Delete resource data in datastore pass-through running for a given cm-handle.
+ *
+ * @param datastoreName name of the datastore
+ * @param cmHandle cm handle identifier
+ * @param resourceIdentifier resource identifier
+ * @param contentType content type of the body
+ * @return response entity no content if request is successful
+ */
@Override
- public ResponseEntity<Object> updateResourceDataRunningForCmHandle(final String cmHandle,
- final String resourceIdentifier, final String requestBody, final String contentType) {
- return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED);
+ public ResponseEntity<Void> deleteResourceDataRunningForCmHandle(final String datastoreName,
+ final String cmHandle,
+ final String resourceIdentifier,
+ final String contentType) {
+
+ validateDataStore(DatastoreType.PASSTHROUGH_RUNNING, datastoreName);
+
+ networkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle(cmHandle,
+ resourceIdentifier, DELETE, NO_BODY, contentType);
+ return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
/**
- * Update Node Leaves.
- * @deprecated This Method is no longer used as part of NCMP.
+ * Query and return cm handles that match the given query parameters.
+ *
+ * @param cmHandleQueryParameters the cm handle query parameters
+ * @return collection of cm handles
*/
@Override
- @Deprecated(forRemoval = false)
- public ResponseEntity<Object> updateNodeLeaves(final String cmHandle, @Valid final String jsonData,
- @Valid final String parentNodeXpath) {
- networkCmProxyDataService.updateNodeLeaves(cmHandle, parentNodeXpath, jsonData);
- return new ResponseEntity<>(HttpStatus.OK);
+ @SuppressWarnings("deprecation") // mapOldConditionProperties method will be removed in Release 12
+ public ResponseEntity<List<RestOutputCmHandle>> searchCmHandles(
+ final CmHandleQueryParameters cmHandleQueryParameters) {
+ final CmHandleQueryApiParameters cmHandleQueryApiParameters =
+ deprecationHelper.mapOldConditionProperties(cmHandleQueryParameters);
+ final Collection<NcmpServiceCmHandle> cmHandles = networkCmProxyDataService
+ .executeCmHandleSearch(cmHandleQueryApiParameters);
+ final List<RestOutputCmHandle> outputCmHandles =
+ cmHandles.stream().map(this::toRestOutputCmHandle).collect(Collectors.toList());
+ return ResponseEntity.ok(outputCmHandles);
}
/**
- * Get resource data from operational datastore.
+ * Query and return cm handle ids that match the given query parameters.
*
- * @param cmHandle cm handle identifier
- * @param resourceIdentifier resource identifier
- * @param acceptParamInHeader accept header parameter
- * @param optionsParamInQuery options query parameter
- * @return {@code ResponseEntity} response from dmi plugin
+ * @param cmHandleQueryParameters the cm handle query parameters
+ * @return collection of cm handle ids
*/
@Override
- public ResponseEntity<Object> getResourceDataOperationalForCmHandle(final String cmHandle,
- final @NotNull @Valid String resourceIdentifier,
- final String acceptParamInHeader,
- final @Valid String optionsParamInQuery) {
- final Object responseObject = networkCmProxyDataService.getResourceDataOperationalForCmHandle(cmHandle,
- resourceIdentifier,
- acceptParamInHeader,
- optionsParamInQuery);
- return ResponseEntity.ok(responseObject);
+ public ResponseEntity<List<String>> searchCmHandleIds(
+ final CmHandleQueryParameters cmHandleQueryParameters) {
+ final CmHandleQueryApiParameters cmHandleQueryApiParameters =
+ jsonObjectMapper.convertToValueType(cmHandleQueryParameters, CmHandleQueryApiParameters.class);
+ final Collection<String> cmHandleIds
+ = networkCmProxyDataService.executeCmHandleIdSearch(cmHandleQueryApiParameters);
+ return ResponseEntity.ok(List.copyOf(cmHandleIds));
}
/**
- * Get resource data from pass-through running datastore.
+ * Search for Cm Handle and Properties by Name.
*
- * @param cmHandle cm handle identifier
- * @param resourceIdentifier resource identifier
- * @param acceptParamInHeader accept header parameter
- * @param optionsParamInQuery options query parameter
- * @return {@code ResponseEntity} response from dmi plugin
+ * @param cmHandleId cm-handle identifier
+ * @return cm handle and its properties
*/
@Override
- public ResponseEntity<Object> getResourceDataRunningForCmHandle(final String cmHandle,
- final @NotNull @Valid String resourceIdentifier,
- final String acceptParamInHeader,
- final @Valid String optionsParamInQuery) {
- final Object responseObject = networkCmProxyDataService.getResourceDataPassThroughRunningForCmHandle(cmHandle,
- resourceIdentifier,
- acceptParamInHeader,
- optionsParamInQuery);
- return ResponseEntity.ok(responseObject);
+ public ResponseEntity<RestOutputCmHandle> retrieveCmHandleDetailsById(final String cmHandleId) {
+ final NcmpServiceCmHandle ncmpServiceCmHandle = networkCmProxyDataService.getNcmpServiceCmHandle(cmHandleId);
+ final RestOutputCmHandle restOutputCmHandle = toRestOutputCmHandle(ncmpServiceCmHandle);
+ return ResponseEntity.ok(restOutputCmHandle);
}
/**
- * Create resource data in datastore pass through running
- * for given cm-handle.
+ * Get Cm Handle Properties by Cm Handle Id.
*
- * @param resourceIdentifier resource identifier
- * @param cmHandle cm handle identifier
- * @param requestBody requestBody
- * @param contentType content type of body
- * @return {@code ResponseEntity} response from dmi plugi
+ * @param cmHandleId cm-handle identifier
+ * @return cm handle properties
*/
@Override
- public ResponseEntity<Void> createResourceDataRunningForCmHandle(final String resourceIdentifier,
- final String cmHandle,
- final String requestBody,
- final String contentType) {
- networkCmProxyDataService.createResourceDataPassThroughRunningForCmHandle(cmHandle,
- resourceIdentifier, requestBody, contentType);
- return new ResponseEntity<>(HttpStatus.CREATED);
+ public ResponseEntity<RestOutputCmHandlePublicProperties> getCmHandlePublicPropertiesByCmHandleId(
+ final String cmHandleId) {
+ final CmHandlePublicProperties cmHandlePublicProperties = new CmHandlePublicProperties();
+ cmHandlePublicProperties.add(networkCmProxyDataService.getCmHandlePublicProperties(cmHandleId));
+ final RestOutputCmHandlePublicProperties restOutputCmHandlePublicProperties =
+ new RestOutputCmHandlePublicProperties();
+ restOutputCmHandlePublicProperties.setPublicCmHandleProperties(cmHandlePublicProperties);
+ return ResponseEntity.ok(restOutputCmHandlePublicProperties);
}
+ /**
+ * Get Cm Handle State by Cm Handle Id.
+ *
+ * @param cmHandleId cm-handle identifier
+ * @return cm handle state
+ */
@Override
- public ResponseEntity<CmHandles> executeCmHandleSearch(final Conditions conditions) {
- final List<ConditionProperties> conditionProperties =
- conditions.getConditions().stream().collect(Collectors.toList());
- final CmHandles cmHandles = new CmHandles();
- final Collection<String> cmHandleIdentifiers = processConditions(conditionProperties);
- cmHandleIdentifiers.forEach(cmHandle -> cmHandles.setCmHandles(toCmHandleProperties(cmHandle)));
- return ResponseEntity.ok(cmHandles);
+ public ResponseEntity<RestOutputCmHandleCompositeState> getCmHandleStateByCmHandleId(
+ final String cmHandleId) {
+ final CompositeState cmHandleState = networkCmProxyDataService.getCmHandleCompositeState(cmHandleId);
+ final RestOutputCmHandleCompositeState restOutputCmHandleCompositeState =
+ new RestOutputCmHandleCompositeState();
+ restOutputCmHandleCompositeState.setState(
+ cmHandleStateMapper.toCmHandleCompositeStateExternalLockReason(cmHandleState));
+ return ResponseEntity.ok(restOutputCmHandleCompositeState);
}
+ /**
+ * Return module definitions for a cm handle.
+ *
+ * @param cmHandleId cm-handle identifier
+ * @return list of module definitions (module name, revision, yang resource content)
+ */
@Override
- public ResponseEntity<Object> getModuleReferencesByCmHandle(final String cmHandle) {
- final Collection<ModuleReference>
- moduleReferences = networkCmProxyDataService.getYangResourcesModuleReferences(cmHandle);
- return new ResponseEntity<>(new Gson().toJson(moduleReferences), HttpStatus.OK);
+ public ResponseEntity<List<RestModuleDefinition>> getModuleDefinitionsByCmHandleId(final String cmHandleId) {
+ final List<RestModuleDefinition> restModuleDefinitions =
+ networkCmProxyDataService.getModuleDefinitionsByCmHandleId(cmHandleId).stream()
+ .map(ncmpRestInputMapper::toRestModuleDefinition)
+ .collect(Collectors.toList());
+ return new ResponseEntity<>(restModuleDefinitions, HttpStatus.OK);
}
- private Collection<String> processConditions(final List<ConditionProperties> conditionProperties) {
- for (final ConditionProperties conditionProperty : conditionProperties) {
- if (conditionProperty.getName().equals("hasAllModules")) {
- return executeCmHandleSearchesForModuleNames(conditionProperty);
- } else {
- log.warn("Unrecognized condition name {}.", conditionProperty.getName());
- }
- }
- log.warn("No valid conditions found {}.", conditionProperties);
- return Collections.emptyList();
+ /**
+ * Return module references for a cm handle.
+ *
+ * @param cmHandle the cm handle
+ * @return module references for cm handle. Namespace will be always blank because restConf does not include this.
+ */
+ public ResponseEntity<List<RestModuleReference>> getModuleReferencesByCmHandle(final String cmHandle) {
+ final List<RestModuleReference> restModuleReferences =
+ networkCmProxyDataService.getYangResourcesModuleReferences(cmHandle).stream()
+ .map(ncmpRestInputMapper::toRestModuleReference)
+ .collect(Collectors.toList());
+ return new ResponseEntity<>(restModuleReferences, HttpStatus.OK);
+ }
+
+ /**
+ * Set the data sync enabled flag, along with the data sync state for the specified cm handle.
+ *
+ * @param cmHandleId cm handle id
+ * @param dataSyncEnabledFlag data sync enabled flag
+ * @return response entity ok if request is successful
+ */
+ @Override
+ public ResponseEntity<Object> setDataSyncEnabledFlagForCmHandle(final String cmHandleId,
+ final Boolean dataSyncEnabledFlag) {
+ networkCmProxyDataService.setDataSyncEnabled(cmHandleId, dataSyncEnabledFlag);
+ return new ResponseEntity<>(HttpStatus.OK);
}
- private Collection<String> executeCmHandleSearchesForModuleNames(final ConditionProperties conditionProperties) {
- return networkCmProxyDataService
- .executeCmHandleHasAllModulesSearch(getModuleNames(conditionProperties.getConditionParameters()));
+
+ private RestOutputCmHandle toRestOutputCmHandle(final NcmpServiceCmHandle ncmpServiceCmHandle) {
+ final RestOutputCmHandle restOutputCmHandle = new RestOutputCmHandle();
+ final CmHandlePublicProperties cmHandlePublicProperties = new CmHandlePublicProperties();
+ restOutputCmHandle.setCmHandle(ncmpServiceCmHandle.getCmHandleId());
+ cmHandlePublicProperties.add(ncmpServiceCmHandle.getPublicProperties());
+ restOutputCmHandle.setPublicCmHandleProperties(cmHandlePublicProperties);
+ restOutputCmHandle.setState(cmHandleStateMapper.toCmHandleCompositeStateExternalLockReason(
+ ncmpServiceCmHandle.getCompositeState()));
+ return restOutputCmHandle;
}
- private Collection<String> getModuleNames(final ModuleNamesAsJsonArray moduleNamesAsJsonArray) {
- final Collection<String> moduleNames = new ArrayList<>(moduleNamesAsJsonArray.size());
- for (final ModuleNameAsJsonObject moduleNameAsJsonObject : moduleNamesAsJsonArray) {
- moduleNames.add(moduleNameAsJsonObject.getModuleName());
+ private void validateDataStore(final DatastoreType acceptableDataStoreType, final String requestedDatastoreName) {
+ final DatastoreType datastoreType = DatastoreType.fromDatastoreName(requestedDatastoreName);
+
+ if (acceptableDataStoreType != datastoreType) {
+ throw new InvalidDatastoreException(requestedDatastoreName + " is not supported");
}
- return moduleNames;
}
- private CmHandleProperties toCmHandleProperties(final String cmHandleId) {
- final CmHandleProperties cmHandleProperties = new CmHandleProperties();
- final CmHandleProperty cmHandleProperty = new CmHandleProperty();
- cmHandleProperty.setCmHandleId(cmHandleId);
- cmHandleProperties.add(cmHandleProperty);
- return cmHandleProperties;
+ private NcmpDatastoreRequestHandler getNcmpDatastoreRequestHandler(final String datastoreName) {
+ if (DatastoreType.OPERATIONAL.equals(DatastoreType.fromDatastoreName(datastoreName))) {
+ return ncmpCachedResourceRequestHandler;
+ }
+ return ncmpPassthroughResourceRequestHandler;
}
}
+