You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@olingo.apache.org by Francesco Chicchiriccò <il...@apache.org> on 2014/03/22 12:00:26 UTC
Time primitive types for V4
Hi all,
I am almost done with OLINGO-65 and all client code is now using
Olingo's EdmType hierarchy, including EdmPrimitiveType children.
I am currently experiencing some troubles because EdmTimeOfDay /
EdmDateTimeOffset are not working as I would expect.
In the OData 4.0 ABNF grammar you can find that
dateTimeOffsetValue = year "-" month "-" day "T" hour ":" minute [ ":"
second [ "." fractionalSeconds ] ] ( "Z" / sign hour ":" minute )
timeOfDayValue = hour ":" minute [ ":" second [ "." fractionalSeconds ] ]
fractionalSeconds = 1*12DIGIT
This barely refers to EdmTimeOfDay / EdmDateTimeOffset literals and
states that you can have up to 12 fractional seconds digits, right?
But EdmTimeOfDay [2] and EdmDateTimeOffset [3] are only able to deal
with 3 fractional seconds digit - mostly because both internally use
Calendar as concrete implementation, and its precision arrives to
milliseconds at most.
As part of OLINGO-65 I have developed EdmDateTime for V3 (which you can
find at [4] since I haven't pushed yet); as you can see, it works
differently: instead of relying upon regexp, it uses SimpleDateFormat
and supports both Calendar and java.sql.Timestamp - which allows up to
nanoseconds.
What do you think? Shall I try to extends [2] and [3] to make them able
to work with up to 12 fractional second digits, as EdmDateTime is doing?
Even leaving the regexp mechanism there, in fact, I would need to use
java.sql.Timestamp as internal representation.
Moreover, [5] states, about "Precision" facet, that
> For a temporal property the value of this attribute specifies the
> number of decimal places allowed in the seconds portion of the
> property's value; it MUST be a non-negative integer between zero and
> twelve. If no value is specified, the temporal property has a
> precision of zero.
However, [3] do take the precision parameter into account (while [2] does).
Shall we fix this as well?
Regards.
[1]
http://docs.oasis-open.org/odata/odata/v4.0/os/abnf/odata-abnf-construction-rules.txt
[2]
https://git-wip-us.apache.org/repos/asf?p=incubator-olingo-odata4.git;a=blob;f=lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmTimeOfDay.java;
[3]
https://git-wip-us.apache.org/repos/asf?p=incubator-olingo-odata4.git;a=blob;f=lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDateTimeOffset.java;
[4] https://paste.apache.org/jilL
[5]
http://docs.oasis-open.org/odata/odata/v4.0/os/part3-csdl/odata-v4.0-os-part3-csdl.html#_Attribute_Precision_1
--
Francesco Chicchiriccò
Tirasa - Open Source Excellence
http://www.tirasa.net/
Involved at The Apache Software Foundation:
member, Syncope PMC chair, Cocoon PMC, Olingo PMC
http://people.apache.org/~ilgrosso/
Re: Time primitive types for V4
Posted by Francesco Chicchiriccò <il...@apache.org>.
On 22/03/2014 12:00, Francesco Chicchiriccò wrote:
> [...]
>
> Moreover, [5] states, about "Precision" facet, that
>
>> For a temporal property the value of this attribute specifies the
>> number of decimal places allowed in the seconds portion of the
>> property's value; it MUST be a non-negative integer between zero and
>> twelve. If no value is specified, the temporal property has a
>> precision of zero.
>
> However, [3] do take the precision parameter into account (while [2]
> does).
Sorry for the noise, I've just realized that both [2] and [3] treat
precision in the same way, e.g. correctly.
Regards.
> [1]
> http://docs.oasis-open.org/odata/odata/v4.0/os/abnf/odata-abnf-construction-rules.txt
> [2]
> https://git-wip-us.apache.org/repos/asf?p=incubator-olingo-odata4.git;a=blob;f=lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmTimeOfDay.java;
> [3]
> https://git-wip-us.apache.org/repos/asf?p=incubator-olingo-odata4.git;a=blob;f=lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDateTimeOffset.java;
> [4] https://paste.apache.org/jilL
> [5]
> http://docs.oasis-open.org/odata/odata/v4.0/os/part3-csdl/odata-v4.0-os-part3-csdl.html#_Attribute_Precision_1
--
Francesco Chicchiriccò
Tirasa - Open Source Excellence
http://www.tirasa.net/
Involved at The Apache Software Foundation:
member, Syncope PMC chair, Cocoon PMC, Olingo PMC
http://people.apache.org/~ilgrosso/
Re: Time primitive types for V4
Posted by Francesco Chicchiriccò <il...@apache.org>.
On 24/03/2014 10:02, Amend, Christian wrote:
> Hi Francesco,
>
> the changes you have made look fine to me. So you can go ahead and merge :-)
(As you might have guessed from the number of commit notification
e-mails) just done :-)
Regards.
> -----Original Message-----
> From: Francesco Chicchiriccò [mailto:ilgrosso@apache.org]
> Sent: Samstag, 22. März 2014 16:21
> To: dev@olingo.incubator.apache.org
> Subject: Re: Time primitive types for V4
>
> On 22/03/2014 14:15, Francesco Chicchiriccò wrote:
>> Hi,
>> I have opened OLINGO-214 for this, and attached a patch there: please
>> take a look and let me know if it is fine, so that I will commit it.
>>
>> FYI, I have also made some enhancements to V3 EdmDateTime - you can
>> take a look at the version at https://paste.apache.org/hRR3
> As commented in OLINGO-214, I removed that patch that got quickly
> obsolete: please take a look at mentioned classes in the olingo200
> branch for reference.
>
> Regards.
>
>> On 22/03/2014 12:00, Francesco Chicchiriccò wrote:
>>> Hi all,
>>> I am almost done with OLINGO-65 and all client code is now using
>>> Olingo's EdmType hierarchy, including EdmPrimitiveType children.
>>>
>>> I am currently experiencing some troubles because EdmTimeOfDay /
>>> EdmDateTimeOffset are not working as I would expect.
>>>
>>> In the OData 4.0 ABNF grammar you can find that
>>>
>>> dateTimeOffsetValue = year "-" month "-" day "T" hour ":" minute [
>>> ":" second [ "." fractionalSeconds ] ] ( "Z" / sign hour ":" minute )
>>> timeOfDayValue = hour ":" minute [ ":" second [ "." fractionalSeconds
>>> ] ]
>>> fractionalSeconds = 1*12DIGIT
>>>
>>> This barely refers to EdmTimeOfDay / EdmDateTimeOffset literals and
>>> states that you can have up to 12 fractional seconds digits, right?
>>> But EdmTimeOfDay [2] and EdmDateTimeOffset [3] are only able to deal
>>> with 3 fractional seconds digit - mostly because both internally use
>>> Calendar as concrete implementation, and its precision arrives to
>>> milliseconds at most.
>>>
>>> As part of OLINGO-65 I have developed EdmDateTime for V3 (which you
>>> can find at [4] since I haven't pushed yet); as you can see, it works
>>> differently: instead of relying upon regexp, it uses SimpleDateFormat
>>> and supports both Calendar and java.sql.Timestamp - which allows up
>>> to nanoseconds.
>>>
>>> What do you think? Shall I try to extends [2] and [3] to make them
>>> able to work with up to 12 fractional second digits, as EdmDateTime
>>> is doing? Even leaving the regexp mechanism there, in fact, I would
>>> need to use java.sql.Timestamp as internal representation.
>>>
>>> Moreover, [5] states, about "Precision" facet, that
>>>
>>>> For a temporal property the value of this attribute specifies the
>>>> number of decimal places allowed in the seconds portion of the
>>>> property's value; it MUST be a non-negative integer between zero and
>>>> twelve. If no value is specified, the temporal property has a
>>>> precision of zero.
>>> However, [3] do take the precision parameter into account (while [2]
>>> does).
>>>
>>> Shall we fix this as well?
>>>
>>> Regards.
>>>
>>> [1]
>>> http://docs.oasis-open.org/odata/odata/v4.0/os/abnf/odata-abnf-construction-rules.txt
>>> [2]
>>> https://git-wip-us.apache.org/repos/asf?p=incubator-olingo-odata4.git;a=blob;f=lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmTimeOfDay.java;
>>> [3]
>>> https://git-wip-us.apache.org/repos/asf?p=incubator-olingo-odata4.git;a=blob;f=lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDateTimeOffset.java;
>>> [4] https://paste.apache.org/jilL
>>> [5]
>>> http://docs.oasis-open.org/odata/odata/v4.0/os/part3-csdl/odata-v4.0-os-part3-csdl.html#_Attribute_Precision_1
--
Francesco Chicchiriccò
Tirasa - Open Source Excellence
http://www.tirasa.net/
Involved at The Apache Software Foundation:
member, Syncope PMC chair, Cocoon PMC, Olingo PMC
http://people.apache.org/~ilgrosso/
RE: Time primitive types for V4
Posted by "Amend, Christian" <ch...@sap.com>.
Hi Francesco,
the changes you have made look fine to me. So you can go ahead and merge :-)
Best Regards,
Christian
-----Original Message-----
From: Francesco Chicchiriccò [mailto:ilgrosso@apache.org]
Sent: Samstag, 22. März 2014 16:21
To: dev@olingo.incubator.apache.org
Subject: Re: Time primitive types for V4
On 22/03/2014 14:15, Francesco Chicchiriccò wrote:
> Hi,
> I have opened OLINGO-214 for this, and attached a patch there: please
> take a look and let me know if it is fine, so that I will commit it.
>
> FYI, I have also made some enhancements to V3 EdmDateTime - you can
> take a look at the version at https://paste.apache.org/hRR3
As commented in OLINGO-214, I removed that patch that got quickly
obsolete: please take a look at mentioned classes in the olingo200
branch for reference.
Regards.
> On 22/03/2014 12:00, Francesco Chicchiriccò wrote:
>> Hi all,
>> I am almost done with OLINGO-65 and all client code is now using
>> Olingo's EdmType hierarchy, including EdmPrimitiveType children.
>>
>> I am currently experiencing some troubles because EdmTimeOfDay /
>> EdmDateTimeOffset are not working as I would expect.
>>
>> In the OData 4.0 ABNF grammar you can find that
>>
>> dateTimeOffsetValue = year "-" month "-" day "T" hour ":" minute [
>> ":" second [ "." fractionalSeconds ] ] ( "Z" / sign hour ":" minute )
>> timeOfDayValue = hour ":" minute [ ":" second [ "." fractionalSeconds
>> ] ]
>> fractionalSeconds = 1*12DIGIT
>>
>> This barely refers to EdmTimeOfDay / EdmDateTimeOffset literals and
>> states that you can have up to 12 fractional seconds digits, right?
>> But EdmTimeOfDay [2] and EdmDateTimeOffset [3] are only able to deal
>> with 3 fractional seconds digit - mostly because both internally use
>> Calendar as concrete implementation, and its precision arrives to
>> milliseconds at most.
>>
>> As part of OLINGO-65 I have developed EdmDateTime for V3 (which you
>> can find at [4] since I haven't pushed yet); as you can see, it works
>> differently: instead of relying upon regexp, it uses SimpleDateFormat
>> and supports both Calendar and java.sql.Timestamp - which allows up
>> to nanoseconds.
>>
>> What do you think? Shall I try to extends [2] and [3] to make them
>> able to work with up to 12 fractional second digits, as EdmDateTime
>> is doing? Even leaving the regexp mechanism there, in fact, I would
>> need to use java.sql.Timestamp as internal representation.
>>
>> Moreover, [5] states, about "Precision" facet, that
>>
>>> For a temporal property the value of this attribute specifies the
>>> number of decimal places allowed in the seconds portion of the
>>> property's value; it MUST be a non-negative integer between zero and
>>> twelve. If no value is specified, the temporal property has a
>>> precision of zero.
>>
>> However, [3] do take the precision parameter into account (while [2]
>> does).
>>
>> Shall we fix this as well?
>>
>> Regards.
>>
>> [1]
>> http://docs.oasis-open.org/odata/odata/v4.0/os/abnf/odata-abnf-construction-rules.txt
>> [2]
>> https://git-wip-us.apache.org/repos/asf?p=incubator-olingo-odata4.git;a=blob;f=lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmTimeOfDay.java;
>> [3]
>> https://git-wip-us.apache.org/repos/asf?p=incubator-olingo-odata4.git;a=blob;f=lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDateTimeOffset.java;
>> [4] https://paste.apache.org/jilL
>> [5]
>> http://docs.oasis-open.org/odata/odata/v4.0/os/part3-csdl/odata-v4.0-os-part3-csdl.html#_Attribute_Precision_1
--
Francesco Chicchiriccò
Tirasa - Open Source Excellence
http://www.tirasa.net/
Involved at The Apache Software Foundation:
member, Syncope PMC chair, Cocoon PMC, Olingo PMC
http://people.apache.org/~ilgrosso/
Re: Time primitive types for V4
Posted by Francesco Chicchiriccò <il...@apache.org>.
On 22/03/2014 14:15, Francesco Chicchiriccò wrote:
> Hi,
> I have opened OLINGO-214 for this, and attached a patch there: please
> take a look and let me know if it is fine, so that I will commit it.
>
> FYI, I have also made some enhancements to V3 EdmDateTime - you can
> take a look at the version at https://paste.apache.org/hRR3
As commented in OLINGO-214, I removed that patch that got quickly
obsolete: please take a look at mentioned classes in the olingo200
branch for reference.
Regards.
> On 22/03/2014 12:00, Francesco Chicchiriccò wrote:
>> Hi all,
>> I am almost done with OLINGO-65 and all client code is now using
>> Olingo's EdmType hierarchy, including EdmPrimitiveType children.
>>
>> I am currently experiencing some troubles because EdmTimeOfDay /
>> EdmDateTimeOffset are not working as I would expect.
>>
>> In the OData 4.0 ABNF grammar you can find that
>>
>> dateTimeOffsetValue = year "-" month "-" day "T" hour ":" minute [
>> ":" second [ "." fractionalSeconds ] ] ( "Z" / sign hour ":" minute )
>> timeOfDayValue = hour ":" minute [ ":" second [ "." fractionalSeconds
>> ] ]
>> fractionalSeconds = 1*12DIGIT
>>
>> This barely refers to EdmTimeOfDay / EdmDateTimeOffset literals and
>> states that you can have up to 12 fractional seconds digits, right?
>> But EdmTimeOfDay [2] and EdmDateTimeOffset [3] are only able to deal
>> with 3 fractional seconds digit - mostly because both internally use
>> Calendar as concrete implementation, and its precision arrives to
>> milliseconds at most.
>>
>> As part of OLINGO-65 I have developed EdmDateTime for V3 (which you
>> can find at [4] since I haven't pushed yet); as you can see, it works
>> differently: instead of relying upon regexp, it uses SimpleDateFormat
>> and supports both Calendar and java.sql.Timestamp - which allows up
>> to nanoseconds.
>>
>> What do you think? Shall I try to extends [2] and [3] to make them
>> able to work with up to 12 fractional second digits, as EdmDateTime
>> is doing? Even leaving the regexp mechanism there, in fact, I would
>> need to use java.sql.Timestamp as internal representation.
>>
>> Moreover, [5] states, about "Precision" facet, that
>>
>>> For a temporal property the value of this attribute specifies the
>>> number of decimal places allowed in the seconds portion of the
>>> property's value; it MUST be a non-negative integer between zero and
>>> twelve. If no value is specified, the temporal property has a
>>> precision of zero.
>>
>> However, [3] do take the precision parameter into account (while [2]
>> does).
>>
>> Shall we fix this as well?
>>
>> Regards.
>>
>> [1]
>> http://docs.oasis-open.org/odata/odata/v4.0/os/abnf/odata-abnf-construction-rules.txt
>> [2]
>> https://git-wip-us.apache.org/repos/asf?p=incubator-olingo-odata4.git;a=blob;f=lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmTimeOfDay.java;
>> [3]
>> https://git-wip-us.apache.org/repos/asf?p=incubator-olingo-odata4.git;a=blob;f=lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDateTimeOffset.java;
>> [4] https://paste.apache.org/jilL
>> [5]
>> http://docs.oasis-open.org/odata/odata/v4.0/os/part3-csdl/odata-v4.0-os-part3-csdl.html#_Attribute_Precision_1
--
Francesco Chicchiriccò
Tirasa - Open Source Excellence
http://www.tirasa.net/
Involved at The Apache Software Foundation:
member, Syncope PMC chair, Cocoon PMC, Olingo PMC
http://people.apache.org/~ilgrosso/
Re: Time primitive types for V4
Posted by Francesco Chicchiriccò <il...@apache.org>.
Hi,
I have opened OLINGO-214 for this, and attached a patch there: please
take a look and let me know if it is fine, so that I will commit it.
FYI, I have also made some enhancements to V3 EdmDateTime - you can take
a look at the version at https://paste.apache.org/hRR3
Regards.
On 22/03/2014 12:00, Francesco Chicchiriccò wrote:
> Hi all,
> I am almost done with OLINGO-65 and all client code is now using
> Olingo's EdmType hierarchy, including EdmPrimitiveType children.
>
> I am currently experiencing some troubles because EdmTimeOfDay /
> EdmDateTimeOffset are not working as I would expect.
>
> In the OData 4.0 ABNF grammar you can find that
>
> dateTimeOffsetValue = year "-" month "-" day "T" hour ":" minute [ ":"
> second [ "." fractionalSeconds ] ] ( "Z" / sign hour ":" minute )
> timeOfDayValue = hour ":" minute [ ":" second [ "." fractionalSeconds ] ]
> fractionalSeconds = 1*12DIGIT
>
> This barely refers to EdmTimeOfDay / EdmDateTimeOffset literals and
> states that you can have up to 12 fractional seconds digits, right?
> But EdmTimeOfDay [2] and EdmDateTimeOffset [3] are only able to deal
> with 3 fractional seconds digit - mostly because both internally use
> Calendar as concrete implementation, and its precision arrives to
> milliseconds at most.
>
> As part of OLINGO-65 I have developed EdmDateTime for V3 (which you
> can find at [4] since I haven't pushed yet); as you can see, it works
> differently: instead of relying upon regexp, it uses SimpleDateFormat
> and supports both Calendar and java.sql.Timestamp - which allows up to
> nanoseconds.
>
> What do you think? Shall I try to extends [2] and [3] to make them
> able to work with up to 12 fractional second digits, as EdmDateTime is
> doing? Even leaving the regexp mechanism there, in fact, I would need
> to use java.sql.Timestamp as internal representation.
>
> Moreover, [5] states, about "Precision" facet, that
>
>> For a temporal property the value of this attribute specifies the
>> number of decimal places allowed in the seconds portion of the
>> property's value; it MUST be a non-negative integer between zero and
>> twelve. If no value is specified, the temporal property has a
>> precision of zero.
>
> However, [3] do take the precision parameter into account (while [2]
> does).
>
> Shall we fix this as well?
>
> Regards.
>
> [1]
> http://docs.oasis-open.org/odata/odata/v4.0/os/abnf/odata-abnf-construction-rules.txt
> [2]
> https://git-wip-us.apache.org/repos/asf?p=incubator-olingo-odata4.git;a=blob;f=lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmTimeOfDay.java;
> [3]
> https://git-wip-us.apache.org/repos/asf?p=incubator-olingo-odata4.git;a=blob;f=lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDateTimeOffset.java;
> [4] https://paste.apache.org/jilL
> [5]
> http://docs.oasis-open.org/odata/odata/v4.0/os/part3-csdl/odata-v4.0-os-part3-csdl.html#_Attribute_Precision_1
--
Francesco Chicchiriccò
Tirasa - Open Source Excellence
http://www.tirasa.net/
Involved at The Apache Software Foundation:
member, Syncope PMC chair, Cocoon PMC, Olingo PMC
http://people.apache.org/~ilgrosso/