[
https://issues.apache.org/jira/browse/OLINGO-657?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14541739#comment-14541739
]
M Carissimi edited comment on OLINGO-657 at 5/13/15 11:23 AM:
--------------------------------------------------------------
Hi [~mirbo]
we have noticed this issue when we request an entry where one of the key
properties is of type DateTime with milliseconds. For example, given the
following definition
{code}
<EntityType Name="EXECUTION">
<Key>
<PropertyRef Name="NAME"/>
<PropertyRef Name="START_DATETIME"/>
</Key>
<Property Name="NAME" Type="Edm.String" Nullable="false"/>
<Property Name="START_DATETIME" Type="Edm.DateTime" Nullable="false"/>
<Property Name="END_DATETIME" Type="Edm.DateTime" Nullable="true"/>
<Property Name="STATUS" Type="Edm.String" Nullable="false"/>
</EntityType>
{code}
When we request a single entry using
{{EXECUTION(NAME='TEST',START_DATETIME=datetime'2015-05-11T12:15:10.14')}}, our
code gets the key predicates from the UriInfo instance and then extracts the
key predicate literal:
{code}
List<KeyPredicate> myKeys = aUriInfo.getKeyPredicates();
for (int i = 0; i < myKeys.size(); i++)
{
KeyPredicate myKey = myKeys.get(i);
String myName = myKey.getProperty().getName();
String myValue = myKey.getLiteral();
{code}
The property value literal will be {{2015-05-11T12:15:10.14}} and if this is
passed to a SimpleDateFormat instance, the incorrect Calendar/Date object will
be returned. Using the EdmSimpleType.valueOfString(..) method provides the
correct Calendar/Date object.
Cheers
M
was (Author: michele energysys):
Hi [~mirbo]
we have noticed this issue when we request an entry where one of the key
properties is of type DateTime with milliseconds. For example, given the
following definition
{code}
<EntityType Name="EXECUTION">
<Key>
<PropertyRef Name="NAME"/>
<PropertyRef Name="START_DATETIME"/>
</Key>
<Property Name="NAME" Type="Edm.String" Nullable="false"/>
<Property Name="START_DATETIME" Type="Edm.DateTime" Nullable="false"/>
<Property Name="END_DATETIME" Type="Edm.DateTime" Nullable="true"/>
<Property Name="STATUS" Type="Edm.String" Nullable="false"/>
</EntityType>
{code}
When we request a single entry using
{{EXECUTION(NAME='TEST',START_DATETIME=datetime'2015-05-11T12:15:10.14')}}, our
code gets the key predicates from the UriInfo instance and then extracts the
key predicate literal:
{code}
List<KeyPredicate> myKeys = aUriInfo.getKeyPredicates();
for (int i = 0; i < myKeys.size(); i++)
{
KeyPredicate myKey = myKeys.get(i);
String myName = myKey.getProperty().getName();
String myValue = myKey.getLiteral();
{code}
The property value literal will be {{2015-05-11T12:15:10.14)}} and if this is
passed to a SimpleDateFormat instance, the incorrect Calendar/Date object will
be returned. Using the EdmSimpleType.valueOfString(..) method provides the
correct Calendar/Date object.
Cheers
M
> Milliseconds in DateTime data type
> ----------------------------------
>
> Key: OLINGO-657
> URL: https://issues.apache.org/jira/browse/OLINGO-657
> Project: Olingo
> Issue Type: Question
> Components: odata2-core
> Affects Versions: V2 2.0.3
> Reporter: M Carissimi
> Assignee: Michael Bolz
>
> Hello,
> we need to represent DateTime properties with milliseconds. I understand that
> OData V2 supports the use of this using the format
> datetime’yyyy-mm-ddThh:mm[:ss[.fffffff]]’.
> In our code, a start date time of 11/May/2015 12:15:10.140 (i.e. with
> milliseconds value of 140) is rendered as
> {code}
> <d:START_DATETIME
> m:type="Edm.DateTime">2015-05-11T12:15:10.14</d:START_DATETIME>
> {code}
> When we receive a request for an entry with key parameter
> START_DATETIME=datetime'2015-05-11T12:15:10.14', this is incorrectly parsed
> in Java because the format {{yyyy-MM-dd'T'hh:mm:ss.SSS}} returns the value
> *014* instead of *140* for milliseconds.
> Is there a way to ensure our entries use 3 digits for milliseconds so that we
> get:
> {code}<d:START_DATETIME
> m:type="Edm.DateTime">2015-05-11T12:15:10.14</d:START_DATETIME>
> {code}
> Alternatively, does Olingo provide utility classes to convert a datetime()
> String entry into a Java Date or Calendar?
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)