[ https://issues.apache.org/jira/browse/CXF-6880?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Sergey Beryozkin updated CXF-6880: ---------------------------------- Component/s: JAX-RS > ODATA Parser : searching object from Id of its nested object failed > ------------------------------------------------------------------- > > Key: CXF-6880 > URL: https://issues.apache.org/jira/browse/CXF-6880 > Project: CXF > Issue Type: Bug > Components: JAX-RS > Affects Versions: 3.1.6 > Environment: Jdk 1.8, Spring, JPA, REST > Reporter: Frederic MONCLAR > Priority: Blocker > Attachments: class hierarchy.png > > > Hi, > I'm using odata parser to manage odata request. When I'm doing a simple > request as : $filter=id eq 1 on object entity containing id parameter, the > matching type action is resolved, but when I'm doing it again on a nested > object on the same parameter type as : $filter=call.id eq 1 it failed. > I'm getting the following exception : > 2016-04-25 12:20:12.728 INFO 12020 --- [nio-8081-exec-1] > o.a.c.c.C.[.[.[/api/business/v0] : Initializing Spring > FrameworkServlet 'dispatcherServlet' > 2016-04-25 12:20:12.768 DEBUG 12020 --- [nio-8081-exec-1] > o.s.b.c.web.OrderedRequestContextFilter : Bound request context to thread: > org.apache.catalina.connector.RequestFacade@35a2318d > 2016-04-25 12:20:13.235 DEBUG 12020 --- [nio-8081-exec-1] > o.s.b.c.web.OrderedRequestContextFilter : Cleared thread-bound request > context: org.apache.catalina.connector.RequestFacade@35a2318d > 2016-04-25 12:20:13.239 ERROR 12020 --- [nio-8081-exec-1] > o.a.c.c.C.[.[.[.[dispatcherServlet] : Servlet.service() for servlet > [dispatcherServlet] in context with path [/api/business/v0] threw exception > [Request processing failed; nested exception is > fr.gyptis.ci5.backend.commons.exception.RequestException: > org.apache.cxf.jaxrs.ext.search.SearchParseException: Cannot convert String > value "1" to a value of class > fr.gyptis.ci5.backend.business.dao.entities.Call] with root cause > java.lang.NoSuchMethodException: java.io.Serializable.<init>() > at java.lang.Class.getConstructor0(Class.java:3082) ~[na:1.8.0_72] > at java.lang.Class.newInstance(Class.java:412) ~[na:1.8.0_72] > at > org.apache.cxf.jaxrs.ext.search.AbstractSearchConditionParser.parseType(AbstractSearchConditionParser.java:208) > ~[cxf-rt-rs-extension-search-3.1.6.jar:3.1.6] > at > org.apache.cxf.jaxrs.ext.search.odata.ODataParser.access$600(ODataParser.java:61) > ~[cxf-rt-rs-extension-search-3.1.6.jar:3.1.6] > at > org.apache.cxf.jaxrs.ext.search.odata.ODataParser$FilterExpressionVisitor.visitBinary(ODataParser.java:173) > ~[cxf-rt-rs-extension-search-3.1.6.jar:3.1.6] > at > org.apache.olingo.odata2.core.uri.expression.BinaryExpressionImpl.accept(BinaryExpressionImpl.java:90) > ~[olingo-odata2-core-2.0.6.jar:2.0.6] > at > org.apache.olingo.odata2.core.uri.expression.FilterExpressionImpl.accept(FilterExpressionImpl.java:58) > ~[olingo-odata2-core-2.0.6.jar:2.0.6] > at > org.apache.cxf.jaxrs.ext.search.odata.ODataParser.parse(ODataParser.java:286) > ~[cxf-rt-rs-extension-search-3.1.6.jar:3.1.6] > at > fr.gyptis.ci5.backend.business.init.SearchContext.getCondition(SearchContext.java:118) > ~[classes/:na] > at > fr.gyptis.ci5.backend.business.init.SearchContext.getCondition(SearchContext.java:99) > ~[classes/:na] > at > fr.gyptis.ci5.backend.business.init.SearchContext.getCondition(SearchContext.java:94) > ~[classes/:na] > at > fr.gyptis.ci5.backend.business.init.SearchContext.getCondition(SearchContext.java:81) > ~[classes/:na] > at > fr.gyptis.ci5.backend.business.dao.facade.impl.CallHeaderDaoImpl.findAllByCriteria(CallHeaderDaoImpl.java:45) > ~[classes/:na] > at > fr.gyptis.ci5.backend.business.resources.CallHeaderResource.findAll(CallHeaderResource.java:81) > ~[classes/:na] > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > ~[na:1.8.0_72] > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > ~[na:1.8.0_72] > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > ~[na:1.8.0_72] > at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_72] > at > org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:222) > ~[spring-web-4.2.4.RELEASE.jar:4.2.4.RELEASE] > at > org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) > ~[spring-web-4.2.4.RELEASE.jar:4.2.4.RELEASE] > at > org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) > ~[spring-webmvc-4.2.4.RELEASE.jar:4.2.4.RELEASE] > at > org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:814) > ~[spring-webmvc-4.2.4.RELEASE.jar:4.2.4.RELEASE] > at > org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:737) > ~[spring-webmvc-4.2.4.RELEASE.jar:4.2.4.RELEASE] > at > org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) > ~[spring-webmvc-4.2.4.RELEASE.jar:4.2.4.RELEASE] > at > org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) > ~[spring-webmvc-4.2.4.RELEASE.jar:4.2.4.RELEASE] > at > org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) > ~[spring-webmvc-4.2.4.RELEASE.jar:4.2.4.RELEASE] > at > org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:969) > ~[spring-webmvc-4.2.4.RELEASE.jar:4.2.4.RELEASE] > at > org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:860) > ~[spring-webmvc-4.2.4.RELEASE.jar:4.2.4.RELEASE] > at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) > ~[tomcat-embed-core-8.0.30.jar:8.0.30] > at > org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:845) > ~[spring-webmvc-4.2.4.RELEASE.jar:4.2.4.RELEASE] > at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) > ~[tomcat-embed-core-8.0.30.jar:8.0.30] > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) > ~[tomcat-embed-core-8.0.30.jar:8.0.30] > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > ~[tomcat-embed-core-8.0.30.jar:8.0.30] > at > org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) > ~[tomcat-embed-websocket-8.0.30.jar:8.0.30] > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) > ~[tomcat-embed-core-8.0.30.jar:8.0.30] > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > ~[tomcat-embed-core-8.0.30.jar:8.0.30] > at > org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:178) > ~[spring-orm-4.2.4.RELEASE.jar:4.2.4.RELEASE] > at > org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) > ~[spring-web-4.2.4.RELEASE.jar:4.2.4.RELEASE] > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) > ~[tomcat-embed-core-8.0.30.jar:8.0.30] > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > ~[tomcat-embed-core-8.0.30.jar:8.0.30] > at > fr.gyptis.ci5.backend.business.init.SearchParamFilter.doFilterInternal(SearchParamFilter.java:26) > ~[classes/:na] > at > org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) > ~[spring-web-4.2.4.RELEASE.jar:4.2.4.RELEASE] > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) > ~[tomcat-embed-core-8.0.30.jar:8.0.30] > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > ~[tomcat-embed-core-8.0.30.jar:8.0.30] > at > org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) > ~[spring-web-4.2.4.RELEASE.jar:4.2.4.RELEASE] > at > org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) > ~[spring-web-4.2.4.RELEASE.jar:4.2.4.RELEASE] > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) > ~[tomcat-embed-core-8.0.30.jar:8.0.30] > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > ~[tomcat-embed-core-8.0.30.jar:8.0.30] > at > org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:87) > ~[spring-web-4.2.4.RELEASE.jar:4.2.4.RELEASE] > at > org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) > ~[spring-web-4.2.4.RELEASE.jar:4.2.4.RELEASE] > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) > ~[tomcat-embed-core-8.0.30.jar:8.0.30] > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > ~[tomcat-embed-core-8.0.30.jar:8.0.30] > at > org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) > ~[spring-web-4.2.4.RELEASE.jar:4.2.4.RELEASE] > at > org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) > ~[spring-web-4.2.4.RELEASE.jar:4.2.4.RELEASE] > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) > ~[tomcat-embed-core-8.0.30.jar:8.0.30] > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > ~[tomcat-embed-core-8.0.30.jar:8.0.30] > at > org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121) > ~[spring-web-4.2.4.RELEASE.jar:4.2.4.RELEASE] > at > org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) > ~[spring-web-4.2.4.RELEASE.jar:4.2.4.RELEASE] > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) > ~[tomcat-embed-core-8.0.30.jar:8.0.30] > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > ~[tomcat-embed-core-8.0.30.jar:8.0.30] > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) > ~[tomcat-embed-core-8.0.30.jar:8.0.30] > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) > [tomcat-embed-core-8.0.30.jar:8.0.30] > at > org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) > [tomcat-embed-core-8.0.30.jar:8.0.30] > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) > [tomcat-embed-core-8.0.30.jar:8.0.30] > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) > [tomcat-embed-core-8.0.30.jar:8.0.30] > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) > [tomcat-embed-core-8.0.30.jar:8.0.30] > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521) > [tomcat-embed-core-8.0.30.jar:8.0.30] > at > org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096) > [tomcat-embed-core-8.0.30.jar:8.0.30] > at > org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674) > [tomcat-embed-core-8.0.30.jar:8.0.30] > at > org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) > [tomcat-embed-core-8.0.30.jar:8.0.30] > at > org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) > [tomcat-embed-core-8.0.30.jar:8.0.30] > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > [na:1.8.0_72] > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > [na:1.8.0_72] > at > org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) > [tomcat-embed-core-8.0.30.jar:8.0.30] > at java.lang.Thread.run(Thread.java:745) [na:1.8.0_72] > extract from SpringFramework : > @MappedSuperclass > public abstract class AbstractPersistable<PK extends Serializable> implements > Persistable<PK> { > private static final long serialVersionUID = -5554308939380869754L; > @Id @GeneratedValue private PK id; > /* > * (non-Javadoc) > * @see org.springframework.data.domain.Persistable#getId() > */ > public PK getId() { > return id; > } > Thanks in advance for anyhelp. > Fred -- This message was sent by Atlassian JIRA (v6.3.4#6332)