Author: peterreilly
Date: Sun Sep 24 07:14:08 2006
New Revision: 449407

URL: http://svn.apache.org/viewvc?view=rev&rev=449407
Log:
refine empty node handling

Modified:
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/XmlProperty.java

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/XmlProperty.java
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/XmlProperty.java?view=diff&rev=449407&r1=449406&r2=449407
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/XmlProperty.java 
(original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/XmlProperty.java Sun 
Sep 24 07:14:08 2006
@@ -422,6 +422,18 @@
         }
 
         String nodeText = null;
+        boolean emptyNode = false;
+        boolean semanticEmptyOverride = false;
+        if (node.getNodeType() == Node.ELEMENT_NODE
+            && semanticAttributes
+            && node.hasAttributes()
+            && (node.getAttributes().getNamedItem(VALUE) != null
+                || node.getAttributes().getNamedItem(LOCATION) != null
+                || node.getAttributes().getNamedItem(REF_ID) != null
+                || node.getAttributes().getNamedItem(PATH) != null
+                || node.getAttributes().getNamedItem(PATHID) != null)) {
+            semanticEmptyOverride = true;
+        }
         if (node.getNodeType() == Node.TEXT_NODE) {
             // For the text node, add a property.
             nodeText = getAttributeValue(node);
@@ -430,9 +442,21 @@
             && (node.getFirstChild().getNodeType() == 
Node.CDATA_SECTION_NODE)) {
 
             nodeText = node.getFirstChild().getNodeValue();
+            if ("".equals(nodeText) && !semanticEmptyOverride) {
+                emptyNode = true;
+            }
+        } else if ((node.getNodeType() == Node.ELEMENT_NODE)
+                   && (node.getChildNodes().getLength() == 0)
+                   && !semanticEmptyOverride) {
+            nodeText = "";
+            emptyNode = true;
         } else if ((node.getNodeType() == Node.ELEMENT_NODE)
-                   && (node.getChildNodes().getLength() == 0)) {
+                   && (node.getChildNodes().getLength() == 1)
+                   && (node.getFirstChild().getNodeType() == Node.TEXT_NODE)
+                   && ("".equals(node.getFirstChild().getNodeValue()))
+                   && !semanticEmptyOverride) {
             nodeText = "";
+            emptyNode = true;
         }
 
         if (nodeText != null) {
@@ -441,8 +465,9 @@
                 && container instanceof String) {
                 id = (String) container;
             }
-
-            addProperty(prefix, nodeText, id);
+            if (nodeText.trim().length() != 0 || emptyNode) {
+                addProperty(prefix, nodeText, id);
+            }
         }
 
         // Return the Path we added or the ID of this node for



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to