From 2de651eb282617b10061317b6cd95ed3a04af8cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Mon, 19 Sep 2011 12:13:37 +0300 Subject: [PATCH] #853702 : fixed ArrayPath issues --- .../com/mysema/query/domain/ArrayExtTest.java | 70 +++++++++++++++++++ .../mysema/query/codegen/TypeMappings.java | 6 +- .../mysema/query/types/path/Constants.java | 1 + 3 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 querydsl-apt/src/test/java/com/mysema/query/domain/ArrayExtTest.java diff --git a/querydsl-apt/src/test/java/com/mysema/query/domain/ArrayExtTest.java b/querydsl-apt/src/test/java/com/mysema/query/domain/ArrayExtTest.java new file mode 100644 index 000000000..fd44bcead --- /dev/null +++ b/querydsl-apt/src/test/java/com/mysema/query/domain/ArrayExtTest.java @@ -0,0 +1,70 @@ +package com.mysema.query.domain; + +import static org.junit.Assert.assertEquals; + +import java.util.List; +import java.util.Map; + +import org.junit.Test; + +import com.mysema.query.annotations.QueryEntity; +import com.mysema.query.types.path.ArrayPath; +import com.mysema.query.types.path.ListPath; +import com.mysema.query.types.path.MapPath; +import com.mysema.query.types.path.StringPath; + +public class ArrayExtTest { + + private static final QArrayExtTest_BinaryFile binaryFile = QArrayExtTest_BinaryFile.binaryFile; + + @QueryEntity + public class BinaryFile { + + byte[] contentPart; + + List list; + + Map map1; + + Map map2; + } + + @Test + public void BinaryFile_contentPart() { + assertEquals(ArrayPath.class, binaryFile.contentPart.getClass()); + assertEquals(Byte[].class, binaryFile.contentPart.getType()); + } + + @Test + public void BinaryFile_list() { + assertEquals(ListPath.class, binaryFile.list.getClass()); + assertEquals(List.class, binaryFile.list.getType()); + assertEquals(Byte[].class, binaryFile.list.getParameter(0)); + + assertEquals(ArrayPath.class, binaryFile.list.get(0).getClass()); + assertEquals(Byte[].class, binaryFile.list.get(0).getType()); + } + + @Test + public void BinaryFile_map1() { + assertEquals(MapPath.class, binaryFile.map1.getClass()); + assertEquals(Map.class, binaryFile.map1.getType()); + assertEquals(String.class, binaryFile.map1.getParameter(0)); + assertEquals(Byte[].class, binaryFile.map1.getParameter(1)); + + assertEquals(ArrayPath.class, binaryFile.map1.get("").getClass()); + assertEquals(Byte[].class, binaryFile.map1.get("").getType()); + } + + @Test + public void BinaryFile_map2() { + assertEquals(MapPath.class, binaryFile.map2.getClass()); + assertEquals(Map.class, binaryFile.map2.getType()); + assertEquals(Byte[].class, binaryFile.map2.getParameter(0)); + assertEquals(String.class, binaryFile.map2.getParameter(1)); + + assertEquals(StringPath.class, binaryFile.map2.get(new Byte[0]).getClass()); + assertEquals(String.class, binaryFile.map2.get(new Byte[0]).getType()); + } + +} diff --git a/querydsl-core/src/main/java/com/mysema/query/codegen/TypeMappings.java b/querydsl-core/src/main/java/com/mysema/query/codegen/TypeMappings.java index f449ea1b1..eb2c623af 100644 --- a/querydsl-core/src/main/java/com/mysema/query/codegen/TypeMappings.java +++ b/querydsl-core/src/main/java/com/mysema/query/codegen/TypeMappings.java @@ -117,7 +117,11 @@ public final class TypeMappings { private Type getQueryType(Map types, Type type, EntityType model, boolean raw, boolean rawParameters, boolean extend){ Type exprType = types.get(type.getCategory()); - return getQueryType(type, model, exprType, raw, rawParameters, extend); + if (type.getCategory() == TypeCategory.ARRAY && types == pathTypes) { + return getQueryType(type.getComponentType(), model, exprType, raw, rawParameters, extend); + } else { + return getQueryType(type, model, exprType, raw, rawParameters, extend); + } } public Type getQueryType(Type type, EntityType model, Type exprType, boolean raw, boolean rawParameters, boolean extend){ diff --git a/querydsl-core/src/main/java/com/mysema/query/types/path/Constants.java b/querydsl-core/src/main/java/com/mysema/query/types/path/Constants.java index 76add830a..6efd72e2c 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/path/Constants.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/path/Constants.java @@ -12,6 +12,7 @@ import java.util.Set; final class Constants { private static final Set> typedClasses = new HashSet>(Arrays.>asList( + ArrayPath.class, PathBuilder.class, ComparablePath.class, EnumPath.class,