|
From: Steve B. <st...@te...> - 2007-09-24 12:47:00
|
Hello,
This looks like a bug in the data dictionary parsing that's been there for
quite some time. Can you post an bug report
on the QFJ Jira bug tracking site? We'll get this fixed in the next release.
Thanks.
Steve
_____
From: qui...@li...
[mailto:qui...@li...] On Behalf Of ??
Sent: Monday, September 24, 2007 8:23 AM
To: qui...@li...
Subject: [Quickfixj-users] Question about "NoHops" at messageHeader
Hi,All
Recently, I find that, in QFJ_1.2.1, I can't use the repeating group
"NoHops"and the fiels 628,629,630. I only can use field 627.
Because repeating group "NoHops" is the only group at messageHeader, so in
many places, we may ignore it! For example, at DataDictionary.java,
private void load(InputStream inputStream) throws ConfigError {
!-!-
// HEADER
NodeList headerNode =
documentElement.getElementsByTagName("header");
if (headerNode.getLength() == 0) {
throw new ConfigError("<header> section not found in data
dictionary");
}
NodeList headerFieldNodes = headerNode.item(0).getChildNodes();
if (headerFieldNodes.getLength() == 0) {
throw new ConfigError("No header fields defined");
}
for (int i = 0; i < headerFieldNodes.getLength(); i++) {
Node headerFieldNode = headerFieldNodes.item(i);
String nodeName = headerFieldNode.getNodeName();
if (nodeName.equals("field") || nodeName.equals("group")) {
String name = getAttribute(headerFieldNode, "name");
if (name == null) {
throw new ConfigError("<" + nodeName + "> does not have
a name attribute");
}
String required = getAttribute(headerFieldNode, "required",
NO);
if (required == null) {
throw new ConfigError("<" +
headerFieldNode.getNodeName()
+ "> does not have a 'required' attribute");
}
addHeaderField(lookupXMLFieldNumber(document, name),
required.equalsIgnoreCase("Y"));
}
!-!-
}
It only load <group name="NoHops" required="N"> from fix44.xml, but can't
load <field name="HopCompID" required="N"/>!"<field name="HopSendingTime"
required="N"/>!"<field name="HopRefID" required="N"/> which are in the
group.
So, maybe, we should add:
if (nodeName.equals("group")) {
String required = getAttribute(headerFieldNode, "required");
if (required == null) {
throw new ConfigError("<group> does not have a 'required'
attribute");
}
addHeaderXMLGroup(document, headerFieldNode, this, required
.equalsIgnoreCase("Y"));
}
}
there, I used a new function:addHeaderXMLGroup(),coming from addXMLGroup().
This question may relate to
addXMLComponentFields()!"addXMLGroup()!"addGroup()!"isGroup()!"getGroup()!"c
heckGroupCount()!"iterate() at DataDictionary.java; and
parseGroup()!"parseHeader() at Message.java; where ignore the only group at
messageHeader "NoHops". And after messageCodeGenerate, I can't "public
static class NoHops extends Group";
How do you think this question? Am I understood? Any questions please let
me know:) Thank you very much!
Regards,
Qi Cai
_____
Windows Live Writer HCDz8f1p9jKYMxBg#,GaKIP4HUV>#! A
<http://writer.live.com/> "<4J9SC#!
|