Fix Sonarcube violations 04/142504/3
authorseanbeirne <sean.beirne@est.tech>
Mon, 24 Nov 2025 13:44:00 +0000 (13:44 +0000)
committerseanbeirne <sean.beirne@est.tech>
Tue, 25 Nov 2025 10:49:01 +0000 (10:49 +0000)
- Extracted NOT READY to static variable
- Restructured Try catch blocks in controller
- Resolved minor code smells

Issue-ID: CPS-475
Change-Id: I25b7ac93e4d8bff46ab9281b55ac05e479ef2e31
Signed-off-by: seanbeirne <sean.beirne@est.tech>
cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/ProvMnsController.java
cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/data/policyexecutor/PolicyExecutor.java
cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/dmi/DmiRestClient.java

index fc7129c..76a2b57 100644 (file)
@@ -79,13 +79,7 @@ public class ProvMnsController implements ProvMnS {
             final YangModelCmHandle yangModelCmHandle = inventoryPersistence.getYangModelCmHandle(
                 alternateIdMatcher.getCmHandleIdByLongestMatchingAlternateId(
                     requestPathParameters.toAlternateId(), "/"));
-            try {
-                checkTarget(yangModelCmHandle);
-            } catch (final ProvMnSException exception) {
-                final HttpStatus httpStatus = "NOT READY".equals(exception.getMessage())
-                    ? HttpStatus.NOT_ACCEPTABLE : HttpStatus.UNPROCESSABLE_ENTITY;
-                return errorResponseBuilder.buildErrorResponseGet(httpStatus, exception.getDetails());
-            }
+            checkTarget(yangModelCmHandle);
             final UrlTemplateParameters urlTemplateParameters = parametersBuilder.createUrlTemplateParametersForRead(
                 scope, filter, attributes, fields, dataNodeSelector, yangModelCmHandle, requestPathParameters);
             return dmiRestClient.synchronousGetOperation(
@@ -93,6 +87,9 @@ public class ProvMnsController implements ProvMnS {
         } catch (final NoAlternateIdMatchFoundException noAlternateIdMatchFoundException) {
             final String reason = buildNotFoundMessage(requestPathParameters.toAlternateId());
             return errorResponseBuilder.buildErrorResponseGet(HttpStatus.NOT_FOUND, reason);
+        } catch (final ProvMnSException exception) {
+            return errorResponseBuilder.buildErrorResponseGet(
+                getHttpStatusForProvMnSException(exception), exception.getDetails());
         }
     }
 
@@ -105,25 +102,14 @@ public class ProvMnsController implements ProvMnS {
             final YangModelCmHandle yangModelCmHandle = inventoryPersistence.getYangModelCmHandle(
                 alternateIdMatcher.getCmHandleIdByLongestMatchingAlternateId(
                     requestPathParameters.toAlternateId(), "/"));
-            try {
-                checkTarget(yangModelCmHandle);
-            } catch (final ProvMnSException exception) {
-                final HttpStatus httpStatus = "NOT READY".equals(exception.getMessage())
-                    ? HttpStatus.NOT_ACCEPTABLE : HttpStatus.UNPROCESSABLE_ENTITY;
-                return errorResponseBuilder.buildErrorResponsePatch(httpStatus, exception.getDetails());
-            }
-            try {
-                policyExecutor.checkPermission(yangModelCmHandle,
-                    OperationType.CREATE,
-                    NO_AUTHORIZATION,
-                    requestPathParameters.toAlternateId(),
-                    jsonObjectMapper.asJsonString(policyExecutor.buildPatchOperationDetails(
-                        requestPathParameters, patchItems))
-                );
-            } catch (final RuntimeException exception) {
-                // Policy Executor Denied Execution
-                return errorResponseBuilder.buildErrorResponsePatch(HttpStatus.NOT_ACCEPTABLE, exception.getMessage());
-            }
+            checkTarget(yangModelCmHandle);
+            policyExecutor.checkPermission(yangModelCmHandle,
+                OperationType.CREATE,
+                NO_AUTHORIZATION,
+                requestPathParameters.toAlternateId(),
+                jsonObjectMapper.asJsonString(
+                    policyExecutor.buildPatchOperationDetails(requestPathParameters, patchItems))
+            );
             final UrlTemplateParameters urlTemplateParameters =
                 parametersBuilder.createUrlTemplateParametersForWrite(yangModelCmHandle, requestPathParameters);
             return dmiRestClient.synchronousPatchOperation(RequiredDmiService.DATA, patchItems,
@@ -131,6 +117,11 @@ public class ProvMnsController implements ProvMnS {
         } catch (final NoAlternateIdMatchFoundException noAlternateIdMatchFoundException) {
             final String reason = buildNotFoundMessage(requestPathParameters.toAlternateId());
             return errorResponseBuilder.buildErrorResponsePatch(HttpStatus.NOT_FOUND, reason);
+        } catch (final ProvMnSException exception) {
+            return errorResponseBuilder.buildErrorResponsePatch(
+                getHttpStatusForProvMnSException(exception), exception.getDetails());
+        } catch (final RuntimeException exception) {
+            return errorResponseBuilder.buildErrorResponsePatch(HttpStatus.NOT_ACCEPTABLE, exception.getMessage());
         }
     }
 
@@ -142,31 +133,25 @@ public class ProvMnsController implements ProvMnS {
             final YangModelCmHandle yangModelCmHandle = inventoryPersistence.getYangModelCmHandle(
                 alternateIdMatcher.getCmHandleIdByLongestMatchingAlternateId(
                     requestPathParameters.toAlternateId(), "/"));
-            try {
-                checkTarget(yangModelCmHandle);
-            } catch (final ProvMnSException exception) {
-                final HttpStatus httpStatus = "NOT READY".equals(exception.getMessage())
-                    ? HttpStatus.NOT_ACCEPTABLE : HttpStatus.UNPROCESSABLE_ENTITY;
-                return errorResponseBuilder.buildErrorResponseDefault(httpStatus, exception.getDetails());
-            }
-            try {
-                policyExecutor.checkPermission(yangModelCmHandle,
-                    OperationType.CREATE,
-                    NO_AUTHORIZATION,
-                    requestPathParameters.toAlternateId(),
-                    jsonObjectMapper.asJsonString(policyExecutor.buildCreateOperationDetails(
-                        OperationType.CREATE, requestPathParameters, resource))
-                );
-            } catch (final RuntimeException exception) {
-                return errorResponseBuilder.buildErrorResponseDefault(HttpStatus.NOT_ACCEPTABLE,
-                                                                            exception.getMessage());
-            }
+            checkTarget(yangModelCmHandle);
+            policyExecutor.checkPermission(yangModelCmHandle,
+                OperationType.CREATE,
+                NO_AUTHORIZATION,
+                requestPathParameters.toAlternateId(),
+                jsonObjectMapper.asJsonString(
+                    policyExecutor.buildCreateOperationDetails(OperationType.CREATE, requestPathParameters, resource))
+            );
             final UrlTemplateParameters urlTemplateParameters =
                 parametersBuilder.createUrlTemplateParametersForWrite(yangModelCmHandle, requestPathParameters);
             return dmiRestClient.synchronousPutOperation(RequiredDmiService.DATA, resource, urlTemplateParameters);
         } catch (final NoAlternateIdMatchFoundException noAlternateIdMatchFoundException) {
             final String reason = buildNotFoundMessage(requestPathParameters.toAlternateId());
             return errorResponseBuilder.buildErrorResponseDefault(HttpStatus.NOT_FOUND, reason);
+        } catch (final ProvMnSException exception) {
+            return errorResponseBuilder.buildErrorResponseDefault(
+                getHttpStatusForProvMnSException(exception), exception.getDetails());
+        } catch (final RuntimeException exception) {
+            return errorResponseBuilder.buildErrorResponseDefault(HttpStatus.NOT_ACCEPTABLE, exception.getMessage());
         }
     }
 
@@ -178,31 +163,26 @@ public class ProvMnsController implements ProvMnS {
             final YangModelCmHandle yangModelCmHandle = inventoryPersistence.getYangModelCmHandle(
                 alternateIdMatcher.getCmHandleIdByLongestMatchingAlternateId(
                     requestPathParameters.toAlternateId(), "/"));
-            try {
-                checkTarget(yangModelCmHandle);
-            } catch (final ProvMnSException exception) {
-                final HttpStatus httpStatus = "NOT READY".equals(exception.getMessage())
-                    ? HttpStatus.NOT_ACCEPTABLE : HttpStatus.UNPROCESSABLE_ENTITY;
-                return errorResponseBuilder.buildErrorResponseDefault(httpStatus, exception.getDetails());
-            }
-            try {
-                policyExecutor.checkPermission(yangModelCmHandle,
-                    OperationType.DELETE,
-                    NO_AUTHORIZATION,
-                    requestPathParameters.toAlternateId(),
-                    jsonObjectMapper.asJsonString(policyExecutor.buildDeleteOperationDetails(
-                        requestPathParameters.toAlternateId()))
-                );
-            } catch (final RuntimeException exception) {
-                return errorResponseBuilder.buildErrorResponseDefault(HttpStatus.NOT_ACCEPTABLE,
-                    exception.getMessage());
-            }
+            checkTarget(yangModelCmHandle);
+            policyExecutor.checkPermission(yangModelCmHandle,
+                OperationType.DELETE,
+                NO_AUTHORIZATION,
+                requestPathParameters.toAlternateId(),
+                jsonObjectMapper.asJsonString(
+                    policyExecutor.buildDeleteOperationDetails(requestPathParameters.toAlternateId()))
+            );
             final UrlTemplateParameters urlTemplateParameters =
                 parametersBuilder.createUrlTemplateParametersForWrite(yangModelCmHandle, requestPathParameters);
             return dmiRestClient.synchronousDeleteOperation(RequiredDmiService.DATA, urlTemplateParameters);
         } catch (final NoAlternateIdMatchFoundException noAlternateIdMatchFoundException) {
             final String reason = buildNotFoundMessage(requestPathParameters.toAlternateId());
             return errorResponseBuilder.buildErrorResponseDefault(HttpStatus.NOT_FOUND, reason);
+        } catch (final ProvMnSException exception) {
+            return errorResponseBuilder.buildErrorResponseDefault(
+                getHttpStatusForProvMnSException(exception), exception.getDetails());
+        } catch (final RuntimeException exception) {
+            return errorResponseBuilder.buildErrorResponseDefault(HttpStatus.NOT_ACCEPTABLE,
+                exception.getMessage());
         }
     }
 
