You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2009/02/06 15:38:47 UTC

svn commit: r741575 - in /tuscany/branches/sca-java-1.x/modules/binding-jms/src: main/java/org/apache/tuscany/sca/binding/jms/impl/ test/java/org/apache/tuscany/sca/binding/jms/impl/

Author: antelder
Date: Fri Feb  6 14:38:46 2009
New Revision: 741575

URL: http://svn.apache.org/viewvc?rev=741575&view=rev
Log:
Add support for operation property properties to binding.jms

Modified:
    tuscany/branches/sca-java-1.x/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBinding.java
    tuscany/branches/sca-java-1.x/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessor.java
    tuscany/branches/sca-java-1.x/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessorTestCase.java

Modified: tuscany/branches/sca-java-1.x/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBinding.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBinding.java?rev=741575&r1=741574&r2=741575&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBinding.java (original)
+++ tuscany/branches/sca-java-1.x/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBinding.java Fri Feb  6 14:38:46 2009
@@ -119,6 +119,8 @@
     private Map<String, Boolean> operationJMSDeliveryModes = new HashMap<String, Boolean>();
     private Map<String, Long> operationJMSTimeToLives = new HashMap<String, Long>();
     private Map<String, Integer> operationJMSPriorities = new HashMap<String, Integer>();
+    private Map<String, Map<String, BindingProperty>> operationPropertiesProperties = new HashMap<String, Map<String,BindingProperty>>();
+
     private String jmsSelector;
     private String requestConnectionName;
     private String responseConnectionName;
@@ -645,4 +647,11 @@
         return responseConnectionFactoryProperties;
     }
 
+    public Map<String, BindingProperty> getOperationPropertiesProperties(String opName) {
+        if (operationPropertiesProperties.get(opName)==null) {
+            operationPropertiesProperties.put(opName, new HashMap<String, BindingProperty>());
+        }
+        return operationPropertiesProperties.get(opName);
+    }
+
 }

Modified: tuscany/branches/sca-java-1.x/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessor.java?rev=741575&r1=741574&r2=741575&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessor.java (original)
+++ tuscany/branches/sca-java-1.x/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessor.java Fri Feb  6 14:38:46 2009
@@ -620,14 +620,24 @@
                 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 @@
 
     private Map<String, BindingProperty> parseBindingProperties(XMLStreamReader reader) throws XMLStreamException {
         Map<String, BindingProperty> props = new HashMap<String, BindingProperty>();
+        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 @@
         }
     }
 
+    private void processProperty(XMLStreamReader reader, Map<String, BindingProperty> 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.

Modified: tuscany/branches/sca-java-1.x/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessorTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessorTestCase.java?rev=741575&r1=741574&r2=741575&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessorTestCase.java (original)
+++ tuscany/branches/sca-java-1.x/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessorTestCase.java Fri Feb  6 14:38:46 2009
@@ -274,6 +274,26 @@
             + " </component>"
             + "</composite>";
 
+    private static final String OP_PROPS_PROPS =
+        "<?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 name=\"op1\">"
+            + "                   <property name=\"xxx\" type=\"yyy\">"
+            + "                      some value text"
+            + "                   </property>"
+            + "                   <property name=\"two\">"
+            + "                      bla"
+            + "                   </property>"
+            + "             </operationProperties >" 
+            + "          </binding.jms>"
+            + "      </service>"
+            + " </component>"
+            + "</composite>";
+
     private XMLInputFactory inputFactory;
     private StAXArtifactProcessor<Object> staxProcessor;
     private Monitor monitor;
@@ -502,4 +522,22 @@
         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());
+    }
 }