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

mibo commented on OLINGO-1373:
------------------------------

Hi [~Priyanka_Bharti],

[~manasiev] has given the right answer.

By default the return object for {{EdmDateTimeOffset}} is {{Calendar}}:

{quote}
  @Override
  public Class<?> getDefaultType() {
    return Calendar.class;
  }
{quote}


But the {{EdmSimpleType}} (interface) which is implemented by the 
{{EdmDateTimeOffset}} offers below method where you can pass another return 
type as parameter.

{quote}
  public <T> T valueOfString(String value, EdmLiteralKind literalKind, 
EdmFacets facets, Class<T> returnType) throws EdmSimpleTypeException;
{quote}

When you pass {{java.sql.Timestamp}} as {{returnType}} parameter you will get 
an according {{java.sql.Timestamp}} which contains the nanoseconds and without 
getting an exception.

Kind Regards, Michael
 

> Olingo Liabrary is not able to parse DataTime with nanosecond value which is 
> other than 0 or divisible by 1000000
> -----------------------------------------------------------------------------------------------------------------
>
>                 Key: OLINGO-1373
>                 URL: https://issues.apache.org/jira/browse/OLINGO-1373
>             Project: Olingo
>          Issue Type: Bug
>            Reporter: Priyanka Bharti
>            Priority: Blocker
>             Fix For: V2 2.0.10, V2 2.0.11
>
>   Original Estimate: 48h
>  Remaining Estimate: 48h
>
> Olingo is not able to parse DataTime value where nanosecond is not 0 or 
> divisible by 1000000
>  
> eg: 2014-01-10T20:02:08.8757980Z
>  
> I have debugged the issue, this issue is happening because of wrong 
> validation of DateTime format in olingo library.
>  
> Class: org.apache.olingo.odata2.core.edm.EdmDateTimeOffset.class
>  
> _if ((nanoSeconds % 1000000 != 0) && 
> (!(returnType.isAssignableFrom(Timestamp.class)))) {_
> _/* 119 */         throw new 
> EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_ILLEGAL_CONTENT.addContent(new
>  Object[] \{ value }));_
> _/*     */       }_
>  
> As per above code olingo expects the nanosecond should always be 0 or 
> divisible by 1000000,  Which is not the case in *StartDateTime* field of 
> *Task* businessObject.
>  
> *Valid payload:* 
>  
> <d:DueDateTime m:type="c4codata.LOCALNORMALISED_DateTime">
>                <d:timeZoneCode/>
>                <d:content>2014-01-10T20:32:08.0000000Z</d:content>
> </d:DueDateTime>
>  
> *Invalid Payload:*
>  ** 
> <d:StartDateTime m:type="c4codata.LOCALNORMALISED_DateTime">
>                <d:timeZoneCode/>
>                <d:content>2014-01-10T20:02:08.8757980Z</d:content>
> </d:StartDateTime>



--
This message was sent by Atlassian Jira
(v8.3.2#803003)

Reply via email to