[ 
https://issues.apache.org/jira/browse/TOMEE-2233?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16610531#comment-16610531
 ] 

Richard Zowalla commented on TOMEE-2233:
----------------------------------------

Thanks for the link to the documentation.

 

We came up with using this:

 

{{otherProperties = jsonb.date-format:yyyy-MM-dd'T'HH:mm:ss.SSSZ}}

 

to configure the date-format pattern. This is working. However, it seems, that 
the default timezone for formatting is UTC.

However, for our use-case the localized date-format is necessary. From the 
documentation, we found, that there is a property "jsonb.locale", which allows 
for localization of the given time-format.

We then adapted the snippet for otherProperties as follows:

 
{code:java}
otherProperties = 
jsonb.date-format:yyyy-MM-dd'T'HH:mm:ss.SSSZ\njsonb.locale:de{code}
 

This seems fine. However, the endpoint will fail with:

 
{code:java}
<ns1:XMLFault 
xmlns:ns1="http://cxf.apache.org/bindings/xformat";><ns1:faultstring 
xmlns:ns1="http://cxf.apache.org/bindings/xformat";>java.lang.ClassCastException:
 Cannot cast java.lang.String to 
java.util.Locale</ns1:faultstring></ns1:XMLFault>{code}
 

As "de" cannot be casted to a java.util.Locale. This seems to be a problem of 
the following snippet from JsonbJaxrsProvider

 

 
{code:java}
public void setOtherProperties(final String others) {
    final Properties properties = new Properties() {{
        try {
            load(new StringReader(others));
        } catch (final IOException e) {
            throw new IllegalArgumentException(e);
        }
    }};
    properties.stringPropertyNames().forEach(k -> config.setProperty(k, 
properties.getProperty(k)));
    customized = true;
}{code}
 

As the configuration value is set as a "plain" String value in the JsonbConfig 
object via

 
{code:java}
public final JsonbConfig setProperty(String name, Object value) {
    this.configuration.put(name, value);
    return this;
}{code}
 

With this configuration, 
{code:java}
private void addDateFormatConfigConverters(final Map<AdapterKey, Adapter<?, ?>> 
converters, final ZoneId zoneIDUTC)
{code}
in JohnzonBuilder will fail with the aforementioned ClassCastException 

 
{code:java}
Caused by: java.lang.ClassCastException: Cannot cast java.lang.String to 
java.util.Locale
{code}
 

*Question:*

How can we specify a Locale in addition to the data-format via otherProperties?

> DateTimeParseException Regression when upgrading to TomEE 7.1.0
> ---------------------------------------------------------------
>
>                 Key: TOMEE-2233
>                 URL: https://issues.apache.org/jira/browse/TOMEE-2233
>             Project: TomEE
>          Issue Type: Bug
>          Components: TomEE Core Server
>    Affects Versions: 7.1
>         Environment: TomEE 7.1.0 (embedded, plus...), OpenJDK 8, 10, Windows 
> 10 & MacOs 10.13
>            Reporter: Martin Wiesner
>            Priority: Major
>
> When upgrading to TomEE 7.1.0 from 7.0.5, we encounter a regression. We 
> observe an unexpected behaviour with _JSON date format parsing_ which was 
> working correctly (as configured) in TomEE 7.0.5.
> It can be reproduced in several of our projects, see stack trace below.
> {code:java}
> Caused by: javax.json.bind.JsonbException: Text '20180910121456+0200' could 
> not be parsed at index 0
> at org.apache.johnzon.jsonb.JohnzonJsonb.fromJson(JohnzonJsonb.java:200)
> at 
> org.apache.johnzon.jaxrs.jsonb.jaxrs.JsonbJaxrsProvider.readFrom(JsonbJaxrsProvider.java:165)
> at 
> org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBodyReader(JAXRSUtils.java:1379)
> at org.apache.cxf.jaxrs.impl.ResponseImpl.doReadEntity(ResponseImpl.java:377)
> ... 57 more
> Caused by: org.apache.johnzon.mapper.MapperException: Text 
> '20180910121456+0200' could not be parsed at index 0
> at 
> org.apache.johnzon.mapper.MappingParserImpl.toValue(MappingParserImpl.java:716)
> at 
> org.apache.johnzon.mapper.MappingParserImpl.buildObject(MappingParserImpl.java:347)
> at 
> org.apache.johnzon.mapper.MappingParserImpl.readObject(MappingParserImpl.java:150)
> at 
> org.apache.johnzon.mapper.MappingParserImpl.readObject(MappingParserImpl.java:142)
> at 
> org.apache.johnzon.mapper.MappingParserImpl.readObject(MappingParserImpl.java:129)
> at org.apache.johnzon.mapper.Mapper.mapObject(Mapper.java:310)
> at org.apache.johnzon.mapper.Mapper.readObject(Mapper.java:228)
> at org.apache.johnzon.jsonb.JohnzonJsonb.fromJson(JohnzonJsonb.java:194)
> ... 60 more
> Caused by: java.time.format.DateTimeParseException: Text 
> '20180910121456+0200' could not be parsed at index 0
> at 
> java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
> at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
> at java.time.LocalDateTime.parse(LocalDateTime.java:492)
> at java.time.LocalDateTime.parse(LocalDateTime.java:477)
> at 
> org.apache.johnzon.jsonb.JohnzonBuilder$7.fromString(JohnzonBuilder.java:487)
> at 
> org.apache.johnzon.jsonb.JohnzonBuilder$7.fromString(JohnzonBuilder.java:479)
> at 
> org.apache.johnzon.mapper.internal.ConverterAdapter.to(ConverterAdapter.java:37)
> at 
> org.apache.johnzon.mapper.internal.ConverterAdapter.to(ConverterAdapter.java:24)
> at 
> org.apache.johnzon.mapper.MappingParserImpl.toValue(MappingParserImpl.java:710)
> ... 67 more{code}
>  
> MWE on GitHub will follow shortly via comment.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to