diff options
author | bmiklos <miklos.baranyak@est.tech> | 2022-09-05 18:25:46 +0200 |
---|---|---|
committer | bmiklos <miklos.baranyak@est.tech> | 2022-09-07 12:07:40 +0200 |
commit | 440dc8aab179f6c8451683f53b019ccd8bd60bdf (patch) | |
tree | 0b4568eb55924cb69c4d599e75cc658a6a126eb5 /cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller | |
parent | bd22f203779e6c396f10d9064565d72f0488dad0 (diff) |
Handle invalid operations on merged datastore endpoint
- Move the other endpoints under the same thats handling the get
- Add exceptions to handle invalid cases
- Add new tests for testing the invalid cases
Issue-ID: CPS-1001
Issue-ID: CPS-1219
Change-Id: I26fd57b5921f976cde7089b4cf1e8c0e5d8dc43b
Signed-off-by: bmiklos <miklos.baranyak@est.tech>
Diffstat (limited to 'cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller')
2 files changed, 55 insertions, 4 deletions
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 index 9aa8263fc5..2f6668a351 100755 --- 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 @@ -41,6 +41,7 @@ import org.onap.cps.ncmp.rest.api.NetworkCmProxyApi; import org.onap.cps.ncmp.rest.controller.handlers.DatastoreType; import org.onap.cps.ncmp.rest.controller.handlers.NcmpDatastoreResourceRequestHandler; import org.onap.cps.ncmp.rest.controller.handlers.NcmpDatastoreResourceRequestHandlerFactory; +import org.onap.cps.ncmp.rest.exceptions.InvalidDatastoreException; import org.onap.cps.ncmp.rest.mapper.CmHandleStateMapper; import org.onap.cps.ncmp.rest.model.CmHandlePublicProperties; import org.onap.cps.ncmp.rest.model.CmHandleQueryParameters; @@ -98,11 +99,26 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { optionsParamInQuery, topicParamInQuery, includeDescendants); } + /** + * 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 public ResponseEntity<Object> patchResourceDataRunningForCmHandle(final String resourceIdentifier, + final String datastoreName, final String cmHandle, final Object requestBody, final String contentType) { + + acceptPassthroughRunningOnly(datastoreName); + final Object responseObject = networkCmProxyDataService .writeResourceDataPassThroughRunningForCmHandle( cmHandle, resourceIdentifier, PATCH, @@ -114,6 +130,7 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { * 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 @@ -121,9 +138,13 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { */ @Override public ResponseEntity<Void> createResourceDataRunningForCmHandle(final String resourceIdentifier, + final String datastoreName, final String cmHandle, final Object requestBody, final String contentType) { + + acceptPassthroughRunningOnly(datastoreName); + networkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle(cmHandle, resourceIdentifier, CREATE, jsonObjectMapper.asJsonString(requestBody), contentType); return new ResponseEntity<>(HttpStatus.CREATED); @@ -133,34 +154,43 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { * 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 public ResponseEntity<Object> updateResourceDataRunningForCmHandle(final String resourceIdentifier, + final String datastoreName, final String cmHandle, final Object requestBody, final String contentType) { + acceptPassthroughRunningOnly(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 resourceIdentifier resource identifier + * @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<Void> deleteResourceDataRunningForCmHandle(final String cmHandle, + public ResponseEntity<Void> deleteResourceDataRunningForCmHandle(final String datastoreName, + final String cmHandle, final String resourceIdentifier, final String contentType) { + + acceptPassthroughRunningOnly(datastoreName); + networkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle(cmHandle, resourceIdentifier, DELETE, NO_BODY, contentType); return new ResponseEntity<>(HttpStatus.NO_CONTENT); @@ -290,6 +320,7 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { return new ResponseEntity<>(HttpStatus.OK); } + private RestOutputCmHandle toRestOutputCmHandle(final NcmpServiceCmHandle ncmpServiceCmHandle) { final RestOutputCmHandle restOutputCmHandle = new RestOutputCmHandle(); final CmHandlePublicProperties cmHandlePublicProperties = new CmHandlePublicProperties(); @@ -301,6 +332,12 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { return restOutputCmHandle; } + private void acceptPassthroughRunningOnly(final String datastoreName) { + final DatastoreType datastoreType = DatastoreType.fromDatastoreName(datastoreName); + if (DatastoreType.PASSTHROUGH_RUNNING != datastoreType) { + throw new InvalidDatastoreException(datastoreName + " is not supported"); + } + } } diff --git a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/handlers/DatastoreType.java b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/handlers/DatastoreType.java index 959c85d141..e8ab997d6f 100644 --- a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/handlers/DatastoreType.java +++ b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/handlers/DatastoreType.java @@ -25,6 +25,7 @@ import java.util.Arrays; import java.util.HashMap; import java.util.Map; import lombok.Getter; +import org.onap.cps.ncmp.rest.exceptions.InvalidDatastoreException; @Getter public enum DatastoreType { @@ -45,8 +46,21 @@ public enum DatastoreType { type -> datastoreNameToDatastoreType.put(type.getDatastoreName(), type)); } + /** + * From datastore name get datastore type. + * + * @param datastoreName the datastore name + * @return the datastore type + */ public static DatastoreType fromDatastoreName(final String datastoreName) { - return datastoreNameToDatastoreType.get(datastoreName); + + final DatastoreType datastoreType = datastoreNameToDatastoreType.get(datastoreName); + + if (null == datastoreType) { + throw new InvalidDatastoreException(datastoreName + " is an invalid datastore name"); + } + + return datastoreType; } } |