summaryrefslogtreecommitdiffstats
path: root/branches/sca-java-1.x/modules/binding-http-oasis
diff options
context:
space:
mode:
authorlresende <lresende@13f79535-47bb-0310-9956-ffa450edef68>2009-04-23 04:04:06 +0000
committerlresende <lresende@13f79535-47bb-0310-9956-ffa450edef68>2009-04-23 04:04:06 +0000
commit50636dc245ba1a5be0e19b1486d61cfe55aa14a0 (patch)
tree8660c9a866aecb7726583315f73d8ee83b093639 /branches/sca-java-1.x/modules/binding-http-oasis
parent2050dfb02e03c9cf5c3a8831b46bb5c3795e9228 (diff)
TUSCANY-2968 - Adding module to handle json-rpc wireformat and initial support for it
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@767780 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'branches/sca-java-1.x/modules/binding-http-oasis')
-rw-r--r--branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/HTTPBinding.java4
-rw-r--r--branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/impl/HTTPBindingImpl.java35
-rw-r--r--branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessor.java71
-rw-r--r--branches/sca-java-1.x/modules/binding-http-oasis/src/test/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessorTestCase.java19
4 files changed, 106 insertions, 23 deletions
diff --git a/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/HTTPBinding.java b/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/HTTPBinding.java
index d4ad8d2602..7005385afb 100644
--- a/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/HTTPBinding.java
+++ b/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/HTTPBinding.java
@@ -19,7 +19,7 @@
package org.apache.tuscany.sca.binding.http;
-import org.apache.tuscany.sca.assembly.Binding;
+import org.apache.tuscany.sca.assembly.BindingRRB;
/**
@@ -27,6 +27,6 @@ import org.apache.tuscany.sca.assembly.Binding;
*
* @version $Rev$ $Date$
*/
-public interface HTTPBinding extends Binding {
+public interface HTTPBinding extends BindingRRB {
}
diff --git a/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/impl/HTTPBindingImpl.java b/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/impl/HTTPBindingImpl.java
index 6d4bf92adc..242f3c6d48 100644
--- a/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/impl/HTTPBindingImpl.java
+++ b/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/impl/HTTPBindingImpl.java
@@ -22,6 +22,8 @@ package org.apache.tuscany.sca.binding.http.impl;
import java.util.ArrayList;
import java.util.List;
+import org.apache.tuscany.sca.assembly.OperationSelector;
+import org.apache.tuscany.sca.assembly.WireFormat;
import org.apache.tuscany.sca.binding.http.HTTPBinding;
import org.apache.tuscany.sca.policy.Intent;
import org.apache.tuscany.sca.policy.IntentAttachPointType;
@@ -39,12 +41,14 @@ class HTTPBindingImpl implements HTTPBinding, PolicySetAttachPoint {
private String name;
private String uri;
+ private WireFormat wireFormat;
+ private OperationSelector operationSelector;
+
private List<Intent> requiredIntents = new ArrayList<Intent>();
private List<PolicySet> policySets = new ArrayList<PolicySet>();
private IntentAttachPointType intentAttachPointType;
private List<PolicySet> applicablePolicySets = new ArrayList<PolicySet>();
-
public String getName() {
return name;
}
@@ -60,8 +64,7 @@ class HTTPBindingImpl implements HTTPBinding, PolicySetAttachPoint {
public void setURI(String uri) {
this.uri = uri;
}
-
-
+
public boolean isUnresolved() {
return false;
}
@@ -70,6 +73,32 @@ class HTTPBindingImpl implements HTTPBinding, PolicySetAttachPoint {
// The sample binding is always resolved
}
+ // Wireformat and Operation selection
+
+ public WireFormat getRequestWireFormat() {
+ return wireFormat;
+ }
+
+ public void setRequestWireFormat(WireFormat wireFormat) {
+ this.wireFormat = wireFormat;
+ }
+
+ public WireFormat getResponseWireFormat() {
+ return wireFormat;
+ }
+
+ public void setResponseWireFormat(WireFormat wireFormat) {
+ this.wireFormat = wireFormat;
+ }
+
+ public OperationSelector getOperationSelector() {
+ return operationSelector;
+ }
+
+ public void setOperationSelector(OperationSelector operationSelector) {
+ this.operationSelector = operationSelector;
+ }
+
//Policy related getters/setters
public List<PolicySet> getPolicySets() {
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();
}
diff --git a/branches/sca-java-1.x/modules/binding-http-oasis/src/test/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessorTestCase.java b/branches/sca-java-1.x/modules/binding-http-oasis/src/test/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessorTestCase.java
index 46025e0311..32eb19f6f0 100644
--- a/branches/sca-java-1.x/modules/binding-http-oasis/src/test/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessorTestCase.java
+++ b/branches/sca-java-1.x/modules/binding-http-oasis/src/test/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessorTestCase.java
@@ -31,7 +31,8 @@ import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;
import org.apache.tuscany.sca.binding.http.HTTPBinding;
-import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
+import org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor;
+import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint;
import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
import org.apache.tuscany.sca.core.UtilityExtensionPoint;
import org.apache.tuscany.sca.monitor.Monitor;
@@ -45,20 +46,22 @@ import org.junit.Test;
* @version $Rev$ $Date$
*/
public class HTTPBindingProcessorTestCase {
-
- private static final String XML = "<binding.http name=\"name\" uri=\"uri\" />";
+ private static final String XML = "<binding.http xmlns=\"http://www.osoa.org/xmlns/sca/1.0\" xmlns:ns1=\"http://www.osoa.org/xmlns/sca/1.0\" name=\"name\" uri=\"uri\" />";
private static XMLInputFactory inputFactory;
private static XMLOutputFactory outputFactory;
private static Monitor monitor;
+ private static ExtensibleStAXArtifactProcessor staxProcessor;
private static HTTPBindingProcessor httpBindingProcessor;
@BeforeClass
public static void setUp() throws Exception {
inputFactory = XMLInputFactory.newInstance();
+
outputFactory = XMLOutputFactory.newInstance();
+ outputFactory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, Boolean.TRUE);
DefaultExtensionPointRegistry extensionPoints = new DefaultExtensionPointRegistry();
// Create a monitor
@@ -69,8 +72,10 @@ public class HTTPBindingProcessorTestCase {
utilities.addUtility(monitorFactory);
}
- ModelFactoryExtensionPoint modelFactories = extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class);
- httpBindingProcessor = new HTTPBindingProcessor(modelFactories, monitor);
+ StAXArtifactProcessorExtensionPoint staxProcessors = extensionPoints.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
+ staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, inputFactory, XMLOutputFactory.newInstance(), null);
+
+ httpBindingProcessor = new HTTPBindingProcessor(extensionPoints, staxProcessor, null, monitor);
}
@@ -96,8 +101,8 @@ public class HTTPBindingProcessorTestCase {
writer.writeEndDocument();
// used for debug comparison
- // System.out.println(XML);
- // System.out.println(bos.toString());
+ System.out.println(XML);
+ System.out.println(bos.toString());
assertEquals(XML, bos.toString());
}