@@ -224,4 +204,9 @@ public class ProvMnsController implements ProvMnS {
         return alternateId + " not found";
     }
 
+    private HttpStatus getHttpStatusForProvMnSException(final ProvMnSException exception) {
+        return "NOT READY".equals(exception.getMessage())
+            ? HttpStatus.NOT_ACCEPTABLE : HttpStatus.UNPROCESSABLE_ENTITY;
+    }
+
 }
index 8e21f9c..b477954 100644 (file)
@@ -147,7 +147,7 @@ public class PolicyExecutor {
                 case REMOVE -> operations.add(
                     buildDeleteOperationDetails(requestPathParameters.toAlternateId()));
                 default -> log.warn("Unsupported Patch Operation Type:{}", patchItem.getOp().getValue());
-            };
+            }
         }
         return new PatchOperationsDetails("Some Permission Id", CHANGE_REQUEST_FORMAT, operations);
     }
index 17693a0..96199f9 100644 (file)
@@ -276,12 +276,12 @@ public class DmiRestClient {
         final HttpStatus status = (HttpStatus) clientResponse.statusCode();
         return clientResponse.bodyToMono(String.class)
             .defaultIfEmpty("")
-            .map(body -> {
-                return ResponseEntity
-                    .status(status)
-                    .headers(clientResponse.headers().asHttpHeaders())
-                    .body(body);
-            });
+            .map(body ->
+                ResponseEntity
+                .status(status)
+                .headers(clientResponse.headers().asHttpHeaders())
+                .body(body)
+            );
     }
 
 }