mirror of
https://github.com/querydsl/querydsl.git
synced 2026-06-27 21:01:15 +08:00
Merge pull request #956 from querydsl/i938
Handle concrete collection types properly
This commit is contained in:
commit
ef1f9d902b
@ -317,6 +317,25 @@ public final class ExtendedTypeFactory {
|
||||
private Type createClassType(DeclaredType declaredType, TypeElement typeElement, boolean deep) {
|
||||
// other
|
||||
String name = typeElement.getQualifiedName().toString();
|
||||
|
||||
if (name.startsWith("java.")) {
|
||||
String simpleName = typeElement.getSimpleName().toString();
|
||||
Iterator<? extends TypeMirror> i = declaredType.getTypeArguments().iterator();
|
||||
|
||||
if (isAssignable(declaredType, mapType)) {
|
||||
return createMapType(simpleName, i, deep);
|
||||
|
||||
} else if (isAssignable(declaredType, listType)) {
|
||||
return createCollectionType(Types.LIST, simpleName, i, deep);
|
||||
|
||||
} else if (isAssignable(declaredType, setType)) {
|
||||
return createCollectionType(Types.SET, simpleName, i, deep);
|
||||
|
||||
} else if (isAssignable(declaredType, collectionType)) {
|
||||
return createCollectionType(Types.COLLECTION, simpleName, i, deep);
|
||||
}
|
||||
}
|
||||
|
||||
TypeCategory typeCategory = TypeCategory.get(name);
|
||||
|
||||
if (typeCategory != TypeCategory.NUMERIC
|
||||
|
||||
@ -13,14 +13,14 @@
|
||||
*/
|
||||
package com.mysema.query.domain;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.junit.Test;
|
||||
import java.util.*;
|
||||
|
||||
import com.mysema.query.annotations.QueryEntity;
|
||||
import com.mysema.query.types.path.ListPath;
|
||||
import com.mysema.query.types.path.MapPath;
|
||||
import com.mysema.query.types.path.SetPath;
|
||||
import org.junit.Test;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class CollectionTest {
|
||||
|
||||
@ -51,11 +51,47 @@ public class CollectionTest {
|
||||
|
||||
Set set2;
|
||||
}
|
||||
|
||||
@QueryEntity
|
||||
public static class Classes {
|
||||
|
||||
HashMap map1;
|
||||
|
||||
HashMap<?,?> map2;
|
||||
|
||||
HashMap<String, String> map3;
|
||||
|
||||
ArrayList list1;
|
||||
|
||||
ArrayList<?> list2;
|
||||
|
||||
ArrayList<String> list3;
|
||||
|
||||
HashSet set1;
|
||||
|
||||
HashSet<?> set2;
|
||||
|
||||
HashSet<String> set3;
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
// assertEquals(String.class, QMapWithUndefinedValueTest_Person.person.appData.getParameter(1));
|
||||
// assertEquals(Object.class, QMapWithUndefinedValueTest_Person.person.appData.getParameter(1));
|
||||
|
||||
assertEquals(MapPath.class, QCollectionTest_Classes.classes.map1.getClass());
|
||||
assertEquals(MapPath.class, QCollectionTest_Classes.classes.map2.getClass());
|
||||
assertEquals(MapPath.class, QCollectionTest_Classes.classes.map3.getClass());
|
||||
|
||||
assertEquals(ListPath.class, QCollectionTest_Classes.classes.list1.getClass());
|
||||
assertEquals(ListPath.class, QCollectionTest_Classes.classes.list2.getClass());
|
||||
assertEquals(ListPath.class, QCollectionTest_Classes.classes.list3.getClass());
|
||||
|
||||
assertEquals(SetPath.class, QCollectionTest_Classes.classes.set1.getClass());
|
||||
assertEquals(SetPath.class, QCollectionTest_Classes.classes.set2.getClass());
|
||||
assertEquals(SetPath.class, QCollectionTest_Classes.classes.set3.getClass());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user