matteo rulli created CXF-7966: --------------------------------- Summary: 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
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)