diff options
Diffstat (limited to 'branches/sca-java-1.x/modules/binding-jms')
4 files changed, 72 insertions, 6 deletions
diff --git a/branches/sca-java-1.x/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBinding.java b/branches/sca-java-1.x/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBinding.java index 03157061d9..f2f78df879 100644 --- a/branches/sca-java-1.x/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBinding.java +++ b/branches/sca-java-1.x/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBinding.java @@ -24,12 +24,13 @@ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; -import javax.xml.namespace.QName; import java.util.TreeSet; +import javax.xml.namespace.QName; + import org.apache.tuscany.sca.assembly.BindingRRB; -import org.apache.tuscany.sca.assembly.DefinitionElement; import org.apache.tuscany.sca.assembly.ConfiguredOperation; +import org.apache.tuscany.sca.assembly.DefinitionElement; import org.apache.tuscany.sca.assembly.OperationSelector; import org.apache.tuscany.sca.assembly.OperationsConfigurator; import org.apache.tuscany.sca.assembly.WireFormat; @@ -140,8 +141,10 @@ public class JMSBinding implements BindingRRB, PolicySetAttachPoint, OperationsC private String jmsSelector; private QName requestConnectionName; private QName responseConnectionName; + private QName operationPropertiesName; private JMSBinding requestConnectionBinding; private JMSBinding responseConnectionBinding; + private JMSBinding operationPropertiesBinding; private WireFormat requestWireFormat; private WireFormat responseWireFormat; @@ -681,6 +684,20 @@ public class JMSBinding implements BindingRRB, PolicySetAttachPoint, OperationsC return responseConnectionBinding; } + public void setOperationPropertiesName(QName nameValue) { + this.operationPropertiesName = nameValue; + } + public QName getOperationPropertiesName() { + return operationPropertiesName; + } + + public void setOperationPropertiesBinding(JMSBinding binding) { + this.operationPropertiesBinding = binding; + } + public JMSBinding getOperationPropertiesBinding() { + return operationPropertiesBinding; + } + // operations required by PolicySetAttachPoint public List<PolicySet> getPolicySets() { return policySets; @@ -893,4 +910,5 @@ public class JMSBinding implements BindingRRB, PolicySetAttachPoint, OperationsC return true; } + } diff --git a/branches/sca-java-1.x/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessor.java b/branches/sca-java-1.x/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessor.java index 299d844b16..5e1c674e69 100644 --- a/branches/sca-java-1.x/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessor.java +++ b/branches/sca-java-1.x/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessor.java @@ -266,6 +266,11 @@ public class JMSBindingProcessor extends BaseStAXArtifactProcessor implements St jmsBinding.setResponseConnectionName(getQNameValue(reader, responseConnectionName)); } + String operationPropertiesName = reader.getAttributeValue(null, "operationProperties"); + if (operationPropertiesName != null && operationPropertiesName.length() > 0) { + jmsBinding.setOperationPropertiesName(getQNameValue(reader, operationPropertiesName)); + } + // Read sub-elements of binding.jms boolean endFound = false; while (!endFound) { @@ -384,6 +389,9 @@ public class JMSBindingProcessor extends BaseStAXArtifactProcessor implements St if (model.getResponseConnectionName() != null) { model.setResponseConnectionBinding(getConnectionBinding(model, "responseConnection", model.getResponseConnectionName(), resolver)); } + if (model.getOperationPropertiesName() != null) { + model.setOperationPropertiesBinding(getConnectionBinding(model, "operationProperties", model.getOperationPropertiesName(), resolver)); + } } @SuppressWarnings("unchecked") @@ -912,7 +920,8 @@ public class JMSBindingProcessor extends BaseStAXArtifactProcessor implements St // Write a <binding.jms> writeStart(writer, Constants.SCA10_NS, JMSBindingConstants.BINDING_JMS, new XAttr("requestConnection", jmsBinding.getRequestConnectionName()), - new XAttr("responseConnection", jmsBinding.getResponseConnectionName())); + new XAttr("responseConnection", jmsBinding.getResponseConnectionName()), + new XAttr("operationProperties", jmsBinding.getOperationPropertiesName())); if (jmsBinding.getName() != null) { writer.writeAttribute("name", jmsBinding.getName()); diff --git a/branches/sca-java-1.x/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessorTestCase.java b/branches/sca-java-1.x/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessorTestCase.java index 42a669b9ab..e05f31da1b 100644 --- a/branches/sca-java-1.x/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessorTestCase.java +++ b/branches/sca-java-1.x/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessorTestCase.java @@ -19,10 +19,8 @@ package org.apache.tuscany.sca.binding.jms.impl;
-import java.io.InputStream;
import java.io.StringReader;
import java.util.Iterator;
-import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -32,7 +30,6 @@ import javax.xml.stream.XMLStreamReader; import junit.framework.TestCase;
import org.apache.tuscany.sca.assembly.Composite;
-import org.apache.tuscany.sca.assembly.ConfiguredOperation;
import org.apache.tuscany.sca.assembly.OperationsConfigurator;
import org.apache.tuscany.sca.assembly.WireFormat;
import org.apache.tuscany.sca.binding.jms.wireformat.jmsbytes.WireFormatJMSBytes;
@@ -386,6 +383,17 @@ public class JMSBindingProcessorTestCase extends TestCase { + " </component>"
+ "</composite>";
+ public static final String OP_PROP_NAME =
+ "<?xml version=\"1.0\" encoding=\"ASCII\"?>"
+ + "<composite xmlns=\"http://www.osoa.org/xmlns/sca/1.0\" targetNamespace=\"http://binding-jms\" name=\"binding-jms\">"
+ + " <component name=\"HelloWorldComponent\">"
+ + " <implementation.java class=\"services.HelloWorld\"/>"
+ + " <service name=\"HelloWorldService\">"
+ + " <binding.jms operationProperties=\"foo\"/>"
+ + " </service>"
+ + " </component>"
+ + "</composite>";
+
private XMLInputFactory inputFactory;
private StAXArtifactProcessor<Object> staxProcessor;
private Monitor monitor;
@@ -762,4 +770,14 @@ public class JMSBindingProcessorTestCase extends TestCase { WireFormat responseWireFormat = binding.getResponseWireFormat();
assertEquals(WireFormatJMSBytes.class, responseWireFormat.getClass());
}
+
+ public void testOpPropertiesName() throws Exception {
+ XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(OP_PROP_NAME));
+
+ Composite composite = (Composite)staxProcessor.read(reader);
+ JMSBinding binding = (JMSBinding) composite.getComponents().get(0).getServices().get(0).getBindings().get(0);
+
+ assertNotNull(binding);
+ assertEquals( "foo", binding.getOperationPropertiesName().getLocalPart() );
+ }
}
diff --git a/branches/sca-java-1.x/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessorWriteTestCase.java b/branches/sca-java-1.x/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessorWriteTestCase.java index 5b18f30cbc..d3efdfb606 100644 --- a/branches/sca-java-1.x/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessorWriteTestCase.java +++ b/branches/sca-java-1.x/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessorWriteTestCase.java @@ -432,4 +432,25 @@ public class JMSBindingProcessorWriteTestCase extends TestCase { "</component>" + "</composite>"); } + + public void testOperationPropertiesName() throws Exception { + XMLStreamReader reader = + inputFactory.createXMLStreamReader(new StringReader(JMSBindingProcessorTestCase.OP_PROP_NAME)); + Composite composite = (Composite)staxProcessor.read(reader); + JMSBinding binding = (JMSBinding)composite.getComponents().get(0).getServices().get(0).getBindings().get(0); + assertNotNull(binding); + + // Write out JMSBinding model to stream. + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + staxProcessor.write(composite, outputFactory.createXMLStreamWriter(bos)); + + // Read written JMSBinding to a different JMSBinding model. + XMLStreamReader reader2 = inputFactory.createXMLStreamReader(new StringReader(bos.toString())); + Composite composite2 = (Composite)staxProcessor.read(reader2); + JMSBinding binding2 = (JMSBinding)composite2.getComponents().get(0).getServices().get(0).getBindings().get(0); + assertNotNull(binding2); + + // Compare initial binding to written binding. + assertEquals("foo", binding2.getOperationPropertiesName().getLocalPart()); + } } |