1 package org.codehaus.xfire.attachments; 2 3 import java.io.ByteArrayInputStream; 4 import java.io.ByteArrayOutputStream; 5 import java.io.File; 6 import java.io.InputStream; 7 8 import javax.activation.DataHandler; 9 import javax.activation.FileDataSource; 10 import javax.mail.MessagingException; 11 12 import org.codehaus.xfire.fault.Soap12FaultHandler; 13 import org.codehaus.xfire.handler.EchoHandler; 14 import org.codehaus.xfire.service.MessageService; 15 import org.codehaus.xfire.soap.Soap12; 16 import org.codehaus.xfire.test.AbstractServletTest; 17 18 import com.meterware.httpunit.PostMethodWebRequest; 19 import com.meterware.httpunit.WebRequest; 20 import com.meterware.httpunit.WebResponse; 21 22 /*** 23 * XFireServletTest 24 * 25 * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a> 26 */ 27 public class ServletAttachmentTest 28 extends AbstractServletTest 29 { 30 public void setUp() throws Exception 31 { 32 super.setUp(); 33 34 MessageService service = new MessageService(); 35 service.setName("Echo"); 36 service.setSoapVersion(Soap12.getInstance()); 37 service.setWSDLURL(getClass().getResource("/org/codehaus/xfire/echo11.wsdl").toString()); 38 39 service.setServiceHandler(new EchoHandler()); 40 service.setFaultHandler(new Soap12FaultHandler()); 41 42 getServiceRegistry().register(service); 43 } 44 45 public void testServlet() throws Exception 46 { 47 WebRequest req = getRequestMessage(); 48 49 WebResponse response = newClient().getResponse(req); 50 51 System.out.println(response.getText()); 52 } 53 54 public WebRequest getRequestMessage() throws Exception 55 { 56 JavaMailAttachments sendAtts = new JavaMailAttachments(); 57 58 sendAtts.setSoapMessage( 59 new SimpleAttachment("echo.xml", 60 createDataHandler("./src/test/org/codehaus/xfire/attachments/echo11.xml"))); 61 62 sendAtts.addPart( 63 new SimpleAttachment("xfire_logo.jpg", 64 createDataHandler("./src/test/org/codehaus/xfire/attachments/xfire_logo.jpg"))); 65 66 ByteArrayOutputStream bos = new ByteArrayOutputStream(); 67 sendAtts.write(bos); 68 69 InputStream is = new ByteArrayInputStream(bos.toByteArray()); 70 71 PostMethodWebRequest req = new PostMethodWebRequest( 72 "http://localhost/services/Echo", is, sendAtts.getContentType() ); 73 74 return req; 75 } 76 77 private DataHandler createDataHandler(String name) 78 throws MessagingException 79 { 80 File f = new File(name); 81 FileDataSource fs = new FileDataSource(f); 82 83 return new DataHandler(fs); 84 } 85 }