private void validateRecoverPoint(String formName) { Validation.required(formName + ".rpJournalSize", rpJournalSize); if (!RPCopyForm.isValidJournalSize(rpJournalSize, rpJournalSizeUnit)) { Validation.addError(formName + ".rpJournalSize", "validation.invalid"); } Set<String> varrayIds = Sets.newHashSet(); Set<String> vpoolIds = Sets.newHashSet(); boolean hasCopies = false; for (RPCopyForm rpCopy : rpCopies) { if (rpCopy != null && rpCopy.isEnabled()) { hasCopies = true; rpCopy.validate(formName + ".rpCopies"); if (StringUtils.isNotBlank(rpCopy.virtualArray)) { if (!varrayIds.add(rpCopy.virtualArray)) { Validation.addError(formName + ".rpCopies", "rpCopy.virtualArray.error.duplicate"); } } if (StringUtils.isNotBlank(rpCopy.virtualPool)) { vpoolIds.add(rpCopy.virtualPool); } } } if (!hasCopies) { Validation.required(formName + ".rpCopies", null); } // Extra validation when mixed with high availability if (HighAvailability.isHighAvailability(highAvailability)) { if (!Boolean.TRUE.equals(multiVolumeConsistency)) { Validation.addError( formName + ".multiVolumeConsistency", "vpool.rp.error.notMultiVolumeConsistent"); } } }