1 package org.codehaus.xfire.client.http;
2
3 import java.io.OutputStream;
4
5 import javax.xml.stream.XMLStreamException;
6 import javax.xml.stream.XMLStreamReader;
7 import javax.xml.stream.XMLStreamWriter;
8
9 import org.codehaus.xfire.client.ClientHandler;
10 import org.codehaus.xfire.fault.XFireFault;
11
12 /***
13 * A client which invokes REST style services.
14 *
15 * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
16 * @since Oct 26, 2004
17 */
18 public class RestHttpClient
19 extends AbstractHttpClient
20 {
21 private ClientHandler handler;
22
23 /***
24 * Create a REST client.
25 * @param bodyHandler The handler for the XML messages.
26 * @param url The url to invoke.
27 */
28 public RestHttpClient(ClientHandler bodyHandler, String url)
29 {
30 super();
31 this.handler = bodyHandler;
32 setUrl( url );
33 }
34
35 protected void writeRequest(OutputStream out)
36 {
37 if ( handler.hasRequest() )
38 super.writeRequest(out);
39 }
40
41 protected void writeRequest(XMLStreamWriter writer)
42 throws XMLStreamException
43 {
44 writer.writeStartDocument();
45 handler.writeRequest(writer);
46 writer.writeEndDocument();
47
48 writer.close();
49 }
50
51 protected void readResponse(XMLStreamReader reader)
52 throws XMLStreamException, XFireFault
53 {
54 handler.handleResponse(reader);
55 }
56 }