Hi Andy, David,
Thanks a lot guys for helping out with the TCK, @Andy you have a number of PRs
opened to fix TCK tests, may be you could spend some time to revive them? I
would
be more than happy to help out.
Thanks a lot.
Best Regards,
Andriy Redko
AM> Hi David,
AM> I had to do some digging - but yes, we addressed that issue in our Open
AM> Liberty fork of CXF and I must not have contributed that fix back to the
AM> main CXF fork (apologies for that).
AM> Here are the changes I made in the OL fork:
AM> https://github.com/OpenLiberty/open-liberty/pull/2504 - basically deferring
AM> the decoding until after the map has been populated. If you want, I can
AM> try to push this change back to the main CXF fork.
AM> Thanks for pointing this out,
AM> Andy
AM> On Mon, Apr 12, 2021 at 9:12 PM David Blevins <[email protected]>
AM> wrote:
>> Did you run into this in Open Liberty?
>> --
>> David Blevins
>> http://twitter.com/dblevins
>> http://www.tomitribe.com
>> Begin forwarded message:
>> *From: *David Blevins <[email protected]>
>> *Subject: **@Encoded TCK issue*
>> *Date: *April 12, 2021 at 7:07:35 PM PDT
>> *To: *[email protected]
>> Hi All,
>> I'm investigating a Jakarta EE TCK failure:
>> -
>> com/sun/ts/tests/jaxrs/ee/rs/beanparam/form/plain/JAXRSClient#formFieldParamEntityWithEncodedTest_from_standalone
>> This test posts a form and is checking to ensure the @Encoded annotation
>> is being respected. The code to respect that annotation is definitely
>> implemented, however before that code is called we've already parsed,
>> decoded and cached the form into the Message so the test fails.
>> -
>> https://github.com/apache/cxf/blob/master/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java#L1033-L1054
>> Essentially, due to this caching the "decode" boolean is ignored after the
>> first field of the bean is processed. When you have a bean like the
>> following where there are two fields, one results in 'decode=true' and the
>> second in 'decode=false', the second field's wishes will not happen as the
>> first field caused the form to be decoded and cached. The second field
>> will then get a decoded value despite the @Encoded annotation.
>> public class FormBeanParamEntity {
>> @DefaultValue(Constants.DEFAULT_VALUE)
>> @FormParam(Constants.PARAM_ENTITY_WITH_CONSTRUCTOR)
>> public ParamEntityWithConstructor paramEntityWithConstructor;
>> @Encoded
>> @DefaultValue(Constants.DEFAULT_VALUE)
>> @FormParam(Constants.PARAM_ENTITY_WITH_FROMSTRING)
>> public ParamEntityWithFromString paramEntityWithFromString;
>> So essentially @Encoded will only work as the first parameter, field, etc.
>> Investigating fixes at the moment and will submit a PR. Open to thoughts
>> and preferences. This is one of about 33 failures I'm hunting down.
>> -David