From d149e45b2ed8b5c7896d00477972a0154050b898 Mon Sep 17 00:00:00 2001 From: Marcin Date: Wed, 24 Sep 2025 09:30:13 +0200 Subject: [PATCH 1/5] overloading header for message specific subclasses --- quickfixj-base/src/main/java/quickfix/Message.java | 2 +- .../main/resources/org/quickfixj/codegenerator/Message.xsl | 5 +++++ quickfixj-core/src/test/java/quickfix/MessageTest.java | 6 ++++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/quickfixj-base/src/main/java/quickfix/Message.java b/quickfixj-base/src/main/java/quickfix/Message.java index 52874d43dd..7780fa9f8c 100644 --- a/quickfixj-base/src/main/java/quickfix/Message.java +++ b/quickfixj-base/src/main/java/quickfix/Message.java @@ -432,7 +432,7 @@ private void toXMLFields(Element message, String section, FieldMap fieldMap, } } - public final Header getHeader() { + public Header getHeader() { return header; } diff --git a/quickfixj-codegenerator/src/main/resources/org/quickfixj/codegenerator/Message.xsl b/quickfixj-codegenerator/src/main/resources/org/quickfixj/codegenerator/Message.xsl index b71687632d..8380396747 100644 --- a/quickfixj-codegenerator/src/main/resources/org/quickfixj/codegenerator/Message.xsl +++ b/quickfixj-codegenerator/src/main/resources/org/quickfixj/codegenerator/Message.xsl @@ -80,6 +80,11 @@ public class Message extends quickfix.Message { return new Header(this); } + @Override + public Header getHeader() { + return (Message.Header)header; + } + public static class Header extends quickfix.Message.Header { static final long serialVersionUID = ; diff --git a/quickfixj-core/src/test/java/quickfix/MessageTest.java b/quickfixj-core/src/test/java/quickfix/MessageTest.java index 5ee57911ff..5402aa8c29 100644 --- a/quickfixj-core/src/test/java/quickfix/MessageTest.java +++ b/quickfixj-core/src/test/java/quickfix/MessageTest.java @@ -1509,6 +1509,12 @@ public void testFirstFieldInGroupIsDelimiter() throws Exception { assertEquals(600, noml5.getGroup(1, 555).delim()); } + @Test + public void shouldReturnFixSpecificHeader() { + NewOrderSingle order = new NewOrderSingle(); + assertEquals(quickfix.fix42.Message.Header.class, order.getHeader().getClass()); + } + private void assertHeaderField(Message message, String expectedValue, int field) throws FieldNotFound { assertEquals(expectedValue, message.getHeader().getString(field)); From bfa4bb8b1c3651ebdb436c255e2545d68b222397 Mon Sep 17 00:00:00 2001 From: Marcin Date: Wed, 24 Sep 2025 10:38:03 +0200 Subject: [PATCH 2/5] overloading header for message specific subclasses --- quickfixj-core/src/test/java/quickfix/MessageTest.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/quickfixj-core/src/test/java/quickfix/MessageTest.java b/quickfixj-core/src/test/java/quickfix/MessageTest.java index 5402aa8c29..834dcd240a 100644 --- a/quickfixj-core/src/test/java/quickfix/MessageTest.java +++ b/quickfixj-core/src/test/java/quickfix/MessageTest.java @@ -24,6 +24,7 @@ import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -1510,9 +1511,12 @@ public void testFirstFieldInGroupIsDelimiter() throws Exception { } @Test - public void shouldReturnFixSpecificHeader() { + public void shouldReturnFixSpecificHeader() throws FieldNotFound { NewOrderSingle order = new NewOrderSingle(); - assertEquals(quickfix.fix42.Message.Header.class, order.getHeader().getClass()); + assertSame(quickfix.fix42.Message.Header.class, order.getHeader().getClass()); + + order.set(new Signature("foo")); + assertEquals(order.getSignature().getValue(), "foo"); } private void assertHeaderField(Message message, String expectedValue, int field) From 3b61a6bbf043a3642fc4c5d08f640832345de45e Mon Sep 17 00:00:00 2001 From: Marcin Date: Wed, 24 Sep 2025 14:18:21 +0200 Subject: [PATCH 3/5] overloading header for message specific subclasses --- quickfixj-core/src/test/java/quickfix/MessageTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/quickfixj-core/src/test/java/quickfix/MessageTest.java b/quickfixj-core/src/test/java/quickfix/MessageTest.java index 834dcd240a..6b30ac0a64 100644 --- a/quickfixj-core/src/test/java/quickfix/MessageTest.java +++ b/quickfixj-core/src/test/java/quickfix/MessageTest.java @@ -111,6 +111,7 @@ import quickfix.field.StrikePrice; import quickfix.field.Symbol; import quickfix.field.TargetCompID; +import quickfix.field.TargetSubID; import quickfix.field.Text; import quickfix.field.TotNoOrders; import quickfix.field.TradeDate; @@ -1515,8 +1516,8 @@ public void shouldReturnFixSpecificHeader() throws FieldNotFound { NewOrderSingle order = new NewOrderSingle(); assertSame(quickfix.fix42.Message.Header.class, order.getHeader().getClass()); - order.set(new Signature("foo")); - assertEquals(order.getSignature().getValue(), "foo"); + order.getHeader().set(new TargetSubID("foo")); + assertEquals(order.getHeader().getTargetSubID().getValue(), "foo"); } private void assertHeaderField(Message message, String expectedValue, int field) From 8cf63aa287c7c3651855fd165b1cd3061decc902 Mon Sep 17 00:00:00 2001 From: Christoph John Date: Mon, 29 Sep 2025 18:05:13 +0200 Subject: [PATCH 4/5] updated to orchestra tools 1.0.3 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4fc044e51c..3c18146be8 100644 --- a/pom.xml +++ b/pom.xml @@ -100,7 +100,7 @@ 2.2.4 2.20.0 OrchestraFIXLatest.xml - 1.0.2 + 1.0.3 2.0.0 1.37 From 7495907b25a92219137c91d788b7dc27abd917db Mon Sep 17 00:00:00 2001 From: Marcin Date: Mon, 29 Sep 2025 18:47:43 +0200 Subject: [PATCH 5/5] overloading header for message specific subclasses --- quickfixj-core/src/test/java/quickfix/MessageTest.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/quickfixj-core/src/test/java/quickfix/MessageTest.java b/quickfixj-core/src/test/java/quickfix/MessageTest.java index 6b30ac0a64..f9e9898575 100644 --- a/quickfixj-core/src/test/java/quickfix/MessageTest.java +++ b/quickfixj-core/src/test/java/quickfix/MessageTest.java @@ -134,6 +134,7 @@ import quickfix.fix44.component.Instrument; import quickfix.fix44.component.Parties; import quickfix.fix50.MarketDataSnapshotFullRefresh; +import quickfix.fixt11.TestRequest; /** * NOTE: There are two MessageTests. One in quickfixj-base, one in @@ -1518,6 +1519,15 @@ public void shouldReturnFixSpecificHeader() throws FieldNotFound { order.getHeader().set(new TargetSubID("foo")); assertEquals(order.getHeader().getTargetSubID().getValue(), "foo"); + + quickfix.fixlatest.NewOrderSingle fixLatestOrder = new quickfix.fixlatest.NewOrderSingle(); + assertSame(quickfix.fixlatest.Message.Header.class, fixLatestOrder.getHeader().getClass()); + + quickfix.fix50sp1.NewOrderSingle fix50sp1Order = new quickfix.fix50sp1.NewOrderSingle(); + assertSame(quickfix.fix50sp1.Message.Header.class, fix50sp1Order.getHeader().getClass()); + + TestRequest testRequest = new TestRequest(); + assertSame(quickfix.fixt11.Message.Header.class, testRequest.getHeader().getClass()); } private void assertHeaderField(Message message, String expectedValue, int field)