Skip to content

Commit f492095

Browse files
authored
FieldMap - enhancing thrown exception for null values (#567)
* 458 Core - FieldMap - enhancing thrown exception for null values * 458 Core - FieldMap - replacing SessionRejectReasonText * 458 Core - MessageTest - Fixing testMessageSetGetString failure
1 parent 081fdf2 commit f492095

File tree

3 files changed

+148
-143
lines changed

3 files changed

+148
-143
lines changed

quickfixj-core/src/main/java/quickfix/FieldMap.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,7 @@ public void setField(int key, Field<?> field) {
337337

338338
public void setField(StringField field) {
339339
if (field.getValue() == null) {
340-
throw new NullPointerException("Null field values are not allowed.");
340+
throw new FieldException(SessionRejectReason.TAG_SPECIFIED_WITHOUT_A_VALUE, field.getField());
341341
}
342342
fields.put(field.getField(), field);
343343
}

quickfixj-core/src/test/java/quickfix/FieldMapTest.java

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
11
package quickfix;
22

3-
import java.math.BigDecimal;
4-
import java.time.LocalDateTime;
5-
import java.time.LocalTime;
6-
import java.time.ZoneOffset;
3+
import org.junit.Test;
74
import quickfix.field.EffectiveTime;
85
import quickfix.field.MDEntryTime;
96
import quickfix.field.converter.UtcTimeOnlyConverter;
107

8+
import java.math.BigDecimal;
9+
import java.time.LocalDateTime;
10+
import java.time.LocalTime;
11+
import java.time.ZoneOffset;
1112
import java.util.Iterator;
1213
import java.util.Optional;
1314

1415
import static org.junit.Assert.assertEquals;
1516
import static org.junit.Assert.assertFalse;
17+
import static org.junit.Assert.assertThrows;
1618
import static org.junit.Assert.assertTrue;
17-
import org.junit.Test;
1819

1920
/**
2021
* Tests the {@link FieldMap} class.
@@ -79,16 +80,16 @@ private void testOrdering(int[] vals, int[] order, int[] expected) {
7980

8081
@Test
8182
public void testOrdering() {
82-
testOrdering(new int[] { 1, 2, 3 }, null, new int[] { 1, 2, 3 });
83-
testOrdering(new int[] { 3, 2, 1 }, null, new int[] { 1, 2, 3 });
84-
testOrdering(new int[] { 1, 2, 3 }, new int[] { 1, 2, 3 }, new int[] { 1, 2, 3 });
85-
testOrdering(new int[] { 3, 2, 1 }, new int[] { 1, 2, 3 }, new int[] { 1, 2, 3 });
86-
testOrdering(new int[] { 1, 2, 3 }, new int[] { 1, 3, 2 }, new int[] { 1, 3, 2 });
87-
testOrdering(new int[] { 3, 2, 1 }, new int[] { 1, 3, 2 }, new int[] { 1, 3, 2 });
88-
testOrdering(new int[] { 1, 2, 3 }, new int[] { 1, 3 }, new int[] { 1, 3, 2 });
89-
testOrdering(new int[] { 3, 2, 1 }, new int[] { 1, 3 }, new int[] { 1, 3, 2 });
90-
testOrdering(new int[] { 1, 2, 3 }, new int[] { 3, 1 }, new int[] { 3, 1, 2 });
91-
testOrdering(new int[] { 3, 2, 1 }, new int[] { 3, 1 }, new int[] { 3, 1, 2 });
83+
testOrdering(new int[]{1, 2, 3}, null, new int[]{1, 2, 3});
84+
testOrdering(new int[]{3, 2, 1}, null, new int[]{1, 2, 3});
85+
testOrdering(new int[]{1, 2, 3}, new int[]{1, 2, 3}, new int[]{1, 2, 3});
86+
testOrdering(new int[]{3, 2, 1}, new int[]{1, 2, 3}, new int[]{1, 2, 3});
87+
testOrdering(new int[]{1, 2, 3}, new int[]{1, 3, 2}, new int[]{1, 3, 2});
88+
testOrdering(new int[]{3, 2, 1}, new int[]{1, 3, 2}, new int[]{1, 3, 2});
89+
testOrdering(new int[]{1, 2, 3}, new int[]{1, 3}, new int[]{1, 3, 2});
90+
testOrdering(new int[]{3, 2, 1}, new int[]{1, 3}, new int[]{1, 3, 2});
91+
testOrdering(new int[]{1, 2, 3}, new int[]{3, 1}, new int[]{3, 1, 2});
92+
testOrdering(new int[]{3, 2, 1}, new int[]{3, 1}, new int[]{3, 1, 2});
9293
}
9394

9495
@Test
@@ -111,14 +112,21 @@ public void testOptionalDecimal() {
111112
assertFalse(map.getOptionalDecimal(6).isPresent());
112113
}
113114

115+
@Test
116+
public void testNullFieldException() {
117+
FieldMap map = new Message();
118+
StringField field = new StringField(0, null);
119+
assertThrows(FieldException.class, () -> map.setField(field));
120+
}
121+
114122
private long epochMilliOfLocalDate(LocalDateTime localDateTime) {
115123
return localDateTime.toInstant(ZoneOffset.UTC).toEpochMilli();
116124
}
117125

118126
@Test
119127
public void testRemoveGroup() {
120128
FieldMap map = new Message();
121-
Group group = new Group(73,11);
129+
Group group = new Group(73, 11);
122130
map.addGroup(group);
123131
assertTrue(map.hasGroup(73));
124132
map.removeGroup(73);

0 commit comments

Comments
 (0)