1 17 package org.apache.axis2.attachments; 18 19 import java.awt.Image ; 20 import java.io.BufferedReader ; 21 import java.io.File ; 22 import java.io.FileInputStream ; 23 import java.io.FileOutputStream ; 24 import java.io.InputStream ; 25 import java.io.InputStreamReader ; 26 27 import javax.activation.DataHandler ; 28 import javax.xml.stream.XMLInputFactory; 29 import javax.xml.stream.XMLStreamReader; 30 31 import org.apache.axis2.om.AbstractTestCase; 32 import org.apache.axis2.om.OMElement; 33 import org.apache.axis2.om.OMOutput; 34 import org.apache.axis2.om.OMText; 35 import org.apache.axis2.om.impl.llom.OMElementImpl; 36 import org.apache.axis2.om.impl.llom.OMNamespaceImpl; 37 import org.apache.axis2.om.impl.llom.OMTextImpl; 38 import org.apache.axis2.om.impl.llom.mtom.MTOMStAXSOAPModelBuilder; 39 40 43 44 public class ImageSampleTest extends AbstractTestCase { 45 46 public ImageSampleTest(String testName) { 47 super(testName); 48 } 49 50 53 Image expectedImage; 54 55 MTOMStAXSOAPModelBuilder builder; 56 57 DataHandler expectedDH; 58 59 File outMTOMFile; 60 61 File outBase64File; 62 63 String outFileName = "mtom/ActualImageMTOMOut.bin"; 64 65 String outBase64FileName = "mtom/OMSerializeBase64Out.xml"; 66 67 String imageInFileName = "mtom/img/test.jpg"; 68 69 String imageOutFileName = "mtom/img/testOut.jpg"; 70 71 String inMimeFileName = "mtom/ImageMTOMOut.bin"; 72 73 String contentTypeString = "multipart/Related; type=\"application/xop+xml\";start=\"<SOAPPart>\"; boundary=\"----=_AxIs2_Def_boundary_=42214532\""; 74 75 76 79 protected void setUp() throws Exception { 80 super.setUp(); 81 82 } 83 84 public void testImageSampleSerialize() throws Exception { 85 86 outMTOMFile = getTestResourceFile(outFileName); 87 outBase64File = getTestResourceFile(outBase64FileName); 88 OMOutput mtomOutput = new OMOutput(new FileOutputStream (outMTOMFile),true); 89 OMOutput baseOutput = new OMOutput(new FileOutputStream (outBase64File),false); 90 91 OMNamespaceImpl soap = new OMNamespaceImpl( 92 "http://schemas.xmlsoap.org/soap/envelope/", "soap"); 93 OMElement envelope = new OMElementImpl("Envelope", soap); 94 OMElement body = new OMElementImpl("Body", soap); 95 96 OMNamespaceImpl dataName = new OMNamespaceImpl( 97 "http://www.example.org/stuff", "m"); 98 OMElement data = new OMElementImpl("data", dataName); 99 100 expectedImage = new JDK13IO().loadImage(new FileInputStream ( 101 getTestResourceFile(imageInFileName))); 102 ImageDataSource dataSource = new ImageDataSource("WaterLilies.jpg", 103 expectedImage); 104 expectedDH = new DataHandler (dataSource); 105 OMText binaryNode = new OMTextImpl(expectedDH, true); 106 107 envelope.addChild(body); 108 body.addChild(data); 109 data.addChild(binaryNode); 110 111 envelope.serialize(baseOutput); 112 baseOutput.flush(); 113 114 envelope.serialize(mtomOutput); 115 mtomOutput.flush(); 116 mtomOutput.complete(); 117 } 118 119 public void testImageSampleDeserialize() throws Exception { 120 InputStream inStream = new FileInputStream ( 121 getTestResourceFile(inMimeFileName)); 122 MIMEHelper mimeHelper = new MIMEHelper(inStream, contentTypeString); 123 XMLStreamReader reader = XMLInputFactory.newInstance() 124 .createXMLStreamReader( 125 new BufferedReader (new InputStreamReader (mimeHelper 126 .getSOAPPartInputStream()))); 127 builder = new MTOMStAXSOAPModelBuilder(reader, mimeHelper); 128 OMElement root = (OMElement) builder.getDocumentElement(); 129 OMElement body = (OMElement) root.getFirstChild(); 130 OMElement data = (OMElement) body.getFirstChild(); 131 OMText blob = (OMText) data.getFirstChild(); 132 138 139 DataHandler actualDH; 140 actualDH = blob.getDataHandler(); 141 Image actualObject = new JDK13IO().loadImage(actualDH.getDataSource() 142 .getInputStream()); 143 FileOutputStream imageOutStream = new FileOutputStream ( 144 getTestResourceFile(imageOutFileName)); 145 new JDK13IO().saveImage("image/jpeg", actualObject, imageOutStream); 146 147 } 148 149 } | Popular Tags |