in core/src/main/java/org/apache/james/mime4j/stream/FallbackBodyDescriptorBuilder.java [149:206]
private void parseContentType(Field field) throws MimeException {
RawField rawfield;
if (field instanceof RawField) {
rawfield = ((RawField) field);
} else {
rawfield = new RawField(field.getName(), field.getBody());
}
RawBody body = RawFieldParser.DEFAULT.parseRawBody(rawfield);
String main = body.getValue();
Map<String, String> params = new HashMap<String, String>();
for (NameValuePair nmp: body.getParams()) {
String name = nmp.getName().toLowerCase(Locale.US);
params.put(name, nmp.getValue());
}
String type = null;
String subtype = null;
if (main != null) {
main = main.toLowerCase().trim();
int index = main.indexOf('/');
boolean valid = false;
if (index != -1) {
type = main.substring(0, index).trim();
subtype = main.substring(index + 1).trim();
if (type.length() > 0 && subtype.length() > 0) {
main = type + "/" + subtype;
valid = true;
}
}
if (!valid) {
main = null;
type = null;
subtype = null;
}
}
String b = params.get("boundary");
boolean multipart = main != null && main.startsWith("multipart/");
if (multipart && b != null || !multipart) {
mimeType = main;
mediaType = type;
subType = subtype;
}
if (MimeUtil.isMultipart(mimeType)) {
boundary = b;
}
String c = params.get("charset");
charset = null;
if (c != null) {
c = c.trim();
if (c.length() > 0) {
charset = c;
}
}
}