public static Map<String, Object> getAttachements(Object obj, Transformer transformer) {
Map<String, Object> result = new LinkedHashMap<String, Object>();
Object key = getAttachementKey(obj);
ApiRequest request = ApiContext.getContext().getApiRequest();
@SuppressWarnings("unchecked")
Map<String, Map<Object, Object>> attachments = (Map<String, Map<Object, Object>>) request.getAttribute(key);
if (attachments == null) {
return result;
}
for (Map.Entry<String, Map<Object, Object>> entry : attachments.entrySet()) {
String keyName = entry.getKey();
List<Object> objects = new ArrayList<Object>();
for (Object attachment : entry.getValue().values()) {
attachment = transformer.transform(attachment);
if (attachment != null) {
objects.add(attachment);
}
}
if (keyName.startsWith(SINGLE_ATTACHMENT_PREFIX)) {
Object attachedObj = objects.size() > 0 ? objects.get(0) : null;
result.put(keyName.substring(SINGLE_ATTACHMENT_PREFIX.length()), attachedObj);
} else {
result.put(keyName, objects);
}
}
return result;
}