[ 
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)

Reply via email to