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  }