#466 Fix distinct handling

This commit is contained in:
Timo Westkämper 2013-08-01 19:42:54 +03:00
parent 385035ae40
commit 01980bede6
2 changed files with 10 additions and 5 deletions

View File

@ -96,7 +96,7 @@ public class DefaultQueryEngine implements QueryEngine {
private <T> List<T> distinct(List<T> list) {
List<T> rv = new ArrayList<T>(list.size());
if (!list.isEmpty() && list.get(0).getClass().isArray()) {
if (!list.isEmpty() && list.get(0) != null && list.get(0).getClass().isArray()) {
Set set = new HashSet(list.size());
for (T o : list) {
if (set.add(ImmutableList.copyOf((Object[])o))) {

View File

@ -1,6 +1,6 @@
/*
* Copyright 2011, Mysema Ltd
*
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
@ -34,7 +34,7 @@ public class DistinctTest extends AbstractQueryTest {
assertEquals(list1, CollQueryFactory.from(intVar1, list1).list(intVar1));
assertEquals(Arrays.asList(1, 2, 3, 4), CollQueryFactory.from(intVar1, list1).distinct().list(intVar1));
assertEquals(Arrays.asList(2, 3, 4), CollQueryFactory.from(intVar2, list2).distinct().list(intVar2));
assertEquals(Arrays.asList(2, 3, 4), CollQueryFactory.from(intVar2, list2).distinct().list(intVar2));
}
@ -42,7 +42,7 @@ public class DistinctTest extends AbstractQueryTest {
public void BothSources() {
assertEquals(100, CollQueryFactory.from(intVar1, list1).from(intVar2, list2).list(intVar1, intVar2).size());
assertEquals(12, CollQueryFactory.from(intVar1, list1).from(intVar2, list2).distinct().list(intVar1, intVar2).size());
assertEquals(12, CollQueryFactory.from(intVar1, list1).from(intVar2, list2).distinct().list(intVar1, intVar2).size());
}
@ -51,8 +51,13 @@ public class DistinctTest extends AbstractQueryTest {
assertEquals(10, CollQueryFactory.from(intVar1, list1).count());
assertEquals(4, CollQueryFactory.from(intVar1, list1).distinct().count());
assertEquals(3, CollQueryFactory.from(intVar2, list2).distinct().count());
assertEquals(3, CollQueryFactory.from(intVar2, list2).distinct().count());
}
@Test
public void Null() {
CollQueryFactory.from(intVar1, Arrays.asList(null, 1)).distinct().list(intVar1);
}
}