use of com.adaptris.util.text.mime.BodyPartIterator in project interlok by adaptris.
the class MimePartSplitter method splitMessage.
/**
* @see MessageSplitter#splitMessage(AdaptrisMessage)
*/
@Override
public List<AdaptrisMessage> splitMessage(AdaptrisMessage msg) throws CoreException {
List<AdaptrisMessage> result = new ArrayList<AdaptrisMessage>();
AdaptrisMessageFactory fac = selectFactory(msg);
try (BodyPartIterator mp = MimeHelper.createBodyPartIterator(msg)) {
while (mp.hasNext()) {
AdaptrisMessage splitMsg = fac.newMessage();
MimeBodyPart part = mp.next();
copy(part, splitMsg);
copyMetadata(msg, splitMsg);
result.add(splitMsg);
}
} catch (Exception e) {
throw new CoreException(e);
}
logR.trace("Split gave " + result.size() + " messages");
return result;
}
use of com.adaptris.util.text.mime.BodyPartIterator in project interlok by adaptris.
the class IgnoreOriginalMimeAggregatorTest method testService_ContentEncoding.
@Test
public void testService_ContentEncoding() throws Exception {
// This is a 100 line message, so we expect to get 10 parts.
AdaptrisMessage msg = SplitterCase.createLineCountMessageInput();
PooledSplitJoinService service = new PooledSplitJoinService();
// The service doesn't actually matter right now.
service.setService(new NullService());
service.setTimeout(new TimeInterval(10L, TimeUnit.SECONDS));
service.setSplitter(new LineCountSplitter());
MimeAggregator aggr = createAggregatorForTests();
aggr.setEncoding("base64");
service.setAggregator(aggr);
execute(service, msg);
BodyPartIterator input = MimeHelper.createBodyPartIterator(msg);
assertEquals(10, input.size());
}
use of com.adaptris.util.text.mime.BodyPartIterator in project interlok by adaptris.
the class IgnoreOriginalMimeAggregatorTest method testService_ContentIdProvided.
@Test
public void testService_ContentIdProvided() throws Exception {
// This is a 100 line message, so we expect to get 10 parts.
AdaptrisMessage msg = SplitterCase.createLineCountMessageInput();
PooledSplitJoinService service = new PooledSplitJoinService();
// The service doesn't actually matter right now.
service.setService(createAddMetadataService(getName()));
service.setTimeout(new TimeInterval(10L, TimeUnit.SECONDS));
service.setSplitter(new LineCountSplitter());
MimeAggregator aggr = createAggregatorForTests();
aggr.setPartContentId("%message{" + getName() + "}");
service.setAggregator(aggr);
execute(service, msg);
BodyPartIterator input = MimeHelper.createBodyPartIterator(msg);
assertEquals(10, input.size());
}
use of com.adaptris.util.text.mime.BodyPartIterator in project interlok by adaptris.
the class MimeAggregatorCase method testJoinMessage_ContentTypeExpression.
@Test
public void testJoinMessage_ContentTypeExpression() throws Exception {
MimeAggregator aggr = createAggregatorForTests().withPartContentType("%message{MyContentType}");
Set<MetadataElement> metadata = new HashSet<>();
metadata.add(new MetadataElement("MyContentType", "application/xml"));
AdaptrisMessage original = AdaptrisMessageFactory.getDefaultInstance().newMessage("<envelope/>", null, new HashSet<>(metadata));
AdaptrisMessage s1 = AdaptrisMessageFactory.getDefaultInstance().newMessage("<document>hello</document>", null, new HashSet<>(metadata));
AdaptrisMessage s2 = AdaptrisMessageFactory.getDefaultInstance().newMessage("<document>world</document>", null, new HashSet<>(metadata));
aggr.joinMessage(original, Arrays.asList(new AdaptrisMessage[] { s1, s2 }));
BodyPartIterator m = new BodyPartIterator(original.getInputStream());
for (int i = 0; i < m.size(); i++) {
MimeBodyPart part = m.getBodyPart(i);
assertEquals("application/xml", part.getContentType());
}
}
use of com.adaptris.util.text.mime.BodyPartIterator in project interlok by adaptris.
the class MimeAggregatorCase method testJoinMessage_ContentIdExpression.
@Test
public void testJoinMessage_ContentIdExpression() throws Exception {
MimeAggregator aggr = createAggregatorForTests().withPartContentId("%message{MyContentId}");
aggr.setPartContentId("%message{MyContentId}");
AdaptrisMessage original = AdaptrisMessageFactory.getDefaultInstance().newMessage("<envelope/>", null, new HashSet<>(Arrays.asList(new MetadataElement[] { new MetadataElement("MyContentId", getName() + "_original") })));
original.addMetadata("originalKey", "originalValue");
AdaptrisMessage s1 = AdaptrisMessageFactory.getDefaultInstance().newMessage("<document>hello</document>", null, new HashSet<>(Arrays.asList(new MetadataElement[] { new MetadataElement("MyContentId", getName() + "_split1") })));
AdaptrisMessage s2 = AdaptrisMessageFactory.getDefaultInstance().newMessage("<document>world</document>", null, new HashSet<>(Arrays.asList(new MetadataElement[] { new MetadataElement("MyContentId", getName() + "_split2") })));
List<String> expectedContentIDs = new ArrayList<>(Arrays.asList(new String[] { getName() + "_original", getName() + "_split1", getName() + "_split2" }));
aggr.joinMessage(original, Arrays.asList(new AdaptrisMessage[] { s1, s2 }));
BodyPartIterator m = new BodyPartIterator(original.getInputStream());
for (int i = 0; i < m.size(); i++) {
MimeBodyPart part = m.getBodyPart(i);
assertTrue(expectedContentIDs.contains(part.getContentID()));
}
}
Aggregations