Repository: cxf Updated Branches: refs/heads/3.1.x-fixes e34c320e3 -> a7287694f
[CXF-7228] Using ClassHelper to get the real provider info class in some cases Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/a7287694 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/a7287694 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/a7287694 Branch: refs/heads/3.1.x-fixes Commit: a7287694f81d87e299b331d6594740614331bfe1 Parents: e34c320 Author: Sergey Beryozkin <sberyoz...@gmail.com> Authored: Thu Jan 26 16:41:31 2017 +0000 Committer: Sergey Beryozkin <sberyoz...@gmail.com> Committed: Thu Jan 26 16:42:28 2017 +0000 ---------------------------------------------------------------------- .../apache/cxf/jaxrs/provider/ProviderFactory.java | 3 ++- .../cxf/jaxrs/provider/ServerProviderFactory.java | 14 +++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/a7287694/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java ---------------------------------------------------------------------- diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java index fd850de..a038f84 100644 --- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java +++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java @@ -1224,7 +1224,8 @@ public abstract class ProviderFactory { names = ((FilterProviderInfo<?>)p).getNameBinding(); } if (names == null) { - names = AnnotationUtils.getNameBindings(p.getProvider().getClass().getAnnotations()); + Class<?> pClass = ClassHelper.getRealClass(p.getBus(), p.getProvider()); + names = AnnotationUtils.getNameBindings(pClass.getAnnotations()); } if (names.isEmpty()) { names = Collections.singleton(DEFAULT_FILTER_NAME_BINDING); http://git-wip-us.apache.org/repos/asf/cxf/blob/a7287694/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ServerProviderFactory.java ---------------------------------------------------------------------- diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ServerProviderFactory.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ServerProviderFactory.java index 8354f13..db10701 100644 --- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ServerProviderFactory.java +++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ServerProviderFactory.java @@ -560,8 +560,9 @@ public final class ServerProviderFactory extends ProviderFactory { } private boolean isRegistered(Collection<?> list, Class<?> cls) { Collection<ProviderInfo<?>> list2 = CastUtils.cast(list); - for (ProviderInfo<?> pi : list2) { - if (cls.isAssignableFrom(pi.getProvider().getClass())) { + for (ProviderInfo<?> p : list2) { + Class<?> pClass = ClassHelper.getRealClass(p.getBus(), p.getProvider()); + if (cls.isAssignableFrom(pClass)) { return true; } } @@ -569,9 +570,12 @@ public final class ServerProviderFactory extends ProviderFactory { } private Integer getPriority(Collection<?> list, Class<?> cls, Class<?> filterClass) { Collection<ProviderInfo<?>> list2 = CastUtils.cast(list); - for (ProviderInfo<?> pi : list2) { - if (pi instanceof FilterProviderInfo && pi.getProvider().getClass().isAssignableFrom(cls)) { - return ((FilterProviderInfo<?>)pi).getPriority(filterClass); + for (ProviderInfo<?> p : list2) { + if (p instanceof FilterProviderInfo) { + Class<?> pClass = ClassHelper.getRealClass(p.getBus(), p.getProvider()); + if (cls.isAssignableFrom(pClass)) { + return ((FilterProviderInfo<?>)p).getPriority(filterClass); + } } } return Priorities.USER;