[ 
https://issues.apache.org/jira/browse/OLINGO-548?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sven Kobler-Morris closed OLINGO-548.
-------------------------------------
    Resolution: Not A Problem

Hello,

per OData specification 2.0 the year(and other related) methods only accept 
parameter of type Edm.DateTime. The usage of DateTimOffset is not supported.

regards,
Sven

> Filter by year/day/month does not work for DateTimeOffset properties
> --------------------------------------------------------------------
>
>                 Key: OLINGO-548
>                 URL: https://issues.apache.org/jira/browse/OLINGO-548
>             Project: Olingo
>          Issue Type: Bug
>    Affects Versions: V2 1.2.0, V2 2.0.1
>            Reporter: M Carissimi
>            Assignee: Sven Kobler-Morris
>
> Some filter functions don't work when applied to a DateTimeOffset property. 
> For example, the following filter is deemed as invalid by Olingo when 
> PRODUCTION_DATE is of type DateTimeOffset:
> $filter=year(PRODUCTION_DATE) eq 2013
> The same filter on the same entity works without issues when PRODUCTION_DATE 
> is of type DateTime.
> Can you please investigate this issue?
> Stack Trace:
> {code}
> SEVERE: org.apache.olingo.odata2.api.uri.UriSyntaxException: Invalid filter 
> expression: 'year(PRODUCTION_DATE) eq 2013'.
>       at 
> org.apache.olingo.odata2.core.uri.UriParserImpl.handleSystemQueryOptionFilter(UriParserImpl.java:595)
>       at 
> org.apache.olingo.odata2.core.uri.UriParserImpl.handleSystemQueryOptions(UriParserImpl.java:556)
>       at 
> org.apache.olingo.odata2.core.uri.UriParserImpl.parse(UriParserImpl.java:116)
>       at 
> org.apache.olingo.odata2.core.ODataRequestHandler.handle(ODataRequestHandler.java:107)
>       at 
> org.apache.olingo.odata2.core.rest.ODataSubLocator.handle(ODataSubLocator.java:155)
>       at 
> org.apache.olingo.odata2.core.rest.ODataSubLocator.handleGet(ODataSubLocator.java:56)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:606)
>       at 
> org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:180)
>       at 
> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96)
>       at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:198)
>       at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:261)
>       at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:100)
>       at 
> org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
>       at 
> org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:94)
>       at 
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
>       at 
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
>       at 
> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239)
>       at 
> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223)
>       at 
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:203)
>       at 
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:137)
>       at 
> org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:158)
>       at 
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:243)
>       at 
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:168)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
>       at 
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:219)
>       at 
> org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
>       at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
>       at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
>       at 
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
>       at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
>       at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
>       at 
> org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
>       at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
>       at 
> com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
>       at 
> com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
>       at 
> com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
>       at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
>       at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
>       at 
> com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
>       at 
> com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
>       at 
> com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
>       at 
> com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
>       at 
> com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
>       at 
> com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
>       at 
> com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
>       at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
>       at 
> com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
>       at 
> com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
>       at java.lang.Thread.run(Thread.java:744)
> Caused by: 
> org.apache.olingo.odata2.api.uri.expression.ExpressionParserException: No 
> applicable method found for "year" at position 1 in "year(PRODUCTION_DATE) eq 
> 2013" for the specified argument types.
>       at 
> org.apache.olingo.odata2.core.uri.expression.FilterParserExceptionImpl.createMETHOD_WRONG_INPUT_TYPE(FilterParserExceptionImpl.java:172)
>       at 
> org.apache.olingo.odata2.core.uri.expression.FilterParserImpl.validateMethodTypes(FilterParserImpl.java:645)
>       at 
> org.apache.olingo.odata2.core.uri.expression.FilterParserImpl.readMethod(FilterParserImpl.java:395)
>       at 
> org.apache.olingo.odata2.core.uri.expression.FilterParserImpl.readElement(FilterParserImpl.java:358)
>       at 
> org.apache.olingo.odata2.core.uri.expression.FilterParserImpl.readElement(FilterParserImpl.java:306)
>       at 
> org.apache.olingo.odata2.core.uri.expression.FilterParserImpl.parseFilterString(FilterParserImpl.java:97)
>       at 
> org.apache.olingo.odata2.core.uri.UriParserImpl.handleSystemQueryOptionFilter(UriParserImpl.java:593)
>       ... 56 more
> {code}



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

Reply via email to