private Message extractAttachment(Message inMessage, String attachmentName) throws Exception { final Message outMessage = new DefaultMessage(inMessage.getExchange().getContext()); outMessage.setHeader(HEADER_NAME, attachmentName); Object attachment = inMessage.getAttachment(attachmentName).getContent(); if (attachment instanceof InputStream) { outMessage.setBody(readMimePart((InputStream) attachment)); return outMessage; } else if (attachment instanceof String || attachment instanceof byte[]) { outMessage.setBody(attachment); return outMessage; } else { return null; } }
public void copyFromCamelToJbi(Message message, NormalizedMessage normalizedMessage) throws MessagingException { if (message != null && message.getBody() != null) { Source body = message.getBody(Source.class); if (body == null) { logger.warn("Unable to convert message body of type {} into an XML Source", message.getBody().getClass()); } else { normalizedMessage.setContent(body); } } Subject securitySubject = getSecuritySubject(message); if (securitySubject != null) { normalizedMessage.setSecuritySubject(securitySubject); } Exchange exchange = message.getExchange(); for (Map.Entry<String, Object> entry : message.getHeaders().entrySet()) { String key = entry.getKey(); Object value = entry.getValue(); if (value != null && !strategies.applyFilterToCamelHeaders(key, value, exchange)) { normalizedMessage.setProperty(key, value); } } for (String id : message.getAttachmentNames()) { normalizedMessage.addAttachment(id, message.getAttachment(id)); } }
/** * Map from a camel exchange to a SwitchYard exchange. * @param camelExchange the camel exchange * @param syExchange the switchyard exchange * @param phase ExchangePhase.IN to target camelExchange.getIn(), ExchangePhase.OUT to * target camelExchange.getIn(). * @return the */ public static org.switchyard.Message mapCamelToSwitchYard( org.apache.camel.Exchange camelExchange, org.switchyard.Exchange syExchange, ExchangePhase phase) { // Associate the correct Camel message with the SY exchange org.switchyard.Message message = syExchange.createMessage(); org.apache.camel.Message camelMessage = mapCamelPropertiesToSwitchYard(camelExchange, message.getContext(), phase); message.setContent(camelMessage.getBody()); for (String attachmentName : camelMessage.getAttachmentNames()) { message.addAttachment(attachmentName, new HandlerDataSource(camelMessage.getAttachment(attachmentName))); } return message; }
message.addAttachment(attachmentName, new HandlerDataSource(camelMessage.getAttachment(attachmentName)));