public ValidationResult validate(final FsVolume volume) {
        ValidationResult validationResult = ValidationResult.ok();

        if (NullSafe.isBlankString(volume, FsVolume::getPath)) {
            validationResult = ValidationResult.error("You must select a node for the volume.");
        }

        // Don't need to make absolute here as comparing like with like
        final FsVolume existingVol = volume.getId() != null
                ? securityContext.secureResult(() -> fsVolumeDao.fetch(volume.getId()))
                : null;
        final boolean hasPathChanged = !Objects.equals(
                NullSafe.get(existingVol, FsVolume::getPath),
                volume.getPath());

        if (hasPathChanged) {
            if (validationResult.isOk()) {
                validationResult = validateForDupPath(volume);
            }
            if (validationResult.isOk()) {
                validationResult = validateVolumePath(volume);
            }
        }
        return validationResult;
    }
Public for use in tests that tear down volumes
stroom-data/stroom-data-store-impl-fs/src/main/java/stroom/data/store/impl/fs/FsVolumeService.java