diff --git a/spring-core/src/main/java/org/springframework/util/InstanceFilter.java b/spring-core/src/main/java/org/springframework/util/InstanceFilter.java index 4765837f174..75dfec80256 100644 --- a/spring-core/src/main/java/org/springframework/util/InstanceFilter.java +++ b/spring-core/src/main/java/org/springframework/util/InstanceFilter.java @@ -86,21 +86,16 @@ public class InstanceFilter { public boolean match(T instance) { Assert.notNull(instance, "Instance to match must not be null"); - boolean includesSet = !this.includes.isEmpty(); - boolean excludesSet = !this.excludes.isEmpty(); - if (!includesSet && !excludesSet) { - return this.matchIfEmpty; - } + boolean emptyIncludes = this.includes.isEmpty(); + boolean emptyExcludes = this.excludes.isEmpty(); - boolean matchIncludes = match(instance, this.includes); - boolean matchExcludes = match(instance, this.excludes); - if (!includesSet) { - return !matchExcludes; + if (emptyIncludes && emptyExcludes) { + return this.matchIfEmpty; } - if (!excludesSet) { - return matchIncludes; + if (!emptyExcludes && match(instance, this.excludes)) { + return false; } - return matchIncludes && !matchExcludes; + return (emptyIncludes || match(instance, this.includes)); } /**