[
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)