X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=cps-ncmp-rest%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fcps%2Fncmp%2Frest%2Fcontroller%2FNetworkCmProxyController.java;h=45c7c33fd2691dafb84d9a61118b8b36ceb4ef8e;hb=HEAD;hp=93cbccf1a8adb893e39209ca1e626a7d8a915c39;hpb=3c8fd515de889c3daaeffb44cac1eb2d8902729c;p=cps.git diff --git a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java old mode 100755 new mode 100644 index 93cbccf1a8..fd4ced3f74 --- a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java +++ b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java @@ -1,7 +1,7 @@ /* * ============LICENSE_START======================================================= * Copyright (C) 2021 Pantheon.tech - * Modifications Copyright (C) 2021-2024 Nordix Foundation + * Modifications Copyright (C) 2021-2025 OpenInfra Foundation Europe * Modifications Copyright (C) 2021 highstreet technologies GmbH * Modifications Copyright (C) 2021-2022 Bell Canada * ================================================================================ @@ -23,12 +23,12 @@ package org.onap.cps.ncmp.rest.controller; -import static org.onap.cps.ncmp.api.impl.operations.DatastoreType.OPERATIONAL; -import static org.onap.cps.ncmp.api.impl.operations.DatastoreType.PASSTHROUGH_RUNNING; -import static org.onap.cps.ncmp.api.impl.operations.OperationType.CREATE; -import static org.onap.cps.ncmp.api.impl.operations.OperationType.DELETE; -import static org.onap.cps.ncmp.api.impl.operations.OperationType.PATCH; -import static org.onap.cps.ncmp.api.impl.operations.OperationType.UPDATE; +import static org.onap.cps.ncmp.api.data.models.DatastoreType.OPERATIONAL; +import static org.onap.cps.ncmp.api.data.models.DatastoreType.PASSTHROUGH_RUNNING; +import static org.onap.cps.ncmp.api.data.models.OperationType.CREATE; +import static org.onap.cps.ncmp.api.data.models.OperationType.DELETE; +import static org.onap.cps.ncmp.api.data.models.OperationType.PATCH; +import static org.onap.cps.ncmp.api.data.models.OperationType.UPDATE; import io.micrometer.core.annotation.Timed; import java.util.ArrayList; @@ -38,30 +38,30 @@ import java.util.Map; import java.util.stream.Collectors; 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.inventory.CompositeState; -import org.onap.cps.ncmp.api.impl.operations.DatastoreType; -import org.onap.cps.ncmp.api.impl.trustlevel.TrustLevel; -import org.onap.cps.ncmp.api.models.CmHandleQueryApiParameters; -import org.onap.cps.ncmp.api.models.CmResourceAddress; -import org.onap.cps.ncmp.api.models.NcmpServiceCmHandle; +import org.onap.cps.api.model.DataNode; +import org.onap.cps.api.model.ModuleDefinition; +import org.onap.cps.ncmp.api.data.exceptions.InvalidDatastoreException; +import org.onap.cps.ncmp.api.data.models.CmResourceAddress; +import org.onap.cps.ncmp.api.data.models.DatastoreType; +import org.onap.cps.ncmp.api.inventory.NetworkCmProxyInventoryFacade; +import org.onap.cps.ncmp.api.inventory.models.CmHandleQueryApiParameters; +import org.onap.cps.ncmp.api.inventory.models.CompositeState; +import org.onap.cps.ncmp.api.inventory.models.NcmpServiceCmHandle; +import org.onap.cps.ncmp.impl.data.NetworkCmProxyFacade; import org.onap.cps.ncmp.rest.api.NetworkCmProxyApi; -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.mapper.DataOperationRequestMapper; -import org.onap.cps.ncmp.rest.model.CmHandlePublicProperties; import org.onap.cps.ncmp.rest.model.CmHandleQueryParameters; import org.onap.cps.ncmp.rest.model.DataOperationRequest; 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.model.RestOutputPublicCmHandleProperties; +import org.onap.cps.ncmp.rest.util.CmHandleStateMapper; +import org.onap.cps.ncmp.rest.util.CountCmHandleSearchExecution; +import org.onap.cps.ncmp.rest.util.DataOperationRequestMapper; import org.onap.cps.ncmp.rest.util.DeprecationHelper; -import org.onap.cps.spi.model.ModuleDefinition; +import org.onap.cps.ncmp.rest.util.NcmpRestInputMapper; +import org.onap.cps.ncmp.rest.util.RestOutputCmHandleMapper; import org.onap.cps.utils.JsonObjectMapper; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -76,21 +76,20 @@ import org.springframework.web.bind.annotation.RestController; public class NetworkCmProxyController implements NetworkCmProxyApi { private static final String NO_BODY = null; - private final NetworkCmProxyDataService networkCmProxyDataService; + private final NetworkCmProxyFacade networkCmProxyFacade; + private final NetworkCmProxyInventoryFacade networkCmProxyInventoryFacade; private final JsonObjectMapper jsonObjectMapper; private final DeprecationHelper deprecationHelper; private final NcmpRestInputMapper ncmpRestInputMapper; private final CmHandleStateMapper cmHandleStateMapper; - private final NcmpCachedResourceRequestHandler ncmpCachedResourceRequestHandler; - private final NcmpPassthroughResourceRequestHandler ncmpPassthroughResourceRequestHandler; private final DataOperationRequestMapper dataOperationRequestMapper; - private final Map trustLevelPerCmHandle; + private final RestOutputCmHandleMapper restOutputCmHandleMapper; /** * Get resource data from datastore. * * @param datastoreName name of the datastore - * @param cmHandle cm handle identifier + * @param cmHandleReference cm handle or alternate id identifier * @param resourceIdentifier resource identifier * @param optionsParamInQuery options query parameter * @param topicParamInQuery topic query parameter @@ -101,36 +100,38 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { @Override @Timed(value = "cps.ncmp.controller.get", description = "Time taken to get resource data from datastore") public ResponseEntity getResourceDataForCmHandle(final String datastoreName, - final String cmHandle, + final String cmHandleReference, final String resourceIdentifier, final String optionsParamInQuery, final String topicParamInQuery, final Boolean includeDescendants, final String authorization) { - final NcmpDatastoreRequestHandler ncmpDatastoreRequestHandler = getNcmpDatastoreRequestHandler(datastoreName); - final CmResourceAddress cmResourceAddress = new CmResourceAddress(datastoreName, cmHandle, resourceIdentifier); - return ncmpDatastoreRequestHandler.executeRequest(cmResourceAddress, optionsParamInQuery, topicParamInQuery, - includeDescendants, authorization); + final CmResourceAddress cmResourceAddress = new CmResourceAddress(datastoreName, cmHandleReference, + resourceIdentifier); + final Object result = networkCmProxyFacade.getResourceDataForCmHandle(cmResourceAddress, optionsParamInQuery, + topicParamInQuery, includeDescendants, authorization); + return ResponseEntity.ok(result); } @Override public ResponseEntity executeDataOperationForCmHandles(final String topicParamInQuery, final DataOperationRequest dataOperationRequest, final String authorization) { - return ncmpPassthroughResourceRequestHandler.executeRequest(topicParamInQuery, + final Object result = networkCmProxyFacade.executeDataOperationForCmHandles(topicParamInQuery, dataOperationRequestMapper.toDataOperationRequest(dataOperationRequest), authorization); + return ResponseEntity.ok(result); } /** * Query resource data from datastore. * - * @param datastoreName name of the datastore + * @param datastoreName name of the datastore (currently only supports "ncmp-datastore:operational") * @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 + * @return {@code ResponseEntity} response. Body contains a collection of DataNodes */ @Override @@ -141,14 +142,16 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { final String topicParamInQuery, final Boolean includeDescendants) { validateDataStore(OPERATIONAL, datastoreName); - return ncmpCachedResourceRequestHandler.executeRequest(cmHandle, cpsPath, includeDescendants); + final Collection dataNodes = networkCmProxyFacade.queryResourceDataForCmHandle(cmHandle, cpsPath, + includeDescendants); + return ResponseEntity.ok(dataNodes); } /** - * Patch resource data from passthrough-running. + * Patch resource data. * - * @param datastoreName name of the datastore - * @param cmHandle cm handle identifier + * @param datastoreName name of the datastore (currently only supports "ncmp-datastore:passthrough-running") + * @param cmHandleReference cm handle or alternate identifier * @param resourceIdentifier resource identifier * @param requestBody the request body * @param contentType content type of body @@ -158,7 +161,7 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { @Override public ResponseEntity patchResourceDataRunningForCmHandle(final String datastoreName, - final String cmHandle, + final String cmHandleReference, final String resourceIdentifier, final Object requestBody, final String contentType, @@ -166,18 +169,18 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { validateDataStore(PASSTHROUGH_RUNNING, datastoreName); - final Object responseObject = networkCmProxyDataService + final Object responseObject = networkCmProxyFacade .writeResourceDataPassThroughRunningForCmHandle( - cmHandle, resourceIdentifier, PATCH, + cmHandleReference, resourceIdentifier, PATCH, jsonObjectMapper.asJsonString(requestBody), contentType, authorization); return ResponseEntity.ok(responseObject); } /** - * Create resource data in datastore pass-through running for given cm-handle. + * Create resource data for given cm-handle. * - * @param datastoreName name of the datastore - * @param cmHandle cm handle identifier + * @param datastoreName name of the datastore (currently only supports "ncmp-datastore:passthrough-running") + * @param cmHandleReference cm handle or alternate identifier * @param resourceIdentifier resource identifier * @param requestBody the request body * @param contentType content type of body @@ -186,23 +189,23 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { */ @Override public ResponseEntity createResourceDataRunningForCmHandle(final String datastoreName, - final String cmHandle, + final String cmHandleReference, final String resourceIdentifier, final Object requestBody, final String contentType, final String authorization) { validateDataStore(PASSTHROUGH_RUNNING, datastoreName); - networkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle(cmHandle, + networkCmProxyFacade.writeResourceDataPassThroughRunningForCmHandle(cmHandleReference, resourceIdentifier, CREATE, jsonObjectMapper.asJsonString(requestBody), contentType, authorization); return new ResponseEntity<>(HttpStatus.CREATED); } /** - * Update resource data in datastore pass-through running for given cm-handle. + * Update resource data for given cm-handle. * - * @param datastoreName name of the datastore - * @param cmHandle cm handle identifier + * @param datastoreName name of the datastore (currently only supports "ncmp-datastore:passthrough-running") + * @param cmHandleReference cm handle or alternate identifier * @param resourceIdentifier resource identifier * @param requestBody the request body * @param contentType content type of the body @@ -212,23 +215,23 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { @Override public ResponseEntity updateResourceDataRunningForCmHandle(final String datastoreName, - final String cmHandle, + final String cmHandleReference, final String resourceIdentifier, final Object requestBody, final String contentType, final String authorization) { validateDataStore(PASSTHROUGH_RUNNING, datastoreName); - networkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle(cmHandle, + networkCmProxyFacade.writeResourceDataPassThroughRunningForCmHandle(cmHandleReference, resourceIdentifier, UPDATE, jsonObjectMapper.asJsonString(requestBody), contentType, authorization); return new ResponseEntity<>(HttpStatus.OK); } /** - * Delete resource data in datastore pass-through running for a given cm-handle. + * Delete resource data for a given cm-handle. * - * @param datastoreName name of the datastore - * @param cmHandle cm handle identifier + * @param datastoreName name of the datastore (currently only supports "ncmp-datastore:passthrough-running") + * @param cmHandleReference cm handle or alternate identifier * @param resourceIdentifier resource identifier * @param contentType content type of the body * @param authorization contents of Authorization header, or null if not present @@ -236,14 +239,14 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { */ @Override public ResponseEntity deleteResourceDataRunningForCmHandle(final String datastoreName, - final String cmHandle, + final String cmHandleReference, final String resourceIdentifier, final String contentType, final String authorization) { validateDataStore(PASSTHROUGH_RUNNING, datastoreName); - networkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle(cmHandle, + networkCmProxyFacade.writeResourceDataPassThroughRunningForCmHandle(cmHandleReference, resourceIdentifier, DELETE, NO_BODY, contentType, authorization); return new ResponseEntity<>(HttpStatus.NO_CONTENT); } @@ -256,73 +259,81 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { */ @Override @SuppressWarnings("deprecation") // mapOldConditionProperties method will be removed in Release 12 + @CountCmHandleSearchExecution(methodName = "searchCmHandles", interfaceName = "CPS-E-05", + description = "Search for cm handles within CPS-E-05 interface") public ResponseEntity> searchCmHandles( final CmHandleQueryParameters cmHandleQueryParameters) { final CmHandleQueryApiParameters cmHandleQueryApiParameters = deprecationHelper.mapOldConditionProperties(cmHandleQueryParameters); - final Collection cmHandles = networkCmProxyDataService - .executeCmHandleSearch(cmHandleQueryApiParameters); - final List outputCmHandles = - cmHandles.stream().map(this::toRestOutputCmHandle).collect(Collectors.toList()); - return ResponseEntity.ok(outputCmHandles); + final List restOutputCmHandles = + networkCmProxyInventoryFacade.northboundCmHandleSearch(cmHandleQueryApiParameters) + .map(ncmpServiceCmHandle -> restOutputCmHandleMapper + .toRestOutputCmHandle(ncmpServiceCmHandle, false)).collectList().block(); + return ResponseEntity.ok(restOutputCmHandles); } /** - * Query and return cm handle ids that match the given query parameters. + * Query and return cm handle ids or alternate ids that match the given query parameters. * - * @param cmHandleQueryParameters the cm handle query parameters - * @return collection of cm handle ids + * @param cmHandleQueryParameters the cm handle query parameters + * @param outputAlternateId Boolean for cm handle reference type either + * cm handle id (false or null) or alternate id (true) + * @return collection of cm handle ids */ @Override - public ResponseEntity> searchCmHandleIds( - final CmHandleQueryParameters cmHandleQueryParameters) { + @CountCmHandleSearchExecution(methodName = "searchCmHandleIds", interfaceName = "CPS-E-05", + description = "Search for cm handles within CPS-E-05 interface") + public ResponseEntity> searchCmHandleIds(final CmHandleQueryParameters cmHandleQueryParameters, + final Boolean outputAlternateId) { final CmHandleQueryApiParameters cmHandleQueryApiParameters = jsonObjectMapper.convertToValueType(cmHandleQueryParameters, CmHandleQueryApiParameters.class); final Collection cmHandleIds - = networkCmProxyDataService.executeCmHandleIdSearch(cmHandleQueryApiParameters); + = networkCmProxyInventoryFacade.northboundCmHandleIdSearch(cmHandleQueryApiParameters, outputAlternateId); return ResponseEntity.ok(List.copyOf(cmHandleIds)); } /** * Search for Cm Handle and Properties by Name. * - * @param cmHandleId cm-handle identifier + * @param cmHandleReference cm-handle or alternate identifier * @return cm handle and its properties */ @Override - public ResponseEntity retrieveCmHandleDetailsById(final String cmHandleId) { - final NcmpServiceCmHandle ncmpServiceCmHandle = networkCmProxyDataService.getNcmpServiceCmHandle(cmHandleId); - final RestOutputCmHandle restOutputCmHandle = toRestOutputCmHandle(ncmpServiceCmHandle); + public ResponseEntity retrieveCmHandleDetailsById(final String cmHandleReference) { + final NcmpServiceCmHandle ncmpServiceCmHandle + = networkCmProxyInventoryFacade.getNcmpServiceCmHandle(cmHandleReference); + final RestOutputCmHandle restOutputCmHandle = restOutputCmHandleMapper + .toRestOutputCmHandle(ncmpServiceCmHandle, false); return ResponseEntity.ok(restOutputCmHandle); } /** - * Get Cm Handle Properties by Cm Handle Id. + * Get Cm Handle Properties by Cm Handle or alternate Identifier. * - * @param cmHandleId cm-handle identifier + * @param cmHandleReference cm-handle or alternate identifier * @return cm handle properties */ @Override - public ResponseEntity 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); + public ResponseEntity getPublicCmHandlePropertiesByCmHandleId( + final String cmHandleReference) { + final List> publicCmHandleProperties = new ArrayList<>(1); + publicCmHandleProperties.add(networkCmProxyInventoryFacade.getPublicCmHandleProperties(cmHandleReference)); + final RestOutputPublicCmHandleProperties restOutputPublicCmHandleProperties = + new RestOutputPublicCmHandleProperties(); + restOutputPublicCmHandleProperties.setPublicCmHandleProperties(publicCmHandleProperties); + return ResponseEntity.ok(restOutputPublicCmHandleProperties); } /** * Get Cm Handle State by Cm Handle Id. * - * @param cmHandleId cm-handle identifier + * @param cmHandleReference cm-handle or alternate identifier * @return cm handle state */ @Override public ResponseEntity getCmHandleStateByCmHandleId( - final String cmHandleId) { - final CompositeState cmHandleState = networkCmProxyDataService.getCmHandleCompositeState(cmHandleId); + final String cmHandleReference) { + final CompositeState cmHandleState = networkCmProxyInventoryFacade.getCmHandleCompositeState(cmHandleReference); final RestOutputCmHandleCompositeState restOutputCmHandleCompositeState = new RestOutputCmHandleCompositeState(); restOutputCmHandleCompositeState.setState( @@ -333,21 +344,23 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { /** * Return module definitions. * - * @param cmHandleId cm-handle identifier - * @param moduleName module name - * @param revision the revision of the module + * @param cmHandleReference cm handle or alternate id identifier + * @param moduleName module name + * @param revision the revision of the module * @return list of module definitions (module name, revision, yang resource content) */ @Override - public ResponseEntity> getModuleDefinitions(final String cmHandleId, + public ResponseEntity> getModuleDefinitions(final String cmHandleReference, final String moduleName, final String revision) { final Collection moduleDefinitions; if (StringUtils.hasText(moduleName)) { moduleDefinitions = - networkCmProxyDataService.getModuleDefinitionsByCmHandleAndModule(cmHandleId, moduleName, revision); + networkCmProxyInventoryFacade.getModuleDefinitionsByCmHandleAndModule(cmHandleReference, + moduleName, revision); } else { - moduleDefinitions = networkCmProxyDataService.getModuleDefinitionsByCmHandleId(cmHandleId); + moduleDefinitions = + networkCmProxyInventoryFacade.getModuleDefinitionsByCmHandleReference(cmHandleReference); if (StringUtils.hasText(revision)) { log.warn("Ignoring revision filter as no module name is provided"); } @@ -362,12 +375,12 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { /** * Return module references for a cm handle. * - * @param cmHandle the cm handle + * @param cmHandleReference cm handle or alternate id identifier * @return module references for cm handle. Namespace will be always blank because restConf does not include this. */ - public ResponseEntity> getModuleReferencesByCmHandle(final String cmHandle) { + public ResponseEntity> getModuleReferencesByCmHandle(final String cmHandleReference) { final List restModuleReferences = - networkCmProxyDataService.getYangResourcesModuleReferences(cmHandle).stream() + networkCmProxyInventoryFacade.getYangResourcesModuleReferences(cmHandleReference).stream() .map(ncmpRestInputMapper::toRestModuleReference) .collect(Collectors.toList()); return new ResponseEntity<>(restModuleReferences, HttpStatus.OK); @@ -383,29 +396,10 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { @Override public ResponseEntity setDataSyncEnabledFlagForCmHandle(final String cmHandleId, final Boolean dataSyncEnabledFlag) { - networkCmProxyDataService.setDataSyncEnabled(cmHandleId, dataSyncEnabledFlag); + networkCmProxyInventoryFacade.setDataSyncEnabled(cmHandleId, dataSyncEnabledFlag); return new ResponseEntity<>(HttpStatus.OK); } - - private RestOutputCmHandle toRestOutputCmHandle(final NcmpServiceCmHandle ncmpServiceCmHandle) { - final RestOutputCmHandle restOutputCmHandle = new RestOutputCmHandle(); - final CmHandlePublicProperties cmHandlePublicProperties = new CmHandlePublicProperties(); - final TrustLevel cmHandleCurrentTrustLevel = trustLevelPerCmHandle.get(ncmpServiceCmHandle.getCmHandleId()); - restOutputCmHandle.setCmHandle(ncmpServiceCmHandle.getCmHandleId()); - cmHandlePublicProperties.add(ncmpServiceCmHandle.getPublicProperties()); - restOutputCmHandle.setPublicCmHandleProperties(cmHandlePublicProperties); - restOutputCmHandle.setState(cmHandleStateMapper.toCmHandleCompositeStateExternalLockReason( - ncmpServiceCmHandle.getCompositeState())); - if (cmHandleCurrentTrustLevel != null) { - restOutputCmHandle.setTrustLevel(cmHandleCurrentTrustLevel.toString()); - } - restOutputCmHandle.setModuleSetTag(ncmpServiceCmHandle.getModuleSetTag()); - restOutputCmHandle.setAlternateId(ncmpServiceCmHandle.getAlternateId()); - restOutputCmHandle.setDataProducerIdentifier(ncmpServiceCmHandle.getDataProducerIdentifier()); - return restOutputCmHandle; - } - private void validateDataStore(final DatastoreType acceptableDataStoreType, final String requestedDatastoreName) { final DatastoreType datastoreType = DatastoreType.fromDatastoreName(requestedDatastoreName); @@ -414,13 +408,5 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { } } - private NcmpDatastoreRequestHandler getNcmpDatastoreRequestHandler(final String datastoreName) { - if (OPERATIONAL.equals(DatastoreType.fromDatastoreName(datastoreName))) { - return ncmpCachedResourceRequestHandler; - } - return ncmpPassthroughResourceRequestHandler; - } - - }