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/07/03 13:47:43 UTC

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

Author: antelder
Date: Fri Jul  3 11:47:42 2009
New Revision: 790871

URL: http://svn.apache.org/viewvc?rev=790871&view=rev
Log:
TUSCANY-3116: add runtime support for using the operationProperties attribute on a JMS binding

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/main/resources/binding-jms-validation-messages.properties

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=790871&r1=790870&r2=790871&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 Jul  3 11:47:42 2009
@@ -542,14 +542,22 @@
      * @return a Set<String> of operation names
      */
     public Set<String> getOperationNames() {
-        // Make a defensive copy since key changes affect map, map changes affect keys.
-        Set<String> opNames = operationProperties.keySet();
-        Set<String> opNamesCopy = new TreeSet<String>( opNames );
-        return opNamesCopy;
+        if (operationPropertiesBinding != null) {
+            return operationPropertiesBinding.getOperationNames();
+        } else {
+            // Make a defensive copy since key changes affect map, map changes affect keys.
+            Set<String> opNames = operationProperties.keySet();
+            Set<String> opNamesCopy = new TreeSet<String>( opNames );
+            return opNamesCopy;
+        }
     }
     
     public Map<String, Object> getOperationProperties(String opName) {
-        return operationProperties.get(opName);
+        if (operationPropertiesBinding != null) {
+            return operationPropertiesBinding.getOperationProperties(opName);
+        } else {
+            return operationProperties.get(opName);
+        }
     }
 
     public void setOperationProperty(String opName, String propName, Object value) {
@@ -569,22 +577,34 @@
      * null for non existant operation name or property name.
      */
     public Object getOperationProperty(String opName, String propName ) {
-        Map<String, Object> props = operationProperties.get(opName);
-        if (props == null) { 
-            return null;
+        if (operationPropertiesBinding != null) {
+            return operationPropertiesBinding.getOperationProperty(opName, propName);
+        } else {
+            Map<String, Object> props = operationProperties.get(opName);
+            if (props == null) { 
+                return null;
+            }
+            return props.get(propName);
         }
-        return props.get(propName);
     }
 
     public boolean hasNativeOperationName(String opName) {
-        return nativeOperationNames.containsKey(opName);
+        if (operationPropertiesBinding != null) {
+            return operationPropertiesBinding.hasNativeOperationName(opName);
+        } else {
+            return nativeOperationNames.containsKey(opName);
+        }
     }
 
     public String getNativeOperationName(String opName) {
-        if (nativeOperationNames.containsKey(opName)) {
-            return nativeOperationNames.get(opName);
+        if (operationPropertiesBinding != null && operationPropertiesBinding.getNativeOperationName(opName) != null) {
+            return operationPropertiesBinding.getNativeOperationName(opName);
         } else {
-            return opName;
+            if (nativeOperationNames.containsKey(opName)) {
+                return nativeOperationNames.get(opName);
+            } else {
+                return opName;
+            }
         }
     }
 
@@ -593,10 +613,14 @@
     }
 
     public String getOperationJMSType(String opName) {
-        if (operationJMSTypes.containsKey(opName)) {
-            return operationJMSTypes.get(opName);
+        if (operationPropertiesBinding != null && operationPropertiesBinding.getOperationJMSType(opName) != null) {
+            return operationPropertiesBinding.getOperationJMSType(opName);
         } else {
-            return jmsType;
+            if (operationJMSTypes.containsKey(opName)) {
+                return operationJMSTypes.get(opName);
+            } else {
+                return jmsType;
+            }
         }
     }
     public void setOperationJMSType(String opName, String jmsType) {
@@ -604,10 +628,18 @@
     }
 
     public String getOperationJMSCorrelationId(String opName) {
-        if (operationJMSCorrelationIds.containsKey(opName)) {
-            return operationJMSCorrelationIds.get(opName);
+        if (operationPropertiesBinding != null) {
+            if (operationPropertiesBinding.getOperationJMSCorrelationId(opName) != null) {
+                return operationPropertiesBinding.getOperationJMSCorrelationId(opName);
+            } else {
+                return jmsCorrelationId;
+            }
         } else {
-            return jmsCorrelationId;
+            if (operationJMSCorrelationIds.containsKey(opName)) {
+                return operationJMSCorrelationIds.get(opName);
+            } else {
+                return jmsCorrelationId;
+            }
         }
     }
     public void setOperationJMSCorrelationId(String opName, String jmsCorrelationId) {
@@ -615,10 +647,18 @@
     }
 
     public Boolean getOperationJMSDeliveryMode(String opName) {
-        if (operationJMSDeliveryModes.containsKey(opName)) {
-            return operationJMSDeliveryModes.get(opName);
+        if (operationPropertiesBinding != null) {
+            if (operationPropertiesBinding.getOperationJMSDeliveryMode(opName) != null) {
+                return operationPropertiesBinding.getOperationJMSDeliveryMode(opName);
+            } else {
+                return deliveryModePersistent;
+            }
         } else {
-            return deliveryModePersistent;
+            if (operationJMSDeliveryModes.containsKey(opName)) {
+                return operationJMSDeliveryModes.get(opName);
+            } else {
+                return deliveryModePersistent;
+            }
         }
     }
     public void setOperationJMSDeliveryMode(String opName, boolean b) {
@@ -626,10 +666,18 @@
     }
 
     public Long getOperationJMSTimeToLive(String opName) {
-        if (operationJMSTimeToLives.containsKey(opName)) {
-            return operationJMSTimeToLives.get(opName);
+        if (operationPropertiesBinding != null) {
+            if (operationPropertiesBinding.getOperationJMSTimeToLive(opName) != null) {
+                return operationPropertiesBinding.getOperationJMSTimeToLive(opName);
+            } else {
+                return timeToLive;
+            }
         } else {
-            return timeToLive;
+            if (operationJMSTimeToLives.containsKey(opName)) {
+                return operationJMSTimeToLives.get(opName);
+            } else {
+                return timeToLive;
+            }
         }
     }
     public void setOperationJMSTimeToLive(String opName, Long ttl) {
@@ -637,10 +685,18 @@
     }
 
     public Integer getOperationJMSPriority(String opName) {
-        if (operationJMSPriorities.containsKey(opName)) {
-            return operationJMSPriorities.get(opName);
+        if (operationPropertiesBinding != null) {
+            if (operationPropertiesBinding.getOperationJMSPriority(opName) != null) {
+                return operationPropertiesBinding.getOperationJMSPriority(opName);
+            } else {
+                return jmsPriority;
+            }
         } else {
-            return jmsPriority;
+            if (operationJMSPriorities.containsKey(opName)) {
+                return operationJMSPriorities.get(opName);
+            } else {
+                return jmsPriority;
+            }
         }
     }
     public void setOperationJMSPriority(String opName, int p) {

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=790871&r1=790870&r2=790871&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 Jul  3 11:47:42 2009
@@ -656,6 +656,11 @@
      * </operationProperties>*
      */
     private void parseOperationProperties(XMLStreamReader reader, JMSBinding jmsBinding) throws XMLStreamException {
+        
+        if (jmsBinding.getOperationPropertiesName() != null) {
+            error("DuplicateOperationProperties", jmsBinding);
+        }
+        
         String opName = reader.getAttributeValue(null, "name");
         if (opName == null || opName.length() < 1) {
             warning("MissingJMSOperationPropertyName", jmsBinding);
@@ -1132,6 +1137,9 @@
      * </binding.jms>
      */
     private void writeOperationProperties( JMSBinding jmsBinding, XMLStreamWriter writer) throws XMLStreamException {
+        if (jmsBinding.getOperationPropertiesBinding() != null) {
+            return;   
+        }
         Set<String> operationNames = jmsBinding.getOperationNames();
         if (operationNames == null || (operationNames.size() < 1)) {
             return;

Modified: tuscany/branches/sca-java-1.x/modules/binding-jms/src/main/resources/binding-jms-validation-messages.properties
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-jms/src/main/resources/binding-jms-validation-messages.properties?rev=790871&r1=790870&r2=790871&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/binding-jms/src/main/resources/binding-jms-validation-messages.properties (original)
+++ tuscany/branches/sca-java-1.x/modules/binding-jms/src/main/resources/binding-jms-validation-messages.properties Fri Jul  3 11:47:42 2009
@@ -47,3 +47,4 @@
 ConnectionFactoryActivationSpecContradiction = Connection factory \"{0}\" and activation specification \"{0}\" are mutually exclusive                
 ResponseAttrElement = Response connection \"{0}\" and response element \"{1}\" are mutually exclusive                               
 BindingNotFound = {0} refers to a binding definition {1} which is not found
+DuplicateOperationProperties = Must not use both operationProperties attribute and operationProperties element