[ 
https://issues.apache.org/jira/browse/OLINGO-120?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Anirban Roy closed OLINGO-120.
------------------------------

    Resolution: Fixed

The library now supports both "is<VariableName>" and "get<VaribaleName>" for 
getter methods in case of boolean variables in JPA Entity

> JPA Entity parser fails if there is a boolean property with "is" prefixed 
> getter method
> ---------------------------------------------------------------------------------------
>
>                 Key: OLINGO-120
>                 URL: https://issues.apache.org/jira/browse/OLINGO-120
>             Project: Olingo
>          Issue Type: Bug
>          Components: odata2-jpa
>    Affects Versions: V2 1.0.0
>            Reporter: Chavdar Baikov
>            Assignee: Anirban Roy
>             Fix For: V2 1.1.0
>
>
> I am having JPA Model exposed as OData using the framework.
> One of the entities contains boolean propery called "active" with pair of 
> generated "setter/getter" methods - "isActive/setActive".
> According to the JavaBeans specification section 8.3.2:
> Boolean properties
> In addition, for boolean properties, we allow a getter method to match the 
> pattern:
> public boolean is<PropertyName>();
> This "isPropertyName" method may be provided instead of a "get<PropertyName>" 
> method, or it may be provided in addition to a "get<PropertyName>" method. In 
> either case, if the is<PropertyName> method is present for a boolean property 
> then we will use the "is<PropertyName>" method to read the property value. An 
> example boolean property might be:
> public boolean isMarsupial(); public void setMarsupial(boolean m);
> So according to the spec it should be perfectly fine.
> However i am getting "Null Pointer" exceptions when trying to navigate to 
> this entity.
> While debugging i found out that the "get" prefix is hard coded in 
> JPAEntityParser.
> See line 150:
>     if (!jpaEntityAccessMap.containsKey(jpaEntityAccessKey)) {
>       jpaEntityAccessMap.put(jpaEntityAccessKey,
>           getAccessModifiers(jpaEntity, structuralType, ACCESS_MODIFIER_GET));
>     }
> Which goes to getAccessModifiers method (line 312) and tries to find 
> "getActive" method and throws NoSuchMethod Exception on line 322.
> accessModifierMap.put(
>                 propertyName,
>                 jpaEntity.getClass().getMethod(name,
>                     (Class<?>[]) null));
>  
> My best guess is that boolean properties should be detected .. or JAVA beans 
> introspector could be used instead of proprietary implementation.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to