KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > axis2 > attachments > ImageSampleTest


1 /**
2  * Copyright 2001-2004 The Apache Software Foundation.
3  * <p/>
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  * <p/>
8  * http://www.apache.org/licenses/LICENSE-2.0
9  * <p/>
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  * <p/>
16  */

17 package org.apache.axis2.attachments;
18
19 import java.awt.Image JavaDoc;
20 import java.io.BufferedReader JavaDoc;
21 import java.io.File JavaDoc;
22 import java.io.FileInputStream JavaDoc;
23 import java.io.FileOutputStream JavaDoc;
24 import java.io.InputStream JavaDoc;
25 import java.io.InputStreamReader JavaDoc;
26
27 import javax.activation.DataHandler JavaDoc;
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 /**
41  * @author <a HREF="mailto:thilina@opensource.lk">Thilina Gunarathne </a>
42  */

43
44 public class ImageSampleTest extends AbstractTestCase {
45     
46     public ImageSampleTest(String JavaDoc testName) {
47         super(testName);
48     }
49     
50     /*
51      * @see TestCase#setUp()
52      */

53     Image JavaDoc expectedImage;
54     
55     MTOMStAXSOAPModelBuilder builder;
56     
57     DataHandler JavaDoc expectedDH;
58     
59     File JavaDoc outMTOMFile;
60     
61     File JavaDoc outBase64File;
62     
63     String JavaDoc outFileName = "mtom/ActualImageMTOMOut.bin";
64     
65     String JavaDoc outBase64FileName = "mtom/OMSerializeBase64Out.xml";
66     
67     String JavaDoc imageInFileName = "mtom/img/test.jpg";
68     
69     String JavaDoc imageOutFileName = "mtom/img/testOut.jpg";
70     
71     String JavaDoc inMimeFileName = "mtom/ImageMTOMOut.bin";
72     
73     String JavaDoc contentTypeString = "multipart/Related; type=\"application/xop+xml\";start=\"<SOAPPart>\"; boundary=\"----=_AxIs2_Def_boundary_=42214532\"";
74     
75     
76     /*
77      * @see TestCase#setUp()
78      */

79     protected void setUp() throws Exception JavaDoc {
80         super.setUp();
81         
82     }
83     
84     public void testImageSampleSerialize() throws Exception JavaDoc {
85         
86         outMTOMFile = getTestResourceFile(outFileName);
87         outBase64File = getTestResourceFile(outBase64FileName);
88         OMOutput mtomOutput = new OMOutput(new FileOutputStream JavaDoc(outMTOMFile),true);
89         OMOutput baseOutput = new OMOutput(new FileOutputStream JavaDoc(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 JavaDoc(
101                 getTestResourceFile(imageInFileName)));
102         ImageDataSource dataSource = new ImageDataSource("WaterLilies.jpg",
103                 expectedImage);
104         expectedDH = new DataHandler JavaDoc(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 JavaDoc {
120         InputStream JavaDoc inStream = new FileInputStream JavaDoc(
121                 getTestResourceFile(inMimeFileName));
122         MIMEHelper mimeHelper = new MIMEHelper(inStream, contentTypeString);
123         XMLStreamReader reader = XMLInputFactory.newInstance()
124         .createXMLStreamReader(
125                 new BufferedReader JavaDoc(new InputStreamReader JavaDoc(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         /*
133          * Following is the procedure the user has to follow to read objects in
134          * OBBlob User has to know the object type & whether it is serializable.
135          * If it is not he has to use a Custom Defined DataSource to get the
136          * Object.
137          */

138         
139         DataHandler JavaDoc actualDH;
140         actualDH = blob.getDataHandler();
141         Image JavaDoc actualObject = new JDK13IO().loadImage(actualDH.getDataSource()
142                 .getInputStream());
143         FileOutputStream JavaDoc imageOutStream = new FileOutputStream JavaDoc(
144                 getTestResourceFile(imageOutFileName));
145         new JDK13IO().saveImage("image/jpeg", actualObject, imageOutStream);
146     
147     }
148     
149 }
Popular Tags