diff --git a/mockserver-core/src/main/java/org/mockserver/collections/ImmutableEntry.java b/mockserver-core/src/main/java/org/mockserver/collections/ImmutableEntry.java index d483cf10b..1f186080b 100644 --- a/mockserver-core/src/main/java/org/mockserver/collections/ImmutableEntry.java +++ b/mockserver-core/src/main/java/org/mockserver/collections/ImmutableEntry.java @@ -45,6 +45,10 @@ public boolean isNotOptional() { return !isOptional(); } + public boolean isNotNotted() { + return !isNotted(); + } + @Override public NottableString getLeft() { return key; diff --git a/mockserver-core/src/main/java/org/mockserver/collections/SubSetMatcher.java b/mockserver-core/src/main/java/org/mockserver/collections/SubSetMatcher.java index 2eaf2eb5d..e6e36375a 100644 --- a/mockserver-core/src/main/java/org/mockserver/collections/SubSetMatcher.java +++ b/mockserver-core/src/main/java/org/mockserver/collections/SubSetMatcher.java @@ -28,9 +28,12 @@ static boolean containsSubset(MockServerLogger mockServerLogger, MatchDifference } if (result) { - long subsetNonOptionalSize = subset.stream().filter(ImmutableEntry::isNotOptional).count(); + long subsetRequiredSize = subset.stream() + .filter(ImmutableEntry::isNotOptional) + .filter(ImmutableEntry::isNotNotted) + .count(); // this prevents multiple items in the subset from being matched by a single item in the superset - result = matchingIndexes.size() >= subsetNonOptionalSize; + result = matchingIndexes.size() >= subsetRequiredSize; } return result; }