Javolution 6.0.0 java
javolution.xml.ws.WebServiceClient Class Referenceabstract
Collaboration diagram for javolution.xml.ws.WebServiceClient:
[legend]

Public Member Functions

 WebServiceClient ()
 
WebServiceClient setAddress (String address)
 
void invoke () throws IOException, XMLStreamException
 

Static Public Attributes

static final String ENVELOPE_PREFIX = "env"
 
static final String ENVELOPE_URI = "http://schemas.xmlsoap.org/soap/envelope/"
 

Protected Member Functions

abstract void writeRequest (XMLObjectWriter out) throws XMLStreamException
 
void readResponse (XMLObjectReader in) throws XMLStreamException
 

Package Attributes

Object _url
 

Static Private Member Functions

static final CharSequence csq (Object string)
 

Private Attributes

final TextBuilder _buffer = new TextBuilder()
 
final AppendableWriter _out = new AppendableWriter()
 
final XMLObjectWriter _writer = new XMLObjectWriter()
 
final UTF8StreamWriter _utf8Writer = new UTF8StreamWriter()
 
final XMLObjectReader _reader = new XMLObjectReader()
 

Detailed Description

This class provides a simple web service client capable of leveraging
Javolution XML marshalling/unmarshalling.

Sub-classes may work from WSDL files, XMLFormat or directly with the XML streams (StAX). For example:[code] private static class HelloWorld extends WebServiceClient { protected void writeRequest(XMLObjectWriter out) throws XMLStreamException { XMLStreamWriter xml = out.getStreamWriter(); xml.writeDefaultNamespace("http://www.openuri.org/"); xml.writeEmptyElement("helloWorld"); // Operation name. } protected void readResponse(XMLObjectReader in) throws XMLStreamException { XMLStreamReader xml = in.getStreamReader(); xml.require(START_ELEMENT, "http://www.openuri.org/", "string"); xml.next(); // Move to character content. System.out.println(xml.getText()); } } WebServiceClient ws = new HelloWorld().setAddress("http://acme.com:80/HelloWorld.jws"); ws.invoke();

> Hello World! [/code]

Author
Jean-Marie Dautelle
Version
5.2, September 16, 2007

Definition at line 50 of file WebServiceClient.java.

Constructor & Destructor Documentation

◆ WebServiceClient()

javolution.xml.ws.WebServiceClient.WebServiceClient ( )

Default constructor (address not set).

Definition at line 70 of file WebServiceClient.java.

70 {}

Member Function Documentation

◆ csq()

static final CharSequence javolution.xml.ws.WebServiceClient.csq ( Object  string)
staticprivate

Definition at line 218 of file WebServiceClient.java.

218  {
219  return (string instanceof CharSequence) ? (CharSequence) string : Text
220  .valueOf(string);
221 
222  }

Referenced by javolution.xml.ws.WebServiceClient.invoke().

Here is the caller graph for this function:

◆ invoke()

void javolution.xml.ws.WebServiceClient.invoke ( ) throws IOException, XMLStreamException

Invokes the web service.

Definition at line 89 of file WebServiceClient.java.

89  {
90  try {
91  // Formats the request message (we cannot write directly to
92  // the output stream because the http request requires the length.
95  final XMLStreamWriter xmlOut = _writer.getStreamWriter();
97  xmlOut.writeStartElement(csq(ENVELOPE_URI), csq("Envelope"));
98  xmlOut.writeNamespace(csq(ENVELOPE_PREFIX), csq(ENVELOPE_URI));
99  xmlOut.writeStartElement(csq(ENVELOPE_URI), csq("Header"));
100  xmlOut.writeEndElement();
101  xmlOut.writeStartElement(csq(ENVELOPE_URI), csq("Body"));
103  _writer.close();
104 
105  // Sends the request.
106  if (_url == null)
107  throw new IOException("URL not set");
108 
109  java.net.HttpURLConnection http = (java.net.HttpURLConnection) ((java.net.URL) _url)
110  .openConnection();
111  http.setRequestProperty("Content-Length",
112  String.valueOf(_buffer.length()));
113  http.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
114  // httpConn.setRequestProperty("SOAPAction", "");
115  http.setRequestMethod("POST");
116  http.setDoOutput(true);
117  http.setDoInput(true);
118  _utf8Writer.setOutput(http.getOutputStream());
119 
120  _utf8Writer.append(_buffer);
121  _utf8Writer.close();
122 
123  // Reads the response.
124 
125  _reader.setInput(http.getInputStream());
126 
127  final XMLStreamReader xmlIn = _reader.getStreamReader();
128  while (xmlIn.hasNext()) {
129  if ((xmlIn.next() == XMLStreamReader.START_ELEMENT)
130  && xmlIn.getLocalName().equals("Body")
131  && xmlIn.getNamespaceURI().equals(ENVELOPE_URI)) {
132  // Found body, position reader to next element.
133  xmlIn.next();
135  break;
136  }
137  }
138 
139  } finally {
140  _reader.close();
141  _writer.reset();
142  _out.reset();
143  _buffer.clear();
144  _utf8Writer.reset();
145  _reader.reset();
146  }
147  }

References javolution.xml.ws.WebServiceClient._buffer, javolution.xml.ws.WebServiceClient._out, javolution.xml.ws.WebServiceClient._reader, javolution.xml.ws.WebServiceClient._url, javolution.xml.ws.WebServiceClient._utf8Writer, javolution.xml.ws.WebServiceClient._writer, javolution.text.TextBuilder.clear(), javolution.xml.XMLObjectReader.close(), javolution.xml.XMLObjectWriter.close(), javolution.io.UTF8StreamWriter.close(), javolution.xml.ws.WebServiceClient.csq(), javolution.xml.ws.WebServiceClient.ENVELOPE_PREFIX, javolution.xml.ws.WebServiceClient.ENVELOPE_URI, javolution.text.CharArray.equals(), javolution.xml.stream.XMLStreamReader.getLocalName(), javolution.xml.stream.XMLStreamReader.getNamespaceURI(), javolution.xml.XMLObjectReader.getStreamReader(), javolution.xml.XMLObjectWriter.getStreamWriter(), javolution.xml.stream.XMLStreamReader.hasNext(), javolution.text.TextBuilder.length(), javolution.xml.stream.XMLStreamReader.next(), javolution.xml.ws.WebServiceClient.readResponse(), javolution.io.AppendableWriter.reset(), javolution.xml.XMLObjectReader.reset(), javolution.xml.XMLObjectWriter.reset(), javolution.io.UTF8StreamWriter.reset(), javolution.xml.XMLObjectReader.setInput(), javolution.io.AppendableWriter.setOutput(), javolution.io.UTF8StreamWriter.setOutput(), javolution.xml.XMLObjectWriter.setOutput(), javolution.xml.stream.XMLStreamWriter.setPrefix(), javolution.xml.stream.XMLStreamConstants.START_ELEMENT, javolution.xml.stream.XMLStreamWriter.writeEndElement(), javolution.xml.stream.XMLStreamWriter.writeNamespace(), javolution.xml.ws.WebServiceClient.writeRequest(), and javolution.xml.stream.XMLStreamWriter.writeStartElement().

Here is the call graph for this function:

◆ readResponse()

void javolution.xml.ws.WebServiceClient.readResponse ( XMLObjectReader  in) throws XMLStreamException
protected

Reads the web service response (SOAP body). The default implementation writes the body XML events to System.out.

Parameters
inthe XML object reader.

Definition at line 171 of file WebServiceClient.java.

171  {
172  final XMLStreamReader xml = in.getStreamReader();
173  while (xml.hasNext()) {
174  switch (xml.next()) {
175  case XMLStreamReader.START_DOCUMENT:
176  System.out.println("Start Document");
177  break;
178  case XMLStreamReader.END_DOCUMENT:
179  System.out.println("End Document.");
180  break;
181  case XMLStreamReader.START_ELEMENT:
182  System.out.println("Start Element: " + xml.getLocalName()
183  + "(" + xml.getNamespaceURI() + ")");
184  for (int i = 0, n = xml.getAttributeCount(); i < n; i++) {
185  System.out.println(" Attribute: "
186  + xml.getAttributeLocalName(i) + "("
187  + xml.getAttributeNamespace(i) + "), Value: "
188  + xml.getAttributeValue(i));
189  }
190  break;
191  case XMLStreamReader.END_ELEMENT:
192  if (xml.getLocalName().equals("Body")
193  && xml.getNamespaceURI().equals(ENVELOPE_URI))
194  return; // End body.
195  System.out.println("End Element: " + xml.getLocalName()
196  + "(" + xml.getNamespaceURI() + ")");
197  break;
198  case XMLStreamReader.CHARACTERS:
199  System.out.println("Characters: " + xml.getText());
200  break;
201  case XMLStreamReader.CDATA:
202  System.out.println("CDATA: " + xml.getText());
203  break;
204  case XMLStreamReader.COMMENT:
205  System.out.println("Comment: " + xml.getText());
206  break;
207  case XMLStreamReader.SPACE:
208  System.out.println("Space");
209  break;
210  default:
211  System.out.println(xml);
212  }
213  }
214 
215  }

References javolution.xml.stream.XMLStreamConstants.CDATA, javolution.xml.stream.XMLStreamConstants.CHARACTERS, javolution.xml.stream.XMLStreamConstants.COMMENT, javolution.xml.stream.XMLStreamConstants.END_DOCUMENT, javolution.xml.stream.XMLStreamConstants.END_ELEMENT, javolution.xml.ws.WebServiceClient.ENVELOPE_URI, javolution.text.CharArray.equals(), javolution.xml.stream.XMLStreamReader.getAttributeCount(), javolution.xml.stream.XMLStreamReader.getAttributeLocalName(), javolution.xml.stream.XMLStreamReader.getAttributeNamespace(), javolution.xml.stream.XMLStreamReader.getAttributeValue(), javolution.xml.stream.XMLStreamReader.getLocalName(), javolution.xml.stream.XMLStreamReader.getNamespaceURI(), javolution.xml.stream.XMLStreamReader.getText(), javolution.xml.stream.XMLStreamReader.hasNext(), javolution.xml.stream.XMLStreamReader.next(), javolution.xml.stream.XMLStreamConstants.SPACE, javolution.xml.stream.XMLStreamConstants.START_DOCUMENT, and javolution.xml.stream.XMLStreamConstants.START_ELEMENT.

Referenced by javolution.xml.ws.WebServiceClient.invoke().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setAddress()

WebServiceClient javolution.xml.ws.WebServiceClient.setAddress ( String  address)

Sets the address of this web service.

Parameters
addressthe service full address.

Definition at line 77 of file WebServiceClient.java.

77  {
78  try {
79  _url = new java.net.URL(address);
80  } catch (java.net.MalformedURLException e) {
81  throw new IllegalArgumentException("Malformed URL: " + address);
82  }
83  return this;
84  }

References javolution.xml.ws.WebServiceClient._url.

◆ writeRequest()

abstract void javolution.xml.ws.WebServiceClient.writeRequest ( XMLObjectWriter  out) throws XMLStreamException
abstractprotected

Writes the web service request (SOAP body).

Parameters
outthe XML object writer.

Referenced by javolution.xml.ws.WebServiceClient.invoke().

Here is the caller graph for this function:

Member Data Documentation

◆ _buffer

final TextBuilder javolution.xml.ws.WebServiceClient._buffer = new TextBuilder()
private

Definition at line 149 of file WebServiceClient.java.

Referenced by javolution.xml.ws.WebServiceClient.invoke().

◆ _out

final AppendableWriter javolution.xml.ws.WebServiceClient._out = new AppendableWriter()
private

Definition at line 150 of file WebServiceClient.java.

Referenced by javolution.xml.ws.WebServiceClient.invoke().

◆ _reader

final XMLObjectReader javolution.xml.ws.WebServiceClient._reader = new XMLObjectReader()
private

Definition at line 153 of file WebServiceClient.java.

Referenced by javolution.xml.ws.WebServiceClient.invoke().

◆ _url

Object javolution.xml.ws.WebServiceClient._url
package

◆ _utf8Writer

final UTF8StreamWriter javolution.xml.ws.WebServiceClient._utf8Writer = new UTF8StreamWriter()
private

Definition at line 152 of file WebServiceClient.java.

Referenced by javolution.xml.ws.WebServiceClient.invoke().

◆ _writer

final XMLObjectWriter javolution.xml.ws.WebServiceClient._writer = new XMLObjectWriter()
private

Definition at line 151 of file WebServiceClient.java.

Referenced by javolution.xml.ws.WebServiceClient.invoke().

◆ ENVELOPE_PREFIX

final String javolution.xml.ws.WebServiceClient.ENVELOPE_PREFIX = "env"
static

Holds standard SOAP envelope prefix.

Definition at line 55 of file WebServiceClient.java.

Referenced by javolution.xml.ws.WebServiceClient.invoke().

◆ ENVELOPE_URI

final String javolution.xml.ws.WebServiceClient.ENVELOPE_URI = "http://schemas.xmlsoap.org/soap/envelope/"
static

Holds standard SOAP envelope namespace.

Definition at line 60 of file WebServiceClient.java.

Referenced by javolution.xml.ws.WebServiceClient.invoke(), and javolution.xml.ws.WebServiceClient.readResponse().


The documentation for this class was generated from the following file:
javolution.xml.stream.XMLStreamWriter.setPrefix
void setPrefix(CharSequence prefix, CharSequence uri)
javolution.xml.XMLObjectWriter.reset
void reset()
Definition: XMLObjectWriter.java:306
javolution.xml.XMLObjectReader.reset
void reset()
Definition: XMLObjectReader.java:286
javolution.xml.ws.WebServiceClient.readResponse
void readResponse(XMLObjectReader in)
Definition: WebServiceClient.java:171
javolution.xml.ws.WebServiceClient._out
final AppendableWriter _out
Definition: WebServiceClient.java:150
javolution.text.TextBuilder.clear
final TextBuilder clear()
Definition: TextBuilder.java:725
javolution.io.UTF8StreamWriter.setOutput
UTF8StreamWriter setOutput(OutputStream out)
Definition: UTF8StreamWriter.java:82
javolution.xml.ws.WebServiceClient._utf8Writer
final UTF8StreamWriter _utf8Writer
Definition: WebServiceClient.java:152
javolution.xml.ws.WebServiceClient._writer
final XMLObjectWriter _writer
Definition: WebServiceClient.java:151
javolution.xml.XMLObjectWriter.close
void close()
Definition: XMLObjectWriter.java:284
javolution.xml.ws.WebServiceClient.writeRequest
abstract void writeRequest(XMLObjectWriter out)
javolution.io.AppendableWriter.reset
void reset()
Definition: AppendableWriter.java:159
javolution.xml.XMLObjectReader.close
void close()
Definition: XMLObjectReader.java:269
javolution.xml.ws.WebServiceClient.csq
static final CharSequence csq(Object string)
Definition: WebServiceClient.java:218
javolution.text.TextBuilder.length
final int length()
Definition: TextBuilder.java:91
javolution.xml.ws.WebServiceClient.ENVELOPE_PREFIX
static final String ENVELOPE_PREFIX
Definition: WebServiceClient.java:55
javolution.xml.stream.XMLStreamReader.next
int next()
javolution.xml.XMLObjectWriter.setOutput
XMLObjectWriter setOutput(OutputStream out)
Definition: XMLObjectWriter.java:122
javolution.xml.ws.WebServiceClient._url
Object _url
Definition: WebServiceClient.java:65
javolution.xml.ws.WebServiceClient.ENVELOPE_URI
static final String ENVELOPE_URI
Definition: WebServiceClient.java:60
javolution.io.UTF8StreamWriter.close
void close()
Definition: UTF8StreamWriter.java:306
javolution.xml.ws.WebServiceClient._buffer
final TextBuilder _buffer
Definition: WebServiceClient.java:149
javolution.xml.XMLObjectReader.setInput
XMLObjectReader setInput(InputStream in)
Definition: XMLObjectReader.java:119
javolution.io.UTF8StreamWriter.reset
void reset()
Definition: UTF8StreamWriter.java:326
javolution.xml.ws.WebServiceClient._reader
final XMLObjectReader _reader
Definition: WebServiceClient.java:153
javolution.xml.XMLObjectReader.getStreamReader
XMLStreamReader getStreamReader()
Definition: XMLObjectReader.java:107
javolution.xml.XMLObjectWriter.getStreamWriter
XMLStreamWriter getStreamWriter()
Definition: XMLObjectWriter.java:111
javolution.io.AppendableWriter.setOutput
AppendableWriter setOutput(Appendable output)
Definition: AppendableWriter.java:48