[
https://issues.apache.org/jira/browse/CXF-8996?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andriy Redko updated CXF-8996:
------------------------------
Fix Version/s: 3.5.9
3.6.4
> 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: 3.5.8, 3.6.3, 4.0.4
> Reporter: Jamie Mark Goodyear
> Priority: Major
> Fix For: 3.5.9, 4.0.5, 3.6.4
>
>
> 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)