Repository: bval Updated Branches: refs/heads/bv2 6be31f967 -> 5ee4f7687
revert bad go at detecting multiple maximally specific ValueExtractors Project: http://git-wip-us.apache.org/repos/asf/bval/repo Commit: http://git-wip-us.apache.org/repos/asf/bval/commit/5ee4f768 Tree: http://git-wip-us.apache.org/repos/asf/bval/tree/5ee4f768 Diff: http://git-wip-us.apache.org/repos/asf/bval/diff/5ee4f768 Branch: refs/heads/bv2 Commit: 5ee4f76878c2698fca00cbfacd7ebc860c8f636f Parents: 6be31f9 Author: Matt Benson <[email protected]> Authored: Mon Mar 19 11:23:20 2018 -0500 Committer: Matt Benson <[email protected]> Committed: Mon Mar 19 11:23:20 2018 -0500 ---------------------------------------------------------------------- .../bval/jsr/valueextraction/ValueExtractors.java | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/bval/blob/5ee4f768/bval-jsr/src/main/java/org/apache/bval/jsr/valueextraction/ValueExtractors.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/valueextraction/ValueExtractors.java b/bval-jsr/src/main/java/org/apache/bval/jsr/valueextraction/ValueExtractors.java index ec1cf23..3adc541 100644 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/valueextraction/ValueExtractors.java +++ b/bval-jsr/src/main/java/org/apache/bval/jsr/valueextraction/ValueExtractors.java @@ -32,7 +32,6 @@ import java.util.function.Supplier; import java.util.stream.Collectors; import java.util.stream.Stream; -import javax.validation.ConstraintDeclarationException; import javax.validation.valueextraction.ValueExtractor; import javax.validation.valueextraction.ValueExtractorDeclarationException; import javax.validation.valueextraction.ValueExtractorDefinitionException; @@ -167,16 +166,11 @@ public class ValueExtractors { // search for assignable ContainerElementKey: Set<ContainerElementKey> assignableKeys = key.getAssignableKeys(); while (!assignableKeys.isEmpty()) { - final Set<ValueExtractor<?>> results = assignableKeys.stream().filter(allValueExtractors::containsKey) - .map(allValueExtractors::get).collect(Collectors.toSet()); - - final int rz = results.size(); - if (rz == 1) { - return results.iterator().next(); + final Optional<ValueExtractor<?>> found = assignableKeys.stream().filter(allValueExtractors::containsKey) + .<ValueExtractor<?>> map(allValueExtractors::get).findFirst(); + if (found.isPresent()) { + return found.get(); } - Exceptions.raiseIf(rz > 1, ConstraintDeclarationException::new, "%d maximally specific %ss found for %s", - rz, ValueExtractor.class.getSimpleName(), key); - assignableKeys = assignableKeys.stream().map(ContainerElementKey::getAssignableKeys) .flatMap(Collection::stream).collect(Collectors.toSet()); }
