@SafeVarargs private static <D extends HierarchyDelegate<?, ?>> void noStrengtheningOfPreconditions(Collection<? extends D> delegates, Function<? super D, ValidationElement>... detectors) { final Map<Meta<?>, Set<ValidationElement>> detectedValidationElements = detectValidationElements(delegates, HierarchyDelegate::getHierarchyElement, detectors); if (detectedValidationElements.isEmpty()) { return; } for (StrengtheningIssue s : StrengtheningIssue.values()) { s.check(detectedValidationElements); } }
@SafeVarargs private static <D extends HierarchyDelegate<?, ?>> void noStrengtheningOfPreconditions(Collection<? extends D> delegates, Function<? super D, ValidationElement>... detectors) { final Map<Meta<?>, Set<ValidationElement>> detectedValidationElements = detectValidationElements(delegates, HierarchyDelegate::getHierarchyElement, detectors); if (detectedValidationElements.isEmpty()) { return; } for (StrengtheningIssue s : StrengtheningIssue.values()) { s.check(detectedValidationElements); } }
static void validateContainerHierarchy(Collection<? extends ContainerDelegate<?>> delegates, ElementKind elementKind) { if (Validate.notNull(delegates, "delegates").isEmpty()) { return; } if (Validate.notNull(elementKind, "elementKind") == ElementKind.CONTAINER_ELEMENT) { elementKind = getContainer(delegates.iterator().next().getHierarchyElement()); } switch (elementKind) { case RETURN_VALUE: noRedeclarationOfReturnValueCascading(delegates); final Map<Meta<?>, Set<ValidationElement>> detectedValidationElements = detectValidationElements(delegates, ElementDelegate::getHierarchyElement, detectGroupConversion()); // pre-check return value overridden hierarchy: Stream.of(StrengtheningIssue.values()) .filter((Predicate<? super StrengtheningIssue>) si -> !(si == StrengtheningIssue.overriddenHierarchy && detectedValidationElements.values().stream().filter(s -> !s.isEmpty()).count() < 2)) .forEach(si -> si.check(detectedValidationElements)); break; case PARAMETER: noStrengtheningOfPreconditions(delegates, detectConstraints(), detectCascading(), detectGroupConversion()); break; default: break; } }
static void validateContainerHierarchy(Collection<? extends ContainerDelegate<?>> delegates, ElementKind elementKind) { if (Validate.notNull(delegates, "delegates").isEmpty()) { return; } if (Validate.notNull(elementKind, "elementKind") == ElementKind.CONTAINER_ELEMENT) { elementKind = getContainer(delegates.iterator().next().getHierarchyElement()); } switch (elementKind) { case RETURN_VALUE: noRedeclarationOfReturnValueCascading(delegates); final Map<Meta<?>, Set<ValidationElement>> detectedValidationElements = detectValidationElements(delegates, ElementDelegate::getHierarchyElement, detectGroupConversion()); // pre-check return value overridden hierarchy: Stream.of(StrengtheningIssue.values()) .filter((Predicate<? super StrengtheningIssue>) si -> !(si == StrengtheningIssue.overriddenHierarchy && detectedValidationElements.values().stream().filter(s -> !s.isEmpty()).count() < 2)) .forEach(si -> si.check(detectedValidationElements)); break; case PARAMETER: noStrengtheningOfPreconditions(delegates, detectConstraints(), detectCascading(), detectGroupConversion()); break; default: break; } }