package org.ovirt.engine.core.common.validation; import java.util.Collection; import java.util.HashSet; import java.util.List; import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; import org.ovirt.engine.core.common.businessentities.network.Ipv4BootProtocol; import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface; import org.ovirt.engine.core.common.validation.annotation.NoRepetitiveStaticIpInList; public class NoRepetitiveStaticIpInListConstraint implements ConstraintValidator<NoRepetitiveStaticIpInList, List<VdsNetworkInterface>> { @Override public boolean isValid(List<VdsNetworkInterface> value, ConstraintValidatorContext context) { Collection<String> staticIps = new HashSet<>(); for (VdsNetworkInterface networkInterface : value) { String address = networkInterface.getIpv4Address(); if (networkInterface.getIpv4BootProtocol() == Ipv4BootProtocol.STATIC_IP && address != null && !address.isEmpty()) { if (staticIps.contains(networkInterface.getIpv4Address())) { return false; } else { staticIps.add(networkInterface.getIpv4Address()); } } } return true; } @Override public void initialize(NoRepetitiveStaticIpInList constraintAnnotation) { // Unimplemented method, required for interface ConstraintValidator } }