Punith DG created OLINGO-1173:
---------------------------------
Summary: CLONE - EdmDateTime format validation while parsing
Key: OLINGO-1173
URL: https://issues.apache.org/jira/browse/OLINGO-1173
Project: Olingo
Issue Type: Question
Components: odata2-core
Affects Versions: V2 2.0.6
Reporter: Punith DG
Assignee: Christian Amend
Hi Olingo Dev,
I am using olingo(for OData2 ) as a client to access some OData providers' APIs
.
I am using below jars
olingo-odata2-core-2.0.6.jar
olingo-odata2-api-2.0.6.jar
Olingo fails to parse the EdmDateTime field when the OData provider sends it
with a wrong data format
e.g.
<d:CreatedOn m:type="Edm.DateTime">2016-03-22T08:36:24Z</d:CreatedOn> data for
a Edm.DateTime field.
Microsoft dynamics CRM sends all its EdmDateTime in this wrong format.
Form the olingo code it looks like you force the data type to have the exact
same format that of the primitive types supported by OData. As defined here
http://www.odata.org/documentation/odata-version-2-0/overview/#AbstractTypeSystem
So this way an EdmDateTime should be always of this type --> 2000-12-12T12:00
while parsing this date we are getting below exception
Caused by: org.apache.olingo.odata2.api.edm.EdmSimpleTypeException: The
literal '2016-04-04T21:53:44Z' is not formatted properly.
at
org.apache.olingo.odata2.core.edm.EdmDateTime.parseLiteral(EdmDateTime.java:116)
at
org.apache.olingo.odata2.core.edm.EdmDateTime.internalValueOfString(EdmDateTime.java:91)
at
org.apache.olingo.odata2.core.edm.AbstractSimpleType.valueOfString(AbstractSimpleType.java:91)
at
org.apache.olingo.odata2.core.ep.consumer.XmlPropertyConsumer.convert(XmlPropertyConsumer.java:206)
at
org.apache.olingo.odata2.core.ep.consumer.XmlPropertyConsumer.readStartedElement(XmlPropertyConsumer.java:192)
at
org.apache.olingo.odata2.core.ep.consumer.XmlEntryConsumer.readProperties(XmlEntryConsumer.java:591)
at
org.apache.olingo.odata2.core.ep.consumer.XmlEntryConsumer.readContent(XmlEntryConsumer.java:544)
at
org.apache.olingo.odata2.core.ep.consumer.XmlEntryConsumer.handleStartedTag(XmlEntryConsumer.java:137)
at
org.apache.olingo.odata2.core.ep.consumer.XmlEntryConsumer.readEntry(XmlEntryConsumer.java:89)
As a consumer/client this is stopping us from using a major part of the API
specially query.
Question:
1) Is there any kind of configuration in olingo that allows olingo clients to
avoid this validation ?
2) Is there any way I can override those classes to relax validation?
I do not see any way to override EdmDateTime class (package
org.apache.olingo.odata2.core.edm)
As org.apache.olingo.odata2.core.edm.EdmDateTime.parseLiteral(String,
EdmFacets, Calendar) being a static method. Looks like you don’t want anyone to
override them.
3) Do you regard this as an issue or is it Working as design ? If it is working
as designed, then is there a way to work around this,
so that as a client we will still be able to parse wrong formatted data?
4) If there is no step taken yet and in case it is a well-known issue(?), is
there any near future plan to address this issue ?
Thanks,
Rahul
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)