From eed0456e1373ec4cd4e6adcfb4c766f34f1b36b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Fri, 8 Jan 2016 18:45:41 +0200 Subject: [PATCH] Improve normalization --- .../src/main/java/com/querydsl/core/types/QBean.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/querydsl-core/src/main/java/com/querydsl/core/types/QBean.java b/querydsl-core/src/main/java/com/querydsl/core/types/QBean.java index e03b1cabc..17275b672 100644 --- a/querydsl-core/src/main/java/com/querydsl/core/types/QBean.java +++ b/querydsl-core/src/main/java/com/querydsl/core/types/QBean.java @@ -86,6 +86,10 @@ public class QBean extends FactoryExpressionBase { return cl.isPrimitive() ? Primitives.wrap(cl) : cl; } + private static boolean isAssignableFrom(Class cl1, Class cl2) { + return normalize(cl1).isAssignableFrom(normalize(cl2)); + } + private final ImmutableMap> bindings; private final List fields; @@ -156,7 +160,7 @@ public class QBean extends FactoryExpressionBase { try { field = beanType.getDeclaredField(property); field.setAccessible(true); - if (!normalize(field.getType()).isAssignableFrom(expr.getType())) { + if (!isAssignableFrom(field.getType(), expr.getType())) { typeMismatch(field.getType(), expr); } beanType = Object.class; @@ -186,7 +190,7 @@ public class QBean extends FactoryExpressionBase { for (PropertyDescriptor prop : propertyDescriptors) { if (prop.getName().equals(property)) { setter = prop.getWriteMethod(); - if (!normalize(prop.getPropertyType()).isAssignableFrom(expr.getType())) { + if (!isAssignableFrom(prop.getPropertyType(), expr.getType())) { typeMismatch(prop.getPropertyType(), expr); } break;