public Class<RESTBinding> getModelType() {
return RESTBinding.class;
}
public RESTBinding read(XMLStreamReader reader, ProcessorContext context) throws ContributionReadException, XMLStreamException {
RESTBinding restBinding = httpBindingFactory.createRESTBinding();
/**
* <tuscany:binding.rest uri="http://localhost:8085/Customer">
* <tuscany:wireFormat.xml />
* <tuscany:operationSelector.jaxrs />
* <tuscany:http-headers>
* <tuscany:header name="Cache-Control" value="no-cache"/>
* <tuscany:header name="Expires" value="-1"/>
* </tuscany:http-headers>
* <tuscany:response>
* <tuscany:wireFormat.json />
* </tuscany:response>
* </tuscany:binding.rest>
*
*/
while(reader.hasNext()) {
QName elementName = null;
int event = reader.getEventType();
switch (event) {
case START_ELEMENT:
elementName = reader.getName();
if(RESTBinding.TYPE.equals(elementName)) {
// binding attributes
String name = getString(reader, NAME);
if(name != null) {
restBinding.setName(name);
}
String uri = getURIString(reader, URI);
if (uri != null) {
restBinding.setURI(uri);
}
break;
} else if (HEADERS_QNAME.equals(elementName)) {
// ignore wrapper element
break;
} else if (HEADER_QNAME.equals(elementName)) {
// header name/value pair
String name = getString(reader, NAME);
String value = getURIString(reader, VALUE);
if(name != null) {
restBinding.getHttpHeaders().add(new HTTPHeader(name, value));
}
break;
} else if (RESPONSE_QNAME.equals(elementName)) {
// skip response
reader.next();
// and position to the next start_element event
while (reader.hasNext()) {
int sub_event = reader.getEventType();
switch (sub_event) {
case START_ELEMENT:
elementName = reader.getName();
break;
default: reader.next();
}
break;
}
// dispatch to read wire format for the response
Object extension = extensionProcessor.read(reader, context);
if (extension != null) {
if (extension instanceof WireFormat) {
restBinding.setResponseWireFormat((WireFormat)extension);
}
}
break;
} else {
// Read an extension element
Object extension = extensionProcessor.read(reader, context);
if (extension != null) {
if (extension instanceof WireFormat) {
restBinding.setRequestWireFormat((WireFormat)extension);
restBinding.setResponseWireFormat((WireFormat)extension);
} else if(extension instanceof OperationSelector) {
restBinding.setOperationSelector((OperationSelector)extension);
}
}
break;
}