package tc.oc.pgm.kits; import tc.oc.pgm.xml.InvalidXMLException; import tc.oc.pgm.xml.Node; import tc.oc.pgm.xml.validate.Validation; import static tc.oc.commons.core.exception.LambdaExceptionUtils.rethrowConsumer; public class RemovableValidation implements Validation<Kit> { private static final RemovableValidation INSTANCE = new RemovableValidation(); public static RemovableValidation get() { return INSTANCE; } private RemovableValidation() {} @Override public void validate(Kit root, Node node) throws InvalidXMLException { root.deepDependencies(Kit.class).forEach(rethrowConsumer(kit -> { if(!kit.isRemovable()) { throw new InvalidXMLException("Kit type " + kit.getDefinitionType().getSimpleName() + " is not removable", node); } })); } }