@@ -31,33 +31,32 @@ type fixtValidator struct {
3131
3232//Validate tests the message against the provided data dictionary.
3333func (v * fixValidator ) Validate (msg Message ) MessageRejectError {
34- var msgType FIXString
35- if err := msg .Header .GetField (tagMsgType , & msgType ); err != nil {
36- if err .RejectReason () == rejectReasonConditionallyRequiredFieldMissing {
37- return RequiredTagMissing (tagMsgType )
38- } else {
39- return err
40- }
41- } else {
42- return validateFIX (v .dataDictionary , v .settings , string (msgType ), msg )
34+ if ! msg .Header .Has (tagMsgType ) {
35+ return RequiredTagMissing (tagMsgType )
36+ }
37+ msgType , err := msg .Header .GetString (tagMsgType )
38+ if err != nil {
39+ return err
4340 }
41+
42+ return validateFIX (v .dataDictionary , v .settings , msgType , msg )
4443}
4544
4645//Validate tests the message against the provided transport and app data dictionaries.
4746//If the message is an admin message, it will be validated against the transport data dictionary.
4847func (v * fixtValidator ) Validate (msg Message ) MessageRejectError {
49- var msgType FIXString
50- if err := msg .Header .GetField (tagMsgType , & msgType ); err != nil {
51- if err .RejectReason () == rejectReasonConditionallyRequiredFieldMissing {
52- return RequiredTagMissing (tagMsgType )
53- } else {
54- return err
55- }
56- } else if isAdminMessageType (string (msgType )) {
57- return validateFIX (v .transportDataDictionary , v .settings , string (msgType ), msg )
58- } else {
59- return validateFIXT (v .transportDataDictionary , v .appDataDictionary , v .settings , string (msgType ), msg )
48+ if ! msg .Header .Has (tagMsgType ) {
49+ return RequiredTagMissing (tagMsgType )
50+ }
51+ msgType , err := msg .Header .GetString (tagMsgType )
52+ if err != nil {
53+ return err
54+ }
55+
56+ if isAdminMessageType (msgType ) {
57+ return validateFIX (v .transportDataDictionary , v .settings , msgType , msg )
6058 }
59+ return validateFIXT (v .transportDataDictionary , v .appDataDictionary , v .settings , msgType , msg )
6160}
6261
6362func validateFIX (d * datadictionary.DataDictionary , settings validatorSettings , msgType string , msg Message ) MessageRejectError {
@@ -167,9 +166,8 @@ func validateVisitField(fieldDef *datadictionary.FieldDef, fields []tagValue) ([
167166 var err MessageRejectError
168167 if fields , err = validateVisitGroupField (fieldDef , fields ); err != nil {
169168 return nil , err
170- } else {
171- return fields , nil
172169 }
170+ return fields , nil
173171 }
174172
175173 return fields [1 :], nil
@@ -261,13 +259,9 @@ func validateRequired(transportDD *datadictionary.DataDictionary, appDD *datadic
261259
262260func validateRequiredFieldMap (msg Message , requiredTags map [int ]struct {}, fieldMap FieldMap ) MessageRejectError {
263261 for required := range requiredTags {
264- field := new (FIXString )
265- if err := fieldMap .GetField (Tag (required ), field ); err != nil {
266- //FIXME: add "has..." method?
267- if err .RejectReason () == rejectReasonConditionallyRequiredFieldMissing {
268- return RequiredTagMissing (Tag (required ))
269- }
270- return err
262+ requiredTag := Tag (required )
263+ if ! fieldMap .Has (requiredTag ) {
264+ return RequiredTagMissing (requiredTag )
271265 }
272266 }
273267
0 commit comments