Skip to content

Commit 5029134

Browse files
andreydpAndrii Poletaiev
authored andcommitted
Adjust javadocs. Fix tests.
1 parent f6f24d2 commit 5029134

File tree

3 files changed

+23
-13
lines changed

3 files changed

+23
-13
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -570,7 +570,7 @@ public boolean isFirstFieldInGroupIsDelimiter() {
570570
* first in the group would be used as delimiter
571571
*
572572
* @param flag true = use first field from message, false = follow data dictionary
573-
* Must be used with enabled {@link #setCheckUnorderedGroupFields(boolean)}
573+
* Must be used with disabled {@link #setCheckUnorderedGroupFields(boolean)}
574574
*/
575575
public void setFirstFieldInGroupIsDelimiter(boolean flag) {
576576
firstFieldInGroupIsDelimiter = flag;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -733,7 +733,7 @@ private void parseGroup(String msgType, StringField field, DataDictionary dd, Da
733733
break;
734734
}
735735
int tag = field.getTag();
736-
boolean shouldCreateNewGroup = tag == firstField || (groupDataDictionary.isFirstFieldInGroupIsDelimiter() && firstField < 0);
736+
boolean shouldCreateNewGroup = tag == firstField || (groupDataDictionary.isFirstFieldInGroupIsDelimiter() && firstField == -1);
737737
if (shouldCreateNewGroup) {
738738
firstField = tag;
739739
addGroupRefToParent(group, parent);

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

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1499,8 +1499,6 @@ private String getCommonDataDictionaryString(String data) {
14991499
public void testFirstFieldInGroupIsDelimiter() throws Exception {
15001500

15011501
final DataDictionary dataDictionary = new DataDictionary(getDictionary());
1502-
dataDictionary.setCheckUnorderedGroupFields(false);
1503-
dataDictionary.setFirstFieldInGroupIsDelimiter(true);
15041502

15051503
String fixMsg = "8=FIX.4.4\u00019=688\u000135=AB\u000149=AAA\u000156=BBB\u000134=21133\u000150=ABCABC" +
15061504
"\u000152=20230905-13:24:37.022\u000155=AAPL\u00011=ACC1\u000111=123456abcedf\u000121=1\u000138=5\u000154=1\u000140=2\u000144=-0.8" +
@@ -1512,36 +1510,48 @@ public void testFirstFieldInGroupIsDelimiter() throws Exception {
15121510
"\u000159=0\u000160=20230905-13:24:36.984\u0001100=ALGO\u0001167=MLEG\u0001555=3\u0001600=AAA\u0001602=111" +
15131511
"\u0001600=BBB\u0001602=222\u0001654=231\u0001600=CCC\u0001602=333\u0001654=332\u000158=TEXT\u000110=168\u0001";
15141512

1515-
//doValidation and firstFieldInGroupIsDelimiter -> should NOT fail
1513+
dataDictionary.setFirstFieldInGroupIsDelimiter(true);
1514+
dataDictionary.setCheckUnorderedGroupFields(false);
15161515
final NewOrderMultileg noml1 = new NewOrderMultileg();
15171516
noml1.fromString(fixMsg, dataDictionary, true);
15181517
dataDictionary.validate(noml1);
15191518
assertTrue(noml1.hasGroup(555));
15201519
assertEquals(3, noml1.getGroupCount(555));
1520+
//when firstFieldInGroupIsDelimiter = true and setCheckUnorderedGroupFields = false - valid
15211521
//delimiter should be first tag in group
15221522
assertEquals(602, noml1.getGroup(1, 555).delim());
15231523

15241524
dataDictionary.setFirstFieldInGroupIsDelimiter(false);
1525-
dataDictionary.setCheckUnorderedGroupFields(true);
1525+
dataDictionary.setCheckUnorderedGroupFields(false);
15261526
final NewOrderMultileg noml2 = new NewOrderMultileg();
15271527
noml2.fromString(fixMsg, dataDictionary, true);
1528-
//when firstFieldInGroupIsDelimiter = false and setCheckUnorderedGroupFields = true - exception is thrown
1528+
//when firstFieldInGroupIsDelimiter = false and setCheckUnorderedGroupFields = false - exception is thrown
15291529
assertThrows(FieldException.class, () -> dataDictionary.validate(noml2));
15301530

1531+
dataDictionary.setFirstFieldInGroupIsDelimiter(false);
1532+
dataDictionary.setCheckUnorderedGroupFields(true);
15311533
final NewOrderMultileg noml3 = new NewOrderMultileg();
15321534
noml3.fromString(fixMsg, dataDictionary, true);
1533-
//when firstFieldInGroupIsDelimiter = true and setCheckUnorderedGroupFields = true - exception is thrown
1535+
//when firstFieldInGroupIsDelimiter = false and setCheckUnorderedGroupFields = true - exception is thrown
15341536
assertThrows(FieldException.class, () -> dataDictionary.validate(noml3));
15351537

1538+
dataDictionary.setFirstFieldInGroupIsDelimiter(true);
15361539
dataDictionary.setCheckUnorderedGroupFields(true);
15371540
final NewOrderMultileg noml4 = new NewOrderMultileg();
1538-
noml4.fromString(byDictFixMsg, dataDictionary, true);
1541+
noml4.fromString(fixMsg, dataDictionary, true);
1542+
//when firstFieldInGroupIsDelimiter = true and setCheckUnorderedGroupFields = true - exception is thrown, since order of tags is incorrect.
1543+
assertThrows(FieldException.class, () -> dataDictionary.validate(noml4));
1544+
1545+
dataDictionary.setFirstFieldInGroupIsDelimiter(true);
1546+
dataDictionary.setCheckUnorderedGroupFields(true);
1547+
final NewOrderMultileg noml5 = new NewOrderMultileg();
1548+
noml5.fromString(byDictFixMsg, dataDictionary, true);
15391549
//when firstFieldInGroupIsDelimiter = true and setCheckUnorderedGroupFields = true, message aligns with dictionary - do NOT fail
1540-
dataDictionary.validate(noml4);
1541-
assertTrue(noml4.hasGroup(555));
1542-
assertEquals(3, noml4.getGroupCount(555));
1550+
dataDictionary.validate(noml5);
1551+
assertTrue(noml5.hasGroup(555));
1552+
assertEquals(3, noml5.getGroupCount(555));
15431553
//delimiter should be dictionary first tag = 600
1544-
assertEquals(600, noml4.getGroup(1, 555).delim());
1554+
assertEquals(600, noml5.getGroup(1, 555).delim());
15451555
}
15461556

15471557

0 commit comments

Comments
 (0)