[ https://issues.apache.org/jira/browse/CXF-8996?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jamie Mark Goodyear updated CXF-8996: ------------------------------------- Flags: Patch > JAXRS Bean introspection utility Beanspector relies on Class.getMethods > natural order > ------------------------------------------------------------------------------------- > > Key: CXF-8996 > URL: https://issues.apache.org/jira/browse/CXF-8996 > Project: CXF > Issue Type: Improvement > Components: JAX-RS > Affects Versions: 4.0.4 > Reporter: Jamie Mark Goodyear > Priority: Major > Fix For: 4.0.5 > > > JAXRS Bean introspection utility Beanspector relies on Class.getMethods > natural order. > For most JVMs the Beanspector Tests will pass, however IBM Java does not > return methods in the same ordering. Note: Class.getMethods does not provide > a prescribed ordering of methods. > When CXF 4.0.x main branch is built, we'll observe: > {{Apache CXF JAX-RS Extensions: Search fails.}} > {{{}[ERROR] Failures:{}}}{{{}[ERROR] > org.apache.cxf.jaxrs.ext.search.BeanspectorTest.testMismatchedOverriddenBeans{}}}{{{}[ERROR] > Run 1: BeanspectorTest.testMismatchedOverriddenBeans Expected exception: > java.lang.IllegalArgumentException{}}}{{{}[ERROR] Run 2: > BeanspectorTest.testMismatchedOverriddenBeans Expected exception: > java.lang.IllegalArgumentException{}}}{{{}[ERROR] Run 3: > BeanspectorTest.testMismatchedOverriddenBeans Expected exception: > java.lang.IllegalArgumentException{}}}{{{}[ERROR] Run 4: > BeanspectorTest.testMismatchedOverriddenBeans Expected exception: > java.lang.IllegalArgumentException{}}} > {{{}[ERROR] > org.apache.cxf.jaxrs.ext.search.BeanspectorTest.testMismatchedOverriddenBeans > - Time elapsed: 0.001 s <<< FAILURE!{}}}{{{}java.lang.AssertionError: > Expected exception: java.lang.IllegalArgumentException{}}} > We can improve this behaviour by detecting when IBM Java is in use, and > having IBM process declared methods first, then process remaining methods. > This will make IBM behave more like other JVMs. > I will provide a PR with the change in place. Currently testing on a variety > of platforms/JVMs to ensure tests pass. > {{//Class.getMethods does not provide an ordering.}} > {{//IBM Java tends to have a different ordering than other JVMs, so process > declared methods first.}} > {{//Process remaining methods after to not miss getter/setters.}} > {{if ("IBM Corporation".equals(System.getProperty("java.vendor"))) {}} > {{processMethods(tclass.getDeclaredMethods());}} > {{}}} > {{processMethods(tclass.getMethods());}} -- This message was sent by Atlassian Jira (v8.20.10#820010)