commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lukasz Lenart (Jira)" <j...@apache.org>
Subject [jira] [Commented] (OGNL-260) ArrayList Iterator Cursor set to Object Aray in OGNL
Date Tue, 05 Nov 2019 06:16:00 GMT

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

Lukasz Lenart commented on OGNL-260:
------------------------------------

It's better to report such bugs here https://github.com/jkuhnert/ognl

> ArrayList Iterator Cursor set to Object Aray in OGNL
> ----------------------------------------------------
>
>                 Key: OGNL-260
>                 URL: https://issues.apache.org/jira/browse/OGNL-260
>             Project: Commons OGNL
>          Issue Type: Bug
>            Reporter: Julian Ryan
>            Priority: Major
>
> When running the following example in the latest (3.2.11):
> {code:java}
> import ognl.MemberAccess;
> import ognl.Ognl;
> import java.lang.reflect.Member;
> import java.util.Map;
> public class OgnlTest {
>    public static void main(String ... args) {
>       // Lazy allow everything for this test
>       Map ognlContext = Ognl.createDefaultContext(null, new MemberAccess() {
>          @Override
>          public Object setup(Map context, Object target, Member member, String propertyName)
{
>             return null;
>          }
>          @Override
>          public void restore(Map context, Object target, Member member, String propertyName,
Object state) {
>          }
>          @Override
>          public boolean isAccessible(Map context, Object target, Member member, String
propertyName) {
>             return true;
>          }
>       });
>       try {
>          Object o = Ognl.getValue("#editsIter = @java.util.Arrays@asList(\"one,two,three\".split(\",\")),
#editsIter.iterator()", ognlContext, new Object());
>          ognlContext.put("iterator", o);
>          Object o2 = Ognl.getValue("#iterator.next()", ognlContext, new Object());
>          System.err.println(o2);
>       } catch (Exception e) {
>          e.printStackTrace();
>       }
>    }
> }
> {code}
> The iterator cursor is set to an Object array with a single value containing the array
values of the ArrayList instead of the values in the ArrayList.  This causes calling iterator.next()
to just returns the whole set of ArrayList values.
> The expected behavior would be similar to the following snippet:
> {code:java}
> import java.util.Arrays;
> import java.util.Iterator;
> public class IteratorTesting {
>    public static void main(String ... args) {
>       Iterator iterator = Arrays.asList("one,two,three".split(",")).iterator();
>       while(iterator.hasNext()) {
>          Object o = iterator.next();
>          System.err.println(o);
>       }
>    }
> }
> {code}
> In short, for version 3.2.11 the iterator.next() returns an Object[] of length 1 and
in version 2.6.7 calling iterator.next() works the same as the second snippet.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Mime
View raw message