private TokenFilter MaybePayload(TokenFilter stream, string fieldName)
{
lock (this)
{
int? val;
PreviousMappings.TryGetValue(fieldName, out val);
if (val == null)
{
val = -1; // no payloads
if (LuceneTestCase.Rarely(Random))
{
switch (Random.Next(3))
{
case 0: // no payloads
val = -1;
break;
case 1: // variable length payload
val = int.MaxValue;
break;
case 2: // fixed length payload
val = Random.Next(12);
break;
}
}
if (LuceneTestCase.VERBOSE)
{
if (val == int.MaxValue)
{
Console.WriteLine("MockAnalyzer: field=" + fieldName + " gets variable length payloads");
}
else if (val != -1)
{
Console.WriteLine("MockAnalyzer: field=" + fieldName + " gets fixed length=" + val + " payloads");
}
}
PreviousMappings[fieldName] = val; // save it so we are consistent for this field
}
if (val == -1)
{
return stream;
}
else if (val == int.MaxValue)
{
return new MockVariableLengthPayloadFilter(Random, stream);
}
else
{
return new MockFixedLengthPayloadFilter(Random, stream, (int)val);
}
}
}