From bd73f180b9e90af262061cf2f329a6d8612d9c53 Mon Sep 17 00:00:00 2001 From: antelder Date: Fri, 6 Feb 2009 14:38:46 +0000 Subject: Add support for operation property properties to binding.jms git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@741575 13f79535-47bb-0310-9956-ffa450edef68 --- .../tuscany/sca/binding/jms/impl/JMSBinding.java | 9 +++++ .../sca/binding/jms/impl/JMSBindingProcessor.java | 46 +++++++++++++++------- .../jms/impl/JMSBindingProcessorTestCase.java | 38 ++++++++++++++++++ 3 files changed, 78 insertions(+), 15 deletions(-) (limited to 'branches') 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 fcb640398d..e804d5058c 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 @@ -119,6 +119,8 @@ public class JMSBinding implements BindingRRB, PolicySetAttachPoint { private Map operationJMSDeliveryModes = new HashMap(); private Map operationJMSTimeToLives = new HashMap(); private Map operationJMSPriorities = new HashMap(); + private Map> operationPropertiesProperties = new HashMap>(); + private String jmsSelector; private String requestConnectionName; private String responseConnectionName; @@ -645,4 +647,11 @@ public class JMSBinding implements BindingRRB, PolicySetAttachPoint { return responseConnectionFactoryProperties; } + public Map getOperationPropertiesProperties(String opName) { + if (operationPropertiesProperties.get(opName)==null) { + operationPropertiesProperties.put(opName, new HashMap()); + } + return operationPropertiesProperties.get(opName); + } + } 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 eb50c11843..b7540e804d 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 @@ -620,14 +620,24 @@ public class JMSBindingProcessor implements StAXArtifactProcessor { case START_ELEMENT: if (reader.getName().getLocalPart().equals("headers")) { parseOperationHeaders(reader, jmsBinding, opName); + } else if (reader.getName().getLocalPart().equals("property")) { + jmsBinding.getOperationPropertiesProperties(opName).putAll(parseBindingProperties(reader)); } - break; +// break; case END_ELEMENT: - QName x = reader.getName(); - if (x.getLocalPart().equals("operationProperties")) { - return; - } else { - error("UnexpectedResponseElement", reader, x.toString()); + if (reader.isEndElement()) { + QName x = reader.getName(); + if (x.getLocalPart().equals("headers")) { + break; + } + if (x.getLocalPart().equals("property")) { + break; + } + if (x.getLocalPart().equals("operationProperties")) { + return; + } else { + error("UnexpectedResponseElement", reader, x.toString()); + } } } } @@ -723,18 +733,14 @@ public class JMSBindingProcessor implements StAXArtifactProcessor { private Map parseBindingProperties(XMLStreamReader reader) throws XMLStreamException { Map props = new HashMap(); + if ("property".equals(reader.getName().getLocalPart())) { + processProperty(reader, props); + } while (true) { switch (reader.next()) { case START_ELEMENT: - String elementName = reader.getName().getLocalPart(); - if ("property".equals(elementName)) { - String name = reader.getAttributeValue(null, "name"); - if (name == null || name.length() < 1) { - error("InvalidPropertyElement", reader, elementName); - } - String type = reader.getAttributeValue(null, "type"); - String value = reader.getElementText(); - props.put(name, new BindingProperty(name, type, value)); + if ("property".equals(reader.getName().getLocalPart())) { + processProperty(reader, props); } break; case END_ELEMENT: @@ -743,6 +749,16 @@ public class JMSBindingProcessor implements StAXArtifactProcessor { } } + private void processProperty(XMLStreamReader reader, Map props) throws XMLStreamException { + String name = reader.getAttributeValue(null, "name"); + if (name == null || name.length() < 1) { + error("InvalidPropertyElement", reader); + } + String type = reader.getAttributeValue(null, "type"); + String value = reader.getElementText(); + props.put(name, new BindingProperty(name, type, value)); + } + /** * Preserve an existing public method. The method validate() is a legacy method * that was called from reading am XML stream via the read(XMLStreamReader) method above. 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 b715d4997c..202666278f 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 @@ -274,6 +274,26 @@ public class JMSBindingProcessorTestCase extends TestCase { + " " + ""; + private static final String OP_PROPS_PROPS = + "" + + "" + + " " + + " " + + " " + + " " + + " " + + " " + + " some value text" + + " " + + " " + + " bla" + + " " + + " " + + " " + + " " + + " " + + ""; + private XMLInputFactory inputFactory; private StAXArtifactProcessor staxProcessor; private Monitor monitor; @@ -502,4 +522,22 @@ public class JMSBindingProcessorTestCase extends TestCase { assertEquals(null, bp2.getType()); assertEquals("bla", bp2.getValue().toString().trim()); } + public void testOperationPropertiesProperties() throws Exception { + XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(OP_PROPS_PROPS)); + + Composite composite = (Composite)staxProcessor.read(reader); + JMSBinding binding = (JMSBinding) composite.getComponents().get(0).getServices().get(0).getBindings().get(0); + + assertNotNull(binding); + assertNotNull(binding.getOperationPropertiesProperties("op1")); + assertEquals(2, binding.getOperationPropertiesProperties("op1").size()); + BindingProperty bp = binding.getOperationPropertiesProperties("op1").get("xxx"); + assertEquals("xxx", bp.getName()); + assertEquals("yyy", bp.getType()); + assertEquals("some value text", bp.getValue().toString().trim()); + BindingProperty bp2 = binding.getOperationPropertiesProperties("op1").get("two"); + assertEquals("two", bp2.getName()); + assertEquals(null, bp2.getType()); + assertEquals("bla", bp2.getValue().toString().trim()); + } } -- cgit v1.2.3