Author: beckerdo
Date: Tue Feb 10 20:36:13 2009
New Revision: 743094

URL: http://svn.apache.org/viewvc?rev=743094&view=rev
Log:
TUSCANY-2835 JMS Binding does not save operation names unless there are 
properties.

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=743094&r1=743093&r2=743094&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
 Tue Feb 10 20:36:13 2009
@@ -494,7 +494,19 @@
     }
 
     /**
-     * Provides key set of operation names in this binding.
+     * Adds an operationName to this binding.
+     * @param opName
+     */
+    public void addOperationName(String opName) {
+        Map<String, Object> props = operationProperties.get(opName);
+        if (props == null) {
+            props = new HashMap<String, Object>();
+            operationProperties.put(opName, props);
+        }
+    }
+    
+    /**
+     * Provides set of operation names in this binding.
      * @return a Set<String> of operation names
      */
     public Set<String> getOperationNames() {

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=743094&r1=743093&r2=743094&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
 Tue Feb 10 20:36:13 2009
@@ -616,7 +616,9 @@
             warning("MissingJMSOperationPropertyName", jmsBinding);
             return;
         }
-        String nativeOpName = reader.getAttributeValue(null, 
"nativeOperation");
+        // Since nativeOpName, headers, and property elements are optional, 
must add opName.
+        jmsBinding.addOperationName(opName);
+        String nativeOpName = reader.getAttributeValue(null, 
"nativeOperation"); // optional
         if (nativeOpName != null && nativeOpName.length() > 0) {
             jmsBinding.setNativeOperationName(opName, nativeOpName);
         }
@@ -624,9 +626,9 @@
         while (true) {
             switch (reader.next()) {
                 case START_ELEMENT:
-                    if (reader.getName().getLocalPart().equals("headers")) {
+                    if (reader.getName().getLocalPart().equals("headers")) { 
// optional
                         parseOperationHeaders(reader, jmsBinding, opName);
-                    } else if 
(reader.getName().getLocalPart().equals("property")) {
+                    } else if 
(reader.getName().getLocalPart().equals("property")) { // optional
                         
jmsBinding.getOperationPropertiesProperties(opName).putAll(parseBindingProperties(reader));
                     }
 //                    break;

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=743094&r1=743093&r2=743094&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
 Tue Feb 10 20:36:13 2009
@@ -110,6 +110,22 @@
             + " </component>"
             + "</composite>";
 
+    private static final String OP_NAMES_NO_PROPERTIES1 =
+        "<?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 uri=\"jms:testQueue\" >"
+            + "             <operationProperties name=\"op1\">"
+            + "             </operationProperties >" 
+            + "             <operationProperties name=\"op2\" 
nativeOperation=\"nativeOp2\" >"
+            + "             </operationProperties >" 
+            + "          </binding.jms>"
+            + "      </service>"
+            + " </component>"
+            + "</composite>";
+
     private static final String SELECTOR =
         "<?xml version=\"1.0\" encoding=\"ASCII\"?>" 
         + "<composite xmlns=\"http://www.osoa.org/xmlns/sca/1.0\"; 
targetNamespace=\"http://binding-jms\"; name=\"binding-jms\">"
@@ -615,5 +631,28 @@
         assertEquals(77, ((Integer)value).intValue());
     }
 
+    /**
+     * Tests the APIs:
+     *     public Set<String> getOperationNames();
+     * Provides no optional properties or sub elements
+     * @throws Exception
+     */
+    public void testOpProperties3() throws Exception {
+        XMLStreamReader reader = inputFactory.createXMLStreamReader(new 
StringReader(OP_NAMES_NO_PROPERTIES1));
+        
+        Composite composite = (Composite)staxProcessor.read(reader);
+        JMSBinding binding = (JMSBinding)   
composite.getComponents().get(0).getServices().get(0).getBindings().get(0);
+        
+        assertNotNull(binding);
+
+        Set<String> opNames = binding.getOperationNames();
+        assertEquals( 2, opNames.size() );
+        // Recall that order is not guaranteed iterating over a set.
+        for (Iterator<String> it=opNames.iterator(); it.hasNext(); ) {
+            String opName = it.next();
+            assertTrue( opName.equals( "op1") || opName.equals( "op2"));
+        }
+    }
+
 
 }


Reply via email to