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));