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

Clement Escoffier closed FELIX-2603.
------------------------------------


> wrong behavior of InstanceManager.onSet(..) method
> --------------------------------------------------
>
>                 Key: FELIX-2603
>                 URL: https://issues.apache.org/jira/browse/FELIX-2603
>             Project: Felix
>          Issue Type: Bug
>          Components: iPOJO
>    Affects Versions: iPOJO-1.4.0
>         Environment: all
>            Reporter: P.A
>            Assignee: Clement Escoffier
>             Fix For: iPOJO-1.8.0
>
>
> Hello,
> Clement and I has talked about this issue, and some different point of views 
> are welcome.
> Currently, in the InstanceManager.onSet(..) method, the calls to the 
> FieldInterceptor.onSet(..) is conditioned by '!value.equals(objectValue)', 
> the 'value' is the current reference to the intercepted field, 'objectValue' 
> is the reference that is going to be assigned to the intercepted field.
> See line 1096 of InstanceManager.java in iPOJO core 1.6.4.
> Thus, in my opinion, the semantic of 'onSet' is not really what is described 
> in the iPOJO documentation "This method is called each time a field of the 
> POJO is assigned" (see 
> http://felix.apache.org/site/how-to-write-your-own-handler.html#Howtowriteyourownhandler-InteractingwiththePOJO).
>  Its semantic is rather "this method is called each time a field of the POJO 
> is assigned and the new assigned value is different (in the 'equals(..)' 
> method way) from the current value".
> Moreover, the call to 'equals' method can result in some expensive 
> computations, thus this optimization can be counter productive.
> I suggest to remove the condition '!value.equals(objectValue))' in 
> 'InstanceManager.onSet(..)'.
> If some external codes rely on the current behavior of onSet(..), rename the 
> 'InstanceManager.onSet(..)' to 'InstanceManager.onModification(..)', add the 
> method onModification(..) in FieldInterceptor interface, and adapt the 
> external codes to use this new 'onModification(..)' method.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to