Skip to content

Commit fe71b7f

Browse files
authored
Remove potential for NullPointerException (#1219)
2 parents 5523d46 + a85b150 commit fe71b7f

16 files changed

+156
-8
lines changed

doma-core/src/main/java/org/seasar/doma/wrapper/BigDecimalWrapper.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ public BigDecimalWrapper(BigDecimal value) {
1818

1919
@Override
2020
public void set(Number v) {
21-
if (v instanceof BigDecimal) {
21+
if (v == null) {
22+
super.set(null);
23+
} else if (v instanceof BigDecimal) {
2224
super.set((BigDecimal) v);
2325
} else if (v instanceof BigInteger) {
2426
super.set(new BigDecimal((BigInteger) v));

doma-core/src/main/java/org/seasar/doma/wrapper/BigIntegerWrapper.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ public BigIntegerWrapper(BigInteger value) {
1818

1919
@Override
2020
public void set(Number v) {
21-
if (v instanceof BigInteger) {
21+
if (v == null) {
22+
super.set(null);
23+
} else if (v instanceof BigInteger) {
2224
super.set((BigInteger) v);
2325
} else if (v instanceof BigDecimal) {
2426
super.set(((BigDecimal) v).toBigInteger());

doma-core/src/main/java/org/seasar/doma/wrapper/ByteWrapper.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,11 @@ public ByteWrapper(Byte value) {
1515

1616
@Override
1717
public void set(Number v) {
18-
super.set(v.byteValue());
18+
if (v == null) {
19+
super.set(null);
20+
} else {
21+
super.set(v.byteValue());
22+
}
1923
}
2024

2125
@Override

doma-core/src/main/java/org/seasar/doma/wrapper/DoubleWrapper.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,11 @@ public DoubleWrapper(Double value) {
1515

1616
@Override
1717
public void set(Number v) {
18-
super.set(v.doubleValue());
18+
if (v == null) {
19+
super.set(null);
20+
} else {
21+
super.set(v.doubleValue());
22+
}
1923
}
2024

2125
@Override

doma-core/src/main/java/org/seasar/doma/wrapper/FloatWrapper.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,11 @@ public FloatWrapper(Float value) {
1515

1616
@Override
1717
public void set(Number v) {
18-
super.set(v.floatValue());
18+
if (v == null) {
19+
super.set(null);
20+
} else {
21+
super.set(v.floatValue());
22+
}
1923
}
2024

2125
@Override

doma-core/src/main/java/org/seasar/doma/wrapper/IntegerWrapper.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,11 @@ public IntegerWrapper(Integer value) {
1515

1616
@Override
1717
public void set(Number v) {
18-
set(v.intValue());
18+
if (v == null) {
19+
super.set(null);
20+
} else {
21+
super.set(v.intValue());
22+
}
1923
}
2024

2125
@Override

doma-core/src/main/java/org/seasar/doma/wrapper/LongWrapper.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,11 @@ public LongWrapper(Long value) {
1515

1616
@Override
1717
public void set(Number v) {
18-
super.set(v.longValue());
18+
if (v == null) {
19+
super.set(null);
20+
} else {
21+
super.set(v.longValue());
22+
}
1923
}
2024

2125
@Override

doma-core/src/main/java/org/seasar/doma/wrapper/ShortWrapper.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,11 @@ public ShortWrapper(Short value) {
1515

1616
@Override
1717
public void set(Number v) {
18-
super.set(v.shortValue());
18+
if (v == null) {
19+
super.set(null);
20+
} else {
21+
super.set(v.shortValue());
22+
}
1923
}
2024

2125
@Override

doma-core/src/test/java/org/seasar/doma/wrapper/BigDecimalWrapperTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import static org.junit.jupiter.api.Assertions.assertEquals;
44
import static org.junit.jupiter.api.Assertions.assertNotEquals;
5+
import static org.junit.jupiter.api.Assertions.assertNull;
56
import static org.junit.jupiter.api.Assertions.assertTrue;
67

78
import java.math.BigDecimal;
@@ -29,6 +30,20 @@ public void testSetBigInteger() {
2930
assertEquals(new BigDecimal(greaterThanLongMaxValue), wrapper.get());
3031
}
3132

33+
@Test
34+
public void testSetNull() {
35+
BigDecimalWrapper wrapper = new BigDecimalWrapper();
36+
wrapper.set(null);
37+
assertNull(wrapper.get());
38+
}
39+
40+
@Test
41+
public void testSetNullNumber() {
42+
BigDecimalWrapper wrapper = new BigDecimalWrapper();
43+
wrapper.set((Number) null);
44+
assertNull(wrapper.get());
45+
}
46+
3247
/** */
3348
@Test
3449
public void testIncrement() {

doma-core/src/test/java/org/seasar/doma/wrapper/BigIntegerWrapperTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.seasar.doma.wrapper;
22

33
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import static org.junit.jupiter.api.Assertions.assertNull;
45

56
import java.math.BigDecimal;
67
import java.math.BigInteger;
@@ -27,6 +28,20 @@ public void testSetBigDecimal() {
2728
assertEquals(greaterThanLongMaxValue.toBigInteger(), wrapper.get());
2829
}
2930

31+
@Test
32+
public void testSetNull() {
33+
BigIntegerWrapper wrapper = new BigIntegerWrapper();
34+
wrapper.set(null);
35+
assertNull(wrapper.get());
36+
}
37+
38+
@Test
39+
public void testSetNullNumber() {
40+
BigIntegerWrapper wrapper = new BigIntegerWrapper();
41+
wrapper.set((Number) null);
42+
assertNull(wrapper.get());
43+
}
44+
3045
/** */
3146
@Test
3247
public void testIncrement() {

0 commit comments

Comments
 (0)