diff --git a/pom.xml b/pom.xml index 4fc044e51..3c18146be 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 diff --git a/quickfixj-base/src/main/java/quickfix/Message.java b/quickfixj-base/src/main/java/quickfix/Message.java index 52874d43d..7780fa9f8 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 b71687632..838039674 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 5ee57911f..f9e989857 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; @@ -110,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; @@ -132,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 @@ -1509,6 +1512,24 @@ public void testFirstFieldInGroupIsDelimiter() throws Exception { assertEquals(600, noml5.getGroup(1, 555).delim()); } + @Test + public void shouldReturnFixSpecificHeader() throws FieldNotFound { + NewOrderSingle order = new NewOrderSingle(); + assertSame(quickfix.fix42.Message.Header.class, order.getHeader().getClass()); + + 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) throws FieldNotFound { assertEquals(expectedValue, message.getHeader().getString(field));