in protocols/imap/src/main/java/org/apache/james/imap/decode/FetchPartPathDecoder.java [69:143]
private SectionType decode(int at, CharSequence sectionSpecification) throws DecodingException {
SectionType result;
int length = sectionSpecification.length();
if (at < length) {
final char next = sectionSpecification.charAt(at);
switch (next) {
case '.':
separator();
result = decode(at + 1, sectionSpecification);
break;
case '0':
result = digit(at, sectionSpecification, 0);
break;
case '1':
result = digit(at, sectionSpecification, 1);
break;
case '2':
result = digit(at, sectionSpecification, 2);
break;
case '3':
result = digit(at, sectionSpecification, 3);
break;
case '4':
result = digit(at, sectionSpecification, 4);
break;
case '5':
result = digit(at, sectionSpecification, 5);
break;
case '6':
result = digit(at, sectionSpecification, 6);
break;
case '7':
result = digit(at, sectionSpecification, 7);
break;
case '8':
result = digit(at, sectionSpecification, 8);
break;
case '9':
result = digit(at, sectionSpecification, 9);
break;
case 't':
case 'T':
result = text(at, sectionSpecification);
break;
case 'h':
case 'H':
result = header(at, sectionSpecification);
break;
case 'm':
case 'M':
result = mime(at, sectionSpecification);
break;
default:
throw new DecodingException(HumanReadableText.ILLEGAL_ARGUMENTS, "Did not expect '" + next + "' here in body specification.");
}
} else {
storePartial();
result = SectionType.CONTENT;
}
return result;
}