tomee-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Richard Zowalla (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (TOMEE-2233) DateTimeParseException Regression when upgrading to TomEE 7.1.0
Date Tue, 11 Sep 2018 12:32:00 GMT

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

Mime
View raw message