diff --git a/querydsl-apt/src/main/java/com/mysema/query/apt/ExtendedTypeFactory.java b/querydsl-apt/src/main/java/com/mysema/query/apt/ExtendedTypeFactory.java index d5ffd7d90..ea7fdb11e 100644 --- a/querydsl-apt/src/main/java/com/mysema/query/apt/ExtendedTypeFactory.java +++ b/querydsl-apt/src/main/java/com/mysema/query/apt/ExtendedTypeFactory.java @@ -497,18 +497,17 @@ public final class ExtendedTypeFactory { String simpleName = typeElement.getSimpleName().toString(); Iterator i = declaredType.getTypeArguments().iterator(); - String declaredName = declaredType.toString(); - if (isAssignable(declaredType, mapType) || declaredName.contains("Map")) { + if (isAssignable(declaredType, mapType)) { return createMapType(simpleName, i, deep); - } else if (isAssignable(declaredType, listType) || declaredName.contains("List")) { + } else if (isAssignable(declaredType, listType)) { return createCollectionType(Types.LIST, simpleName, i, deep); - } else if (isAssignable(declaredType, setType) || declaredName.contains("Set")) { + } else if (isAssignable(declaredType, setType)) { return createCollectionType(Types.SET, simpleName, i, deep); - } else if (isAssignable(declaredType, collectionType) || declaredName.contains("Collection")) { + } else if (isAssignable(declaredType, collectionType)) { return createCollectionType(Types.COLLECTION, simpleName, i, deep); } else { @@ -561,7 +560,8 @@ public final class ExtendedTypeFactory { } private boolean isAssignable(TypeMirror type, TypeMirror iface) { - return env.getTypeUtils().isAssignable(type, iface); + return env.getTypeUtils().isAssignable(type, iface) + || env.getTypeUtils().erasure(type).equals(iface); } private boolean isSubType(TypeMirror type1, TypeMirror type2) { diff --git a/querydsl-mongodb/src/main/java/com/mysema/query/mongodb/MongodbSerializer.java b/querydsl-mongodb/src/main/java/com/mysema/query/mongodb/MongodbSerializer.java index 988d56c6a..4b073e8e2 100644 --- a/querydsl-mongodb/src/main/java/com/mysema/query/mongodb/MongodbSerializer.java +++ b/querydsl-mongodb/src/main/java/com/mysema/query/mongodb/MongodbSerializer.java @@ -227,22 +227,18 @@ public class MongodbSerializer implements Visitor { throw new UnsupportedOperationException("Illegal operation " + expr); } - - @Override public Object visit(Path expr, Void context) { PathMetadata metadata = expr.getMetadata(); - String rv = getKeyForPath(expr, metadata); - if (metadata.getParent() != null){ if (metadata.getPathType() == PathType.COLLECTION_ANY){ return visit(metadata.getParent(), context); }else if (metadata.getParent().getMetadata().getPathType() != PathType.VARIABLE){ + String rv = getKeyForPath(expr, metadata); return visit(metadata.getParent(), context) + "." + rv; } - } - - return rv; + } + return getKeyForPath(expr, metadata); } protected String getKeyForPath(Path expr, PathMetadata metadata) {