SE 21 introduced SequencedCollections with getFirst & getLast methods and the problem is, that the TCK currently treats them as regular properties - they are being returned by java.beans.Introspector, so the framework tries to find corresponding first and last fields and because they are not there, testing fails with BeansError/NoSuchElementException
Full stacktrace
```
#section:execute
----------messages:(1/1035)----------
command: javasoft.sqe.javatest.lib.ExecStdTestOtherJVMCmd CLASSPATH=/home/g/oracle/jaxb-tck/xml-binding-tck/classes:/home/g/oracle/jaxb-tck/checker.jar:/home/g/oracle/jaxb-tck/jaxb-ri/mod/jakarta.xml.bind-api.jar:/home/g/oracle/jaxb-tck/jaxb-ri/mod/jaxb-impl.jar:/home/g/oracle/jaxb-tck/jaxb-ri/mod/jaxb-jxc.jar:/home/g/oracle/jaxb-tck/jaxb-ri/mod/jakarta.activation-api.jar:/home/g/oracle/jaxb-tck/xml-binding-tck/lib/javatest.jar:/home/g/oracle/jaxb-tck/xml-binding-tck/lib/jtlegacy.jar:/home/g/oracle/jaxb-tck/batch-multiJVM/work/classes:/home/g/oracle/jaxb-tck/batch-multiJVM/work/classes/additional/addb122 /home/g/oracle/jaxb-tck/jdk-21.0.1/bin/java -Djava.security.policy=/home/g/oracle/jaxb-tck/xml-binding-tck/lib/tck.policy javasoft.sqe.tests.api.jakarta.xml.bind.JAXBTest -TestURL file:/home/g/oracle/jaxb-tck/xml-binding-tck/tests/xml_schema/msData/additional/jaxb/addB122.html#addB122.v -package javasoft.sqe.tests.additional.addb122 -out :ref -document ../addB122.xml -pcontent addb122-addB122.jbx -schema ../addB122.xsd
----------out1:(35/2376)----------
marshal: Passed. OK
unmarshal: Passed. OK
java.lang.RuntimeException: Beans error.
at com.sun.jaxb_tck.lib.persistence.Comparator.compareBeansAsTrees(Comparator.java:269)
at com.sun.jaxb_tck.lib.persistence.Comparator.compareBeans(Comparator.java:192)
at javasoft.sqe.tests.api.jakarta.xml.bind.JAXBTest.compareContent(JAXBTest.java:285)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at javasoft.sqe.javatest.lib.MultiTest.invokeTestCase(MultiTest.java:409)
at javasoft.sqe.jck.lib.MultiTestExt.invokeTestCase(MultiTestExt.java:246)
at javasoft.sqe.javatest.lib.MultiTest.run(MultiTest.java:205)
at javasoft.sqe.tests.api.jakarta.xml.bind.JAXBTest.main(JAXBTest.java:50)
Caused by: java.lang.RuntimeException: Beans error.
at com.sun.jaxb_tck.lib.persistence.Comparator.compareBeansAsTrees(Comparator.java:269)
at com.sun.jaxb_tck.lib.persistence.Comparator.compareBeans(Comparator.java:192)
at com.sun.jaxb_tck.lib.persistence.Comparator$ComparableObject.compareTo(Comparator.java:62)
at com.sun.jaxb_tck.lib.persistence.Comparator.compareBeansAsTrees(Comparator.java:250)
... 8 more
Caused by: java.lang.RuntimeException: Beans error.
at com.sun.jaxb_tck.lib.persistence.Comparator.compareBeansAsTrees(Comparator.java:269)
at com.sun.jaxb_tck.lib.persistence.Comparator.compareBeans(Comparator.java:192)
at com.sun.jaxb_tck.lib.persistence.Comparator$ComparableObject.compareTo(Comparator.java:62)
at com.sun.jaxb_tck.lib.persistence.Comparator.compareBeansAsTrees(Comparator.java:250)
... 11 more
Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:118)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at com.sun.jaxb_tck.lib.persistence.Comparator.compareBeansAsTrees(Comparator.java:240)
... 14 more
Caused by: java.util.NoSuchElementException
at java.base/java.util.ArrayList.getFirst(ArrayList.java:439)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
... 16 more
compareContent: Failed. Test case throws exception: java.lang.RuntimeException: Beans error.
STATUS:Failed.test cases: 3; passed: 2; failed: 1; first test case failure: compareContent
```
This fixes the comparator to explicitly ignore first and last fields in comparisons involving SequencedCollections in a way it is usable on older JDKs as well
SE 21 introduced SequencedCollections with
getFirst
&getLast
methods and the problem is, that the TCK currently treats them as regular properties - they are being returned byjava.beans.Introspector
, so the framework tries to find correspondingfirst
andlast
fields and because they are not there, testing fails with BeansError/NoSuchElementExceptionFull stacktrace
``` #section:execute ----------messages:(1/1035)---------- command: javasoft.sqe.javatest.lib.ExecStdTestOtherJVMCmd CLASSPATH=/home/g/oracle/jaxb-tck/xml-binding-tck/classes:/home/g/oracle/jaxb-tck/checker.jar:/home/g/oracle/jaxb-tck/jaxb-ri/mod/jakarta.xml.bind-api.jar:/home/g/oracle/jaxb-tck/jaxb-ri/mod/jaxb-impl.jar:/home/g/oracle/jaxb-tck/jaxb-ri/mod/jaxb-jxc.jar:/home/g/oracle/jaxb-tck/jaxb-ri/mod/jakarta.activation-api.jar:/home/g/oracle/jaxb-tck/xml-binding-tck/lib/javatest.jar:/home/g/oracle/jaxb-tck/xml-binding-tck/lib/jtlegacy.jar:/home/g/oracle/jaxb-tck/batch-multiJVM/work/classes:/home/g/oracle/jaxb-tck/batch-multiJVM/work/classes/additional/addb122 /home/g/oracle/jaxb-tck/jdk-21.0.1/bin/java -Djava.security.policy=/home/g/oracle/jaxb-tck/xml-binding-tck/lib/tck.policy javasoft.sqe.tests.api.jakarta.xml.bind.JAXBTest -TestURL file:/home/g/oracle/jaxb-tck/xml-binding-tck/tests/xml_schema/msData/additional/jaxb/addB122.html#addB122.v -package javasoft.sqe.tests.additional.addb122 -out :ref -document ../addB122.xml -pcontent addb122-addB122.jbx -schema ../addB122.xsd ----------out1:(35/2376)---------- marshal: Passed. OK unmarshal: Passed. OK java.lang.RuntimeException: Beans error. at com.sun.jaxb_tck.lib.persistence.Comparator.compareBeansAsTrees(Comparator.java:269) at com.sun.jaxb_tck.lib.persistence.Comparator.compareBeans(Comparator.java:192) at javasoft.sqe.tests.api.jakarta.xml.bind.JAXBTest.compareContent(JAXBTest.java:285) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at javasoft.sqe.javatest.lib.MultiTest.invokeTestCase(MultiTest.java:409) at javasoft.sqe.jck.lib.MultiTestExt.invokeTestCase(MultiTestExt.java:246) at javasoft.sqe.javatest.lib.MultiTest.run(MultiTest.java:205) at javasoft.sqe.tests.api.jakarta.xml.bind.JAXBTest.main(JAXBTest.java:50) Caused by: java.lang.RuntimeException: Beans error. at com.sun.jaxb_tck.lib.persistence.Comparator.compareBeansAsTrees(Comparator.java:269) at com.sun.jaxb_tck.lib.persistence.Comparator.compareBeans(Comparator.java:192) at com.sun.jaxb_tck.lib.persistence.Comparator$ComparableObject.compareTo(Comparator.java:62) at com.sun.jaxb_tck.lib.persistence.Comparator.compareBeansAsTrees(Comparator.java:250) ... 8 more Caused by: java.lang.RuntimeException: Beans error. at com.sun.jaxb_tck.lib.persistence.Comparator.compareBeansAsTrees(Comparator.java:269) at com.sun.jaxb_tck.lib.persistence.Comparator.compareBeans(Comparator.java:192) at com.sun.jaxb_tck.lib.persistence.Comparator$ComparableObject.compareTo(Comparator.java:62) at com.sun.jaxb_tck.lib.persistence.Comparator.compareBeansAsTrees(Comparator.java:250) ... 11 more Caused by: java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:118) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at com.sun.jaxb_tck.lib.persistence.Comparator.compareBeansAsTrees(Comparator.java:240) ... 14 more Caused by: java.util.NoSuchElementException at java.base/java.util.ArrayList.getFirst(ArrayList.java:439) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ... 16 more compareContent: Failed. Test case throws exception: java.lang.RuntimeException: Beans error. STATUS:Failed.test cases: 3; passed: 2; failed: 1; first test case failure: compareContent ```This fixes the comparator to explicitly ignore
first
andlast
fields in comparisons involvingSequencedCollections
in a way it is usable on older JDKs as well