in FixAntenna/NetCore/Validation/Validators/FieldsDefinitionsTypeValidator.cs [42:116]
public override FixErrorContainer Validate(string msgType, IValidationFixMessage message,
bool isContentValidation)
{
var fixMessage = (ValidationFixMessage)message;
var errors = new FixErrorContainer();
string versionOfMessage = null;
var fieldList = fixMessage.FullFixMessage;
if (fieldList.IsTagExists(8))
{
versionOfMessage = fieldList.GetTagValueAsString(8);
}
double fixVersion = 0;
if (versionOfMessage != null)
{
fixVersion = Convert.ToDouble(versionOfMessage.Substring(versionOfMessage.Length - 3), CultureInfo.InvariantCulture);
}
var fieldsLength = fieldList.Length;
for (var fieldCount = 0; fieldCount < fieldsLength; fieldCount++)
{
var tagValue = fieldList[fieldCount];
var tag = tagValue.TagId;
if (isContentValidation && IsHeaderOrTrailer(tag))
{
continue;
}
if (tagValue.Length == 0)
{
errors.Add(FixErrorBuilder.BuildError(FixErrorCode.TagSpecifiedWithoutValue, tagValue,
fixMessage.GetMsgSeqNumber(), msgType, tag));
}
else
{
var fieldsdef = Util.GetFieldDef();
var fieldDefSize = fieldsdef.Length;
var allTags = Util.GetAllTags();
for (var fieldDefCount = 0; fieldDefCount < fieldDefSize; fieldDefCount++)
{
if (allTags[fieldDefCount] == tag)
{
var fielddef = fieldsdef[fieldDefCount];
var type = (FixTypesEnum)Enum.Parse(typeof(FixTypesEnum),
PrepareType(fielddef.Type), true);
try
{
if (IsInvalidTypeValue(type, tagValue, fixVersion))
{
errors.Add(FixErrorBuilder.BuildError(
FixErrorCode.IncorrectDataFormatForValue, tagValue, fixMessage.GetMsgSeqNumber(),
msgType, tag));
}
else if (!IsCorrectValue(type, tagValue, fielddef))
{
errors.Add(FixErrorBuilder.BuildError(
FixErrorCode.ValueIncorrectOutOfRangeForTag, tagValue,
fixMessage.GetMsgSeqNumber(), msgType, tag));
}
}
catch (ArgumentException ex)
{
errors.Add(FixErrorBuilder.BuildError(FixErrorCode.IncorrectDataFormatForValue,
tagValue, ex.Message));
}
break;
}
}
}
}
return errors;
}