You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2019/06/19 01:12:00 UTC

[jira] [Work logged] (CXF-7966) Beanspector throws IllegalArgumentException when dealing with overridden methods

     [ https://issues.apache.org/jira/browse/CXF-7966?focusedWorklogId=262706&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-262706 ]

ASF GitHub Bot logged work on CXF-7966:
---------------------------------------

                Author: ASF GitHub Bot
            Created on: 19/Jun/19 01:11
            Start Date: 19/Jun/19 01:11
    Worklog Time Spent: 10m 
      Work Description: reta commented on pull request #510: Fix CXF-7966: allows more flexibility in Beanspector
URL: https://github.com/apache/cxf/pull/510
 
 
   
 
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Issue Time Tracking
-------------------

    Worklog Id:     (was: 262706)
    Time Spent: 20m  (was: 10m)

> Beanspector throws IllegalArgumentException when dealing with overridden methods
> --------------------------------------------------------------------------------
>
>                 Key: CXF-7966
>                 URL: https://issues.apache.org/jira/browse/CXF-7966
>             Project: CXF
>          Issue Type: Improvement
>            Reporter: matteo rulli
>            Priority: Major
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> Let's consider the following pojos: 
> {code:java}
> public class A { 
>         private String value; 
>         public String getValue()\{ ... } 
>         public void setValue(String value) \{ ... } 
> } 
> public class B { 
>         
>         private A aValue; 
>         public A getAValue()\{ ... } 
>         public void setAValue(A avalue) \{ ... } 
> } 
> {code}
> And assume one extends these pojos and decorates them with JPA annotations. 
> To leverage CXF org.apache.cxf.jaxrs.ext.search.SearchContext and JPACriteriaQueryVisitor as explained in the docs ([http://cxf.apache.org/docs/jax-rs-search.html#JAX-RSSearch-JPA2.0]) and perform searches like 
> {code:java}
> _s=aValue==*search token* {code}
> in OpenJPA one has to override the EntityB.getAValue as follows: 
> {code:java}
> @Entity 
> // ... other JPA annotations are omitted 
> public class EntityB extends B { 
>         
>         @Override 
>         // We need to specialize return type to EntityA to make SearchContext work 
>         public EntityA getAValue()\{ ... } 
>         // This method definition is needed to avoid java.lang.VerifyError from JPA provider 
>         public void setAValue(EntityA avalue) \{ ... } 
> } 
> {code}
> But with this scenario, the current implementation of org.apache.cxf.jaxrs.ext.search.Beanspector<T> fails, throwing IllegalArgumentException: Accessor 'aValue' type mismatch, getter type is X while setter type is Y, X and Y depending on the order of the EntityB's methods as returned by the Class.getMethods(). 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)