summaryrefslogtreecommitdiffstats
path: root/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessor.java
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessor.java71
1 files changed, 60 insertions, 11 deletions
diff --git a/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessor.java b/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessor.java
index f5b32a8ea0..b7b0df38db 100644
--- a/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessor.java
+++ b/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessor.java
@@ -19,11 +19,16 @@
package org.apache.tuscany.sca.binding.http.xml;
+import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
+import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
+
import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;
+import org.apache.tuscany.sca.assembly.OperationSelector;
+import org.apache.tuscany.sca.assembly.WireFormat;
import org.apache.tuscany.sca.assembly.builder.impl.ProblemImpl;
import org.apache.tuscany.sca.assembly.xml.Constants;
import org.apache.tuscany.sca.binding.http.HTTPBinding;
@@ -31,10 +36,12 @@ import org.apache.tuscany.sca.binding.http.HTTPBindingFactory;
import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
import org.apache.tuscany.sca.contribution.processor.BaseStAXArtifactProcessor;
import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
+import org.apache.tuscany.sca.contribution.processor.StAXAttributeProcessor;
import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
import org.apache.tuscany.sca.contribution.service.ContributionReadException;
import org.apache.tuscany.sca.contribution.service.ContributionResolveException;
import org.apache.tuscany.sca.contribution.service.ContributionWriteException;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.monitor.Monitor;
import org.apache.tuscany.sca.monitor.Problem;
import org.apache.tuscany.sca.monitor.Problem.Severity;
@@ -47,10 +54,18 @@ public class HTTPBindingProcessor extends BaseStAXArtifactProcessor implements S
private static final String URI = "uri";
private HTTPBindingFactory httpBindingFactory;
+ private StAXArtifactProcessor<Object> extensionProcessor;
+ private StAXAttributeProcessor<Object> extensionAttributeProcessor;
private Monitor monitor;
- public HTTPBindingProcessor(ModelFactoryExtensionPoint modelFactories, Monitor monitor) {
+ public HTTPBindingProcessor(ExtensionPointRegistry extensionPoints,
+ StAXArtifactProcessor extensionProcessor,
+ StAXAttributeProcessor extensionAttributeProcessor,
+ Monitor monitor) {
+ ModelFactoryExtensionPoint modelFactories = extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class);
this.httpBindingFactory = modelFactories.getFactory(HTTPBindingFactory.class);
+ this.extensionProcessor = (StAXArtifactProcessor<Object>)extensionProcessor;
+ this.extensionAttributeProcessor = extensionAttributeProcessor;
this.monitor = monitor;
}
@@ -64,22 +79,55 @@ public class HTTPBindingProcessor extends BaseStAXArtifactProcessor implements S
public HTTPBinding read(XMLStreamReader reader) throws ContributionReadException, XMLStreamException {
HTTPBinding httpBinding = httpBindingFactory.createHTTPBinding();
-
- String name = getString(reader, NAME);
- if(name != null) {
- httpBinding.setName(name);
- }
- String uri = getString(reader, URI);
- if (uri != null) {
- httpBinding.setURI(uri);
+ while(reader.hasNext()) {
+ QName elementName = null;
+ int event = reader.getEventType();
+ switch (event) {
+ case START_ELEMENT:
+ elementName = reader.getName();
+
+ if (BINDING_HTTP_QNAME.equals(elementName)) {
+ String name = getString(reader, NAME);
+ if(name != null) {
+ httpBinding.setName(name);
+ }
+
+ String uri = getString(reader, URI);
+ if (uri != null) {
+ httpBinding.setURI(uri);
+ }
+ } else {
+ // Read an extension element
+ Object extension = extensionProcessor.read(reader);
+ if (extension != null) {
+ if (extension instanceof WireFormat) {
+ httpBinding.setRequestWireFormat((WireFormat)extension);
+ } else if(extension instanceof OperationSelector) {
+ httpBinding.setOperationSelector((OperationSelector)extension);
+ }
+ }
+ }
+
+ }
+
+ if (event == END_ELEMENT && BINDING_HTTP_QNAME.equals(reader.getName())) {
+ break;
+ }
+
+ // Read the next element
+ if (reader.hasNext()) {
+ reader.next();
+ }
}
return httpBinding;
}
public void write(HTTPBinding httpBinding, XMLStreamWriter writer) throws ContributionWriteException, XMLStreamException {
- writer.writeStartElement(Constants.SCA10_NS, BINDING_HTTP);
+ //writer.writeStartElement(Constants.SCA10_NS, BINDING_HTTP);
+
+ writeStart(writer, BINDING_HTTP_QNAME.getNamespaceURI(), BINDING_HTTP_QNAME.getLocalPart());
// Write binding name
if (httpBinding.getName() != null) {
@@ -91,7 +139,8 @@ public class HTTPBindingProcessor extends BaseStAXArtifactProcessor implements S
writer.writeAttribute(URI, httpBinding.getURI());
}
- writer.writeEndElement();
+ writeEnd(writer);
+ //writer.writeEndElement();
}