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)

Reply via email to