diff --git a/querydsl-core/src/main/java/com/querydsl/core/util/MathUtils.java b/querydsl-core/src/main/java/com/querydsl/core/util/MathUtils.java index 15e19a89c..4d4f79c86 100644 --- a/querydsl-core/src/main/java/com/querydsl/core/util/MathUtils.java +++ b/querydsl-core/src/main/java/com/querydsl/core/util/MathUtils.java @@ -60,7 +60,7 @@ public final class MathUtils { public static D cast(Number num, Class type) { D rv; - if (type.isInstance(num)) { + if (num == null || type.isInstance(num)) { rv = type.cast(num); } else if (type.equals(Byte.class)) { rv = type.cast(num.byteValue()); diff --git a/querydsl-core/src/test/java/com/querydsl/core/util/MathUtilsTest.java b/querydsl-core/src/test/java/com/querydsl/core/util/MathUtilsTest.java index f5dd432a8..5c971a311 100644 --- a/querydsl-core/src/test/java/com/querydsl/core/util/MathUtilsTest.java +++ b/querydsl-core/src/test/java/com/querydsl/core/util/MathUtilsTest.java @@ -13,8 +13,7 @@ */ package com.querydsl.core.util; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertSame; +import static org.junit.Assert.*; import java.math.BigDecimal; import java.math.BigInteger; @@ -63,6 +62,12 @@ public class MathUtilsTest { checkSame((byte) 1, Byte.class); } + @Test + public void cast_returns_null_when_input_is_null() { + Integer result = MathUtils.cast(null, Integer.class); + assertNull(result); + } + @Test public void cast_throws_on_unsupported_numbers() { expectedException.expect(IllegalArgumentException.class);