You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Dmitri Blinov (JIRA)" <ji...@apache.org> on 2016/09/15 12:13:20 UTC

[jira] [Created] (JEXL-218) Overloaded JexlArithmetic.empty() method is not called for a class implementing Map interface

Dmitri Blinov created JEXL-218:
----------------------------------

             Summary: Overloaded JexlArithmetic.empty() method is not called for a class implementing Map interface
                 Key: JEXL-218
                 URL: https://issues.apache.org/jira/browse/JEXL-218
             Project: Commons JEXL
          Issue Type: Bug
    Affects Versions: 3.0
            Reporter: Dmitri Blinov


Sorry for not providing a test case but this is a rare problem I haven't managed to catch. I have a class which implements a {{Map}} interface and I have an overloaded {{JexlArithmetic.empty()}} and {{JexlArithmetic.size()}} methods for this class, and these methods are *not* related to correspondent {{Map.isEmpty()}} and {{Map.size()}} methods, they provide separate semantics in my case. Apart from the point that this design is questionable, most of the time everything works as expected in jexl, i.e. when {code}empty(x){code} or {code}size(x){code} operators are used in scripting, the overloaded {{JexlArithmetic.empty()}} and {{JexlArithmetic.size()}} are called. But sometimes in rare circumstances these operators are not called and {{Map.isEmpty()}} and {{Map.size()}} methods respectively are called instead. I suspect this has something to do with operators caching, may be you'll be able to check the code?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)