commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Henri Biestro (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (JEXL-174) Overloadable property access operators
Date Mon, 24 Aug 2015 16:14:46 GMT

    [ https://issues.apache.org/jira/browse/JEXL-174?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14709533#comment-14709533
] 

Henri Biestro commented on JEXL-174:
------------------------------------

These overloads will also occur in the JexlArithmetic derived class (like any other operator).
The new operators/methods that will be introduced are:
propertyGet/propertySet/arrayGet/arraySet
They need to be public and will be 'resolved' using the common method matching algorithm.
The former two will be called when using a '.' as in: {code}foo.bar{code}
The latter two will be called when using a '[]' as in: {code}foo[bar]{code}
A simplified example where Maps always use their get/put to access properties:
{code}
    public static class MapArithmetic extends JexlArithmetic {
        public MapArithmetic(boolean flag) {
            super(flag);
        }

        public Object propertyGet(Map<?,?> map, Object identifier) {
            return arrayGet(map, identifier);
        }

        public Object propertySet(Map<Object, Object> map, Object identifier, Object
value) {
             return arraySet(map, identifier, value);
        }

        public Object arrayGet(Map<?,?> map, Object identifier) {
            return map.get(identifier);
        }
        
        public Object arraySet(Map<Object, Object> map, Object identifier, Object value)
{
             map.put(identifier, value);
             return value;
        }
    }
{code}

> Overloadable property access operators
> --------------------------------------
>
>                 Key: JEXL-174
>                 URL: https://issues.apache.org/jira/browse/JEXL-174
>             Project: Commons JEXL
>          Issue Type: New Feature
>    Affects Versions: 3.0
>            Reporter: Dmitri Blinov
>            Priority: Minor
>
> In analogy with overloading operators like empty(), size() etc, provide a way to overload
property "get" and "set" operators ([] and .), like 
> {code}
>    public Object getAt(Object obj, Object index) {...}
>    public Object putAt(Object obj, Object index, Object value) {...}
> {code}
> Overloaded operators should be tried before any standard access stategy, ie MAP, POJO
etc.



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

Mime
View raw message