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)