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