# SpEL Collection Selection Problem/Bug

• Dec 26th, 2009, 02:06 PM
SpEL Collection Selection Problem/Bug
Hi,

Have a look at the following code sample (junit test) which tries to do what is talked about in the following documentation.

http://static.springsource.org/sprin....html#d0e11694

Code:

```    @Test     @SuppressWarnings("unchecked")     public void testSelectionFromMap() {         Map<Integer, Integer> map = new TreeMap<Integer, Integer>();         map.put(1, 1);         map.put(2, 2);         map.put(3, 3);         /*         * NOTE: select all map entries with value less than 3         */         Map<Integer, Integer> all = (Map<Integer, Integer>) parser.parseExpression("#root.?[value<3]").getValue(map);         assertTrue(all.size() == 2);         Iterator<Integer> iterator = all.keySet().iterator();         assertTrue(iterator.next() == 1);         assertTrue(iterator.next() == 2);         /*         * NOTE: select first entry with value less than 3         */         Map<Integer, Integer> first = (Map<Integer, Integer>) parser.parseExpression("#root.^[value<3]").getValue(map);         assertTrue(first.keySet().iterator().next() == 1);         /*         * NOTE: select last entry with value less than 3         */         Map<Integer, Integer> last = (Map<Integer, Integer>) parser.parseExpression("#root.\$[value<3]").getValue(map);         assertTrue(last.keySet().iterator().next() == 2);     }```
It fails because the last assertion fails. The variable 'last' actually has the value '{3=null}' instead of '{2=2}'. This works fine if I ask for all entries with values greater than 4 or above but with 3 or below it doesn't work as expected. Particularly why does the 'last' variable have an entry with a value of null?

Is this my misuse/oversight or is this a bug?

Thanks.
• Dec 30th, 2009, 02:00 PM