diff --git a/src/org/redkale/boot/ClassFilter.java b/src/org/redkale/boot/ClassFilter.java index f939b4609..cb17eb423 100644 --- a/src/org/redkale/boot/ClassFilter.java +++ b/src/org/redkale/boot/ClassFilter.java @@ -175,8 +175,9 @@ public final class ClassFilter { } if (!r && ors != null) { for (ClassFilter filter : ors) { - if (filter.accept(property, clazzname)) { + if (filter.accept(filter.conf, clazzname)) { cf = filter; + property = cf.conf; break; } } @@ -189,11 +190,11 @@ public final class ClassFilter { if (property == null) { property = cf.conf; } else if (property instanceof DefaultAnyValue) { - ((DefaultAnyValue) property).addAll(cf.conf); + ((DefaultAnyValue) property).addAllStringSet(cf.conf); } else { DefaultAnyValue dav = new DefaultAnyValue(); - dav.addAll(property); - dav.addAll(cf.conf); + dav.addAllStringSet(property); + dav.addAllStringSet(cf.conf); property = dav; } } @@ -243,7 +244,7 @@ public final class ClassFilter { } if (!r && ors != null) { for (ClassFilter filter : ors) { - if (filter.accept(property, classname)) return true; + if (filter.accept(filter.conf, classname)) return true; } } return r; diff --git a/src/org/redkale/util/AnyValue.java b/src/org/redkale/util/AnyValue.java index ae459469c..34e79d2a0 100644 --- a/src/org/redkale/util/AnyValue.java +++ b/src/org/redkale/util/AnyValue.java @@ -129,6 +129,17 @@ public abstract class AnyValue { return rs; } + //去重 + public DefaultAnyValue addAllStringSet(final AnyValue av) { + if (av == null) return this; + final Entry[] strings = av.getStringEntrys(); + if (strings == null) return this; + for (Entry en : strings) { + if (getValue(en.name) == null) this.addValue(en.name, en.value); + } + return this; + } + public DefaultAnyValue addAll(final AnyValue av) { if (av == null) return this; if (av instanceof DefaultAnyValue) {