+ final DmiPluginRegistrationResponse dmiPluginRegistrationResponse =
+ networkCmProxyDataService.updateDmiRegistrationAndSyncModule(
+ ncmpRestInputMapper.toDmiPluginRegistration(restDmiPluginRegistration));
+ final DmiPluginRegistrationErrorResponse failedRegistrationErrorResponse =
+ getFailureRegistrationResponse(dmiPluginRegistrationResponse);
+ return allRegistrationsSuccessful(failedRegistrationErrorResponse)
+ ? new ResponseEntity<>(HttpStatus.OK)
+ : new ResponseEntity<>(failedRegistrationErrorResponse, HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+
+ private boolean allRegistrationsSuccessful(
+ final DmiPluginRegistrationErrorResponse dmiPluginRegistrationErrorResponse) {
+ return dmiPluginRegistrationErrorResponse.getFailedCreatedCmHandles().isEmpty()
+ && dmiPluginRegistrationErrorResponse.getFailedUpdatedCmHandles().isEmpty()
+ && dmiPluginRegistrationErrorResponse.getFailedRemovedCmHandles().isEmpty();
+
+ }
+
+ private DmiPluginRegistrationErrorResponse getFailureRegistrationResponse(
+ final DmiPluginRegistrationResponse dmiPluginRegistrationResponse) {
+ final var dmiPluginRegistrationErrorResponse = new DmiPluginRegistrationErrorResponse();
+ dmiPluginRegistrationErrorResponse.setFailedCreatedCmHandles(
+ getFailedResponses(dmiPluginRegistrationResponse.getCreatedCmHandles()));
+ dmiPluginRegistrationErrorResponse.setFailedUpdatedCmHandles(
+ getFailedResponses(dmiPluginRegistrationResponse.getUpdatedCmHandles()));
+ dmiPluginRegistrationErrorResponse.setFailedRemovedCmHandles(
+ getFailedResponses(dmiPluginRegistrationResponse.getRemovedCmHandles()));
+
+ return dmiPluginRegistrationErrorResponse;
+ }
+
+ private List<CmHandlerRegistrationErrorResponse> getFailedResponses(
+ final List<CmHandleRegistrationResponse> cmHandleRegistrationResponseList) {
+ return cmHandleRegistrationResponseList.stream()
+ .filter(cmHandleRegistrationResponse -> cmHandleRegistrationResponse.getStatus() == Status.FAILURE)
+ .map(this::toCmHandleRegistrationErrorResponse)
+ .collect(Collectors.toList());
+ }
+
+ private CmHandlerRegistrationErrorResponse toCmHandleRegistrationErrorResponse(
+ final CmHandleRegistrationResponse registrationResponse) {
+ return new CmHandlerRegistrationErrorResponse()
+ .cmHandle(registrationResponse.getCmHandle())
+ .errorCode(registrationResponse.getRegistrationError().errorCode)
+ .errorText(registrationResponse.getErrorText());