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