in commons-vfs2-sandbox/src/main/java/org/apache/commons/vfs2/provider/mime/MimeAttributesMap.java [92:168]
private Map<String, Object> createMap() {
// Object is either a String, or a List of Strings
final Map<String, Object> ret = new TreeMap<>();
Enumeration<Header> headers;
try {
@SuppressWarnings("unchecked") // Javadoc say Part returns Header
final Enumeration<Header> allHeaders = part.getAllHeaders();
headers = allHeaders;
} catch (final MessagingException e) {
throw new RuntimeException(e);
}
// add all headers
while (headers.hasMoreElements()) {
final Header header = headers.nextElement();
final String headerName = header.getName();
final Object values = ret.get(headerName);
if (values == null) {
ret.put(headerName, header.getValue());
} else if (values instanceof String) {
final ArrayList<String> newValues = new ArrayList<>();
newValues.add((String) values);
newValues.add(header.getValue());
ret.put(headerName, newValues);
} else if (values instanceof List) {
@SuppressWarnings("unchecked") // we only add Strings to the Lists
final List<String> list = (List<String>) values;
list.add(header.getValue());
}
}
for (final Entry<String, Method> entry : mimeMessageGetters.entrySet()) {
final String name = entry.getKey();
final Method method = entry.getValue();
try {
final Object value = method.invoke(part);
ret.put(OBJECT_PREFIX + name, value);
} catch (final IllegalAccessException | InvocationTargetException e) {
log.debug(e.getLocalizedMessage(), e);
}
}
// add extended fields (with obj. prefix too)
if (part instanceof MimeMessage) {
final MimeMessage message = (MimeMessage) part;
try {
final Address[] address = message.getRecipients(Message.RecipientType.BCC);
ret.put(OBJECT_PREFIX + "Recipients.BCC", address);
} catch (final MessagingException e) {
log.debug(e.getLocalizedMessage(), e);
}
try {
final Address[] address = message.getRecipients(Message.RecipientType.CC);
ret.put(OBJECT_PREFIX + "Recipients.CC", address);
} catch (final MessagingException e) {
log.debug(e.getLocalizedMessage(), e);
}
try {
final Address[] address = message.getRecipients(Message.RecipientType.TO);
ret.put(OBJECT_PREFIX + "Recipients.TO", address);
} catch (final MessagingException e) {
log.debug(e.getLocalizedMessage(), e);
}
try {
final Address[] address = message.getRecipients(MimeMessage.RecipientType.NEWSGROUPS);
ret.put(OBJECT_PREFIX + "Recipients.NEWSGROUPS", address);
} catch (final MessagingException e) {
log.debug(e.getLocalizedMessage(), e);
}
}
return ret;
}