#81 fixed getKeyForPath usage

This commit is contained in:
Timo Westkämper 2012-01-12 16:10:06 +02:00
parent 6b5838750b
commit 32bce2baf9
2 changed files with 9 additions and 13 deletions

View File

@ -497,18 +497,17 @@ public final class ExtendedTypeFactory {
String simpleName = typeElement.getSimpleName().toString();
Iterator<? extends TypeMirror> 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) {

View File

@ -227,22 +227,18 @@ public class MongodbSerializer implements Visitor<Object, Void> {
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) {