[
https://issues.apache.org/jira/browse/JEXL-151?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14642859#comment-14642859
]
Dmitri Blinov commented on JEXL-151:
------------------------------------
After JEXL-170 has been implemented it is straight-forward to implement the
required functionality by extending JexlArithmetic. If you feel it has any
sence to others you may include the code below in base implementaion:
{{{quote}{noformat}
public Collection<Object> selfAdd(Collection<Object> c, Object x) {
if (x != null && c != null) {
if (x instanceof Collection<?>) {
c.addAll((Collection<?>)x);
} else if (x.getClass().isArray()) {
for (int i = 0; i < Array.getLength(x); i++) {
Object key = Array.get(x, i);
c.add(key);
}
} else {
c.add(x);
}
}
return c;
}
public Collection<Object> selfSubtract(Collection<Object> c, Object x) {
if (x != null && c != null) {
if (x instanceof Collection) {
c.removeAll((Collection<?>)x);
} else if (x.getClass().isArray()) {
for (int i = 0; i < Array.getLength(x); i++) {
Object key = Array.get(x, i);
c.remove(key);
}
} else {
c.remove(x);
}
}
return c;
}
public Collection<Object> selfMultiply(Collection<Object> c, Object x) {
if (x != null && c != null) {
if (x instanceof Collection<?>) {
c.retainAll((Collection<?>) x);
} else if (x.getClass().isArray()) {
List<Object> list = new ArrayList<Object>();
for (int i = 0; i < Array.getLength(x); i++) {
Object key = Array.get(x, i);
list.add(key);
}
c.retainAll(list);
} else {
List<Object> list = new ArrayList<Object>();
list.add(x);
c.retainAll(list);
}
}
return c;
}
{noformat}{quote}}}
> operators to manipulate j.u.Collection
> --------------------------------------
>
> Key: JEXL-151
> URL: https://issues.apache.org/jira/browse/JEXL-151
> Project: Commons JEXL
> Issue Type: New Feature
> Affects Versions: 3.0
> Reporter: Dmitri Blinov
> Priority: Minor
> Fix For: Later
>
>
> New operators to add or remove collection items to/from Collection. Operators
> can be named as += and -= respectively, or any other way. Operator += can be
> mapped to Collection.addAll(Collection c) if right argument is Collection or
> to Collection.add(Object o) otherwise. Operator -= can be mapped to
> Collection.removeAll(Collection c) if right argument is Collection or to
> Collection.remove(Object o) otherwise. Extend operators =~ (!~) to support
> CollectionA =~ CollectionB usage, in which case it should map to
> B.containsAll(A) operation.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)