You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@olingo.apache.org by "Ramesh Reddy (JIRA)" <ji...@apache.org> on 2016/02/03 19:14:39 UTC

[jira] [Commented] (OLINGO-864) EdmDate and EdmTimeOfDay output in local timezone

    [ https://issues.apache.org/jira/browse/OLINGO-864?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15130797#comment-15130797 ] 

Ramesh Reddy commented on OLINGO-864:
-------------------------------------

[~chrisam] or [~mibo] Can you take look at this branch for the changes, and pull into master?

Basically, the changes include, during the Edm.Date and Edm.TimeOfDay the "GMT" assumed, however there is no timezone information defined on these OData types. Then the problem gets exacerbated when it gets when working with java util and sql types. The solution is this patch simple, but elegant, it assumes the parsing timezone for the types be "local" timezone, but gives the ability to override to a specific TimeZone if needed. Also, correctly normalizes the java.sql.Time and java.sql.Date objects during conversion from different time zones.

The branch name is "OLINGO-864" and also viewed here https://github.com/apache/olingo-odata4/tree/OLINGO-864


> EdmDate and EdmTimeOfDay output in local timezone
> -------------------------------------------------
>
>                 Key: OLINGO-864
>                 URL: https://issues.apache.org/jira/browse/OLINGO-864
>             Project: Olingo
>          Issue Type: Bug
>          Components: odata4-commons
>    Affects Versions: (Java) V4 4.0.0-beta-01
>            Reporter: Ramesh Reddy
>            Assignee: Ramesh Reddy
>            Priority: Critical
>             Fix For: (Java) V4 4.2.0
>
>
> EdmDate and EdmTimeOfDay both assume GMT for incoming string values - however when the convert from Java objects to string they use the local/default Calendar. 
> OData TC says  parsing Date or Time should be exactly same in every time zone.
> This highlights the issue with EdmDate:
> TimeZone.setDefault(TimeZone.getTimeZone("GMT-1"));
> java.sql.Timestamp date = EdmDate.getInstance().valueOfString("2000-01-01", true, 4000, 0, 0, true, java.sql.Timestamp.class);
> assertEquals("1999-12-31 23:00:00.0", date.toString());
> String val = EdmDate.getInstance().valueToString(date, true, 4000, 0, 0, true);
> assertEquals("2000-01-01", date.toString());
> The last line fails because the date will be "1999-12-31" instead.
> Linked issue at https://issues.jboss.org/browse/TEIID-3938



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)