|
From: <st...@te...> - 2006-11-06 19:01:57
|
> Yeah, I would recommend adopting the same practice as the C++ engine > of placing the delimiter first no matter what. For all practical > purposes, this is all you really need. The spec does specify that > all fields must be in a certain order, but most implementations, > QuickFIX included, do not care as long as the delimiter is in the > right place. Despite this, your recommendation of using the > generated group is the best way to go. I've made the change in the QFJ trunk. > Dynamically creating groups based on the DataDictionary is an > interesting idea. What do you think of flipping it around a little > and turning the DataDictionary into a kind of factory. I'm thinking: > > Group group = dataDictionary.createGroup( "X", NoPartyIDs.FIELD ) > > Then you can even add createMessage( "X" ), and createField methods. > Could be useful for some use cases that require more dynamic > capabilities. Interesting idea. It would be nice to have a dynamic factory. What about using (and extending) the quickfix.MessageFactory with an implementation that uses a data dictionary for generating messages and parts of messages like groups, components and fields? The only minor concern I have about adding it to the DataDictionary is that this seems to add a new responsibility to the dictionary. I'd even like to see validation extracted to a validator class rather than tightly coupled to the metadata management provided by the DataDictionary. Regards, Steve |