commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dmitri Blinov (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (JEXL-151) operators to manipulate j.u.Collection
Date Mon, 27 Jul 2015 15:23:04 GMT

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

Mime
View raw message