Repository: cxf Updated Branches: refs/heads/3.1.x-fixes 1960082af -> 0bc42f47f
[CXF-7291] Making sure PackageUtils.getSharedPackageName ignores Proxy classes, patch from Dennis Kieselhorst applied, This closes #247 Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/0bc42f47 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/0bc42f47 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/0bc42f47 Branch: refs/heads/3.1.x-fixes Commit: 0bc42f47f79f2e301a6c8fe0c92acd945e43273b Parents: 1960082 Author: Sergey Beryozkin <sberyoz...@gmail.com> Authored: Wed Mar 29 16:31:09 2017 +0100 Committer: Sergey Beryozkin <sberyoz...@gmail.com> Committed: Wed Mar 29 16:32:55 2017 +0100 ---------------------------------------------------------------------- .../java/org/apache/cxf/common/util/PackageUtils.java | 5 ++++- .../org/apache/cxf/common/util/PackageUtilsTest.java | 13 +++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/0bc42f47/core/src/main/java/org/apache/cxf/common/util/PackageUtils.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/cxf/common/util/PackageUtils.java b/core/src/main/java/org/apache/cxf/common/util/PackageUtils.java index cd5b306..eaaf5e7 100644 --- a/core/src/main/java/org/apache/cxf/common/util/PackageUtils.java +++ b/core/src/main/java/org/apache/cxf/common/util/PackageUtils.java @@ -19,6 +19,7 @@ package org.apache.cxf.common.util; +import java.lang.reflect.Proxy; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; @@ -56,7 +57,9 @@ public final class PackageUtils { List<List<String>> lParts = new ArrayList<List<String>>(classes.size()); List<String> currentParts = new ArrayList<String>(); for (Class<?> cls : classes) { - lParts.add(StringUtils.getParts(getPackageName(cls), "\\.")); + if (!Proxy.isProxyClass(cls)) { + lParts.add(StringUtils.getParts(getPackageName(cls), "\\.")); + } } for (int i = 0; i < lParts.get(0).size(); i++) { int j = 1; http://git-wip-us.apache.org/repos/asf/cxf/blob/0bc42f47/core/src/test/java/org/apache/cxf/common/util/PackageUtilsTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/cxf/common/util/PackageUtilsTest.java b/core/src/test/java/org/apache/cxf/common/util/PackageUtilsTest.java index 2cbd713..ace5282 100644 --- a/core/src/test/java/org/apache/cxf/common/util/PackageUtilsTest.java +++ b/core/src/test/java/org/apache/cxf/common/util/PackageUtilsTest.java @@ -20,11 +20,14 @@ package org.apache.cxf.common.util; +import java.io.Serializable; import java.lang.annotation.Annotation; import java.lang.reflect.Array; import java.util.Arrays; import java.util.Collections; +import org.apache.cxf.validation.BeanValidationProvider; +import org.apache.cxf.validation.ValidationConfiguration; import org.junit.Assert; import org.junit.Test; @@ -100,4 +103,14 @@ public class PackageUtilsTest extends Assert { org.apache.cxf.configuration.spring.JAXBBeanFactory.class)); assertEquals("org.apache.cxf", packageName); } + @Test + public void testSharedPackageNameIgnoreProxyClasses() { + // build any proxy object resulting in com.sun.proxy... + Object proxy = ProxyHelper.getProxy(BeanValidationProvider.class.getClassLoader(), + new Class[]{Serializable.class}, new ReflectionInvokationHandler(new ValidationConfiguration())); + String packageName = PackageUtils.getSharedPackageName( + Arrays.asList(proxy.getClass(), org.apache.cxf.bus.spring.BusApplicationContext.class, + org.apache.cxf.configuration.spring.JAXBBeanFactory.class)); + assertEquals("org.apache.cxf", packageName); + } }