You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by sl...@apache.org on 2009/08/17 17:04:35 UTC

svn commit: r805004 - in /tuscany/java/sca/modules: assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseBuilderImpl.java

Author: slaws
Date: Mon Aug 17 15:04:35 2009
New Revision: 805004

URL: http://svn.apache.org/viewvc?rev=805004&view=rev
Log:
Be more precise when testing whether a property has had a value set and update the property reading code so that empty text values are not generated as a matter of course. 

Modified:
    tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java
    tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseBuilderImpl.java

Modified: tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java?rev=805004&r1=805003&r2=805004&view=diff
==============================================================================
--- tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java (original)
+++ tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java Mon Aug 17 15:04:35 2009
@@ -602,11 +602,14 @@
                 case END_ELEMENT:
                     name = reader.getName();
                     if (PROPERTY_QNAME.equals(name)) {
+                        
                         if (root.getChildNodes().getLength() == 0) {
-                            // Add the text as an <value>
-                            Element valueElement = document.createElementNS(SCA11_NS, VALUE);
-                            root.appendChild(valueElement);
-                            valueElement.setTextContent(text.toString());
+                            // Add an text as an <value>
+                            if (isTextForProperty){
+                                Element valueElement = document.createElementNS(SCA11_NS, VALUE);
+                                root.appendChild(valueElement);
+                                valueElement.setTextContent(text.toString());
+                            }
                         }
                         return document;
                     }

Modified: tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseBuilderImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseBuilderImpl.java?rev=805004&r1=805003&r2=805004&view=diff
==============================================================================
--- tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseBuilderImpl.java (original)
+++ tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseBuilderImpl.java Mon Aug 17 15:04:35 2009
@@ -50,6 +50,7 @@
 import org.apache.tuscany.sca.monitor.Problem.Severity;
 import org.apache.tuscany.sca.policy.ExtensionType;
 import org.apache.tuscany.sca.policy.PolicySubject;
+import org.w3c.dom.Document;
 
 /**
  * Base class for Builder implementations
@@ -409,8 +410,8 @@
                 if (!componentProperty.isMustSupply())
                     componentProperty.setMustSupply(property.isMustSupply());
 
-                // Default to the value specified on the property
-                if (componentProperty.getValue() == null) {
+                // Default to the value specified on the component type property
+                if (!isPropertyValueSet(componentProperty)) {
                     componentProperty.setValue(property.getValue());
                 }
 
@@ -420,12 +421,12 @@
                 }
 
                 // Check that a value is supplied
-                if (componentProperty.getValue() == null && property.isMustSupply()) {
+                if (!isPropertyValueSet(componentProperty) && property.isMustSupply()) {
                     error(monitor, "PropertyMustSupplyNull", component, component.getName(), componentProperty
                         .getName());
                 }
 
-                // Check that a a component property does not override the
+                // Check that a component property does not override the
                 // many attribute
                 if (!property.isMany() && componentProperty.isMany()) {
 
@@ -452,6 +453,31 @@
             }
         }
     }
+    
+    /**
+     * Look to see if any value elements have been set into the property
+     * A bit involved as the value is stored as a DOM Document
+     * 
+     * @param property the property to be tested
+     * @return true is values are present
+     */
+    private boolean isPropertyValueSet(Property property){
+        Document value = (Document)property.getValue();
+        
+        if (value == null){
+            return false;
+        }
+        
+        if (value.getFirstChild() == null){
+            return false;
+        }
+        
+        if (value.getFirstChild().getChildNodes().getLength() == 0){
+            return false;
+        }
+        
+        return true;
+    }
 
     /**
      * Reconcile component references with the references defined on the