package se.pp.gustafson.marten.mime.examples; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import java.awt.Graphics; import java.io.ByteArrayInputStream; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JFrame; import javax.swing.JPanel; import org.junit.Test; import se.pp.gustafson.marten.mime.HandlerMap; import se.pp.gustafson.marten.mime.MultipartMixed; import se.pp.gustafson.marten.mime.handlers.Callback; import se.pp.gustafson.marten.mime.handlers.JpegHandler; import se.pp.gustafson.marten.mime.handlers.PlainTextHandler; import se.pp.gustafson.marten.mime.tests.TestUtil; public class PlainTextAndGifExample extends JPanel { private static final long serialVersionUID = 8478769362814237906L; private byte[] raw; @Test public void displayJpegAndVerifyPlainText() { final MultipartMixed mm = new MultipartMixed(new HandlerMap(new JpegHandler(new Callback<byte[]>() { @Override public void process(final byte[] data) { processImage(data); } }), new PlainTextHandler(new Callback<String>() { @Override public void process(final String data) { assertEquals("This is the plain-text body!\nThank you.", data); } }))); mm.process(TestUtil.readTestFile(TestUtil.Files.JPEG_AND_PLAIN_TEXT_FILE)); } public void processImage(byte[] data) { this.raw = data; final JFrame f = new JFrame(); f.getContentPane().add(this); f.setBounds(0, 0, 100, 100); f.setVisible(true); try { Thread.sleep(1000); } catch(final InterruptedException e) { fail(e.getMessage()); } } @Override public void paint(final Graphics g) { try { g.drawImage(ImageIO.read(new ByteArrayInputStream(this.raw)), 0, 0, this); } catch(final IOException e) { e.printStackTrace(); } } }