You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by mb...@apache.org on 2005/05/24 19:54:47 UTC

cvs commit: ant/src/main/org/apache/tools/ant/util DOMElementWriter.java

mbenson     2005/05/24 10:54:47

  Modified:    src/testcases/org/apache/tools/ant/taskdefs/optional
                        EchoPropertiesTest.java
               src/main/org/apache/tools/ant/util DOMElementWriter.java
  Log:
  go ahead and close elements with no children
  
  Revision  Changes    Path
  1.12      +1 -1      ant/src/testcases/org/apache/tools/ant/taskdefs/optional/EchoPropertiesTest.java
  
  Index: EchoPropertiesTest.java
  ===================================================================
  RCS file: /home/cvs/ant/src/testcases/org/apache/tools/ant/taskdefs/optional/EchoPropertiesTest.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- EchoPropertiesTest.java	11 Mar 2004 23:40:59 -0000	1.11
  +++ EchoPropertiesTest.java	24 May 2005 17:54:47 -0000	1.12
  @@ -114,7 +114,7 @@
               BufferedReader br = new BufferedReader( fr );
               String read = null;
               while ( (read = br.readLine()) != null) {
  -                if (read.indexOf("<property name=\"test.property\" value=\""+TEST_VALUE+"\"></property>") >= 0) {
  +                if (read.indexOf("<property name=\"test.property\" value=\""+TEST_VALUE+"\" />") >= 0) {
                       // found the property we set - it's good.
                       return;
                   }
  
  
  
  1.28      +77 -52    ant/src/main/org/apache/tools/ant/util/DOMElementWriter.java
  
  Index: DOMElementWriter.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/util/DOMElementWriter.java,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- DOMElementWriter.java	14 Mar 2005 20:08:32 -0000	1.27
  +++ DOMElementWriter.java	24 May 2005 17:54:47 -0000	1.28
  @@ -77,67 +77,67 @@
                         String indentWith)
           throws IOException {
   
  -        openElement(element, out, indent, indentWith);
  -
           // Write child elements and text
  -        boolean hasChildren = false;
           NodeList children = element.getChildNodes();
  -        for (int i = 0; i < children.getLength(); i++) {
  -            Node child = children.item(i);
  -
  -            switch (child.getNodeType()) {
  -
  -            case Node.ELEMENT_NODE:
  -                if (!hasChildren) {
  -                    out.write(lSep);
  -                    hasChildren = true;
  -                }
  -                write((Element) child, out, indent + 1, indentWith);
  -                break;
  -
  -            case Node.TEXT_NODE:
  -                out.write(encode(child.getNodeValue()));
  -                break;
  -
  -            case Node.COMMENT_NODE:
  -                out.write("<!--");
  -                out.write(encode(child.getNodeValue()));
  -                out.write("-->");
  -                break;
  +        boolean hasChildren = (children.getLength() > 0);
  +        openElement(element, out, indent, indentWith, hasChildren);
   
  -            case Node.CDATA_SECTION_NODE:
  -                out.write("<![CDATA[");
  -                out.write(encodedata(((Text) child).getData()));
  -                out.write("]]>");
  -                break;
  -
  -            case Node.ENTITY_REFERENCE_NODE:
  -                out.write('&');
  -                out.write(child.getNodeName());
  -                out.write(';');
  -                break;
  -
  -            case Node.PROCESSING_INSTRUCTION_NODE:
  -                out.write("<?");
  -                out.write(child.getNodeName());
  -                String data = child.getNodeValue();
  -                if (data != null && data.length() > 0) {
  -                    out.write(' ');
  -                    out.write(data);
  +        if (hasChildren) {
  +            for (int i = 0; i < children.getLength(); i++) {
  +                Node child = children.item(i);
  +    
  +                switch (child.getNodeType()) {
  +    
  +                case Node.ELEMENT_NODE:
  +                    if (i == 0) {
  +                        out.write(lSep);
  +                    }
  +                    write((Element) child, out, indent + 1, indentWith);
  +                    break;
  +    
  +                case Node.TEXT_NODE:
  +                    out.write(encode(child.getNodeValue()));
  +                    break;
  +    
  +                case Node.COMMENT_NODE:
  +                    out.write("<!--");
  +                    out.write(encode(child.getNodeValue()));
  +                    out.write("-->");
  +                    break;
  +    
  +                case Node.CDATA_SECTION_NODE:
  +                    out.write("<![CDATA[");
  +                    out.write(encodedata(((Text) child).getData()));
  +                    out.write("]]>");
  +                    break;
  +    
  +                case Node.ENTITY_REFERENCE_NODE:
  +                    out.write('&');
  +                    out.write(child.getNodeName());
  +                    out.write(';');
  +                    break;
  +    
  +                case Node.PROCESSING_INSTRUCTION_NODE:
  +                    out.write("<?");
  +                    out.write(child.getNodeName());
  +                    String data = child.getNodeValue();
  +                    if (data != null && data.length() > 0) {
  +                        out.write(' ');
  +                        out.write(data);
  +                    }
  +                    out.write("?>");
  +                    break;
  +                default:
  +                    // Do nothing
                   }
  -                out.write("?>");
  -                break;
  -            default:
  -                // Do nothing
               }
  +            closeElement(element, out, indent, indentWith, true);
           }
  -
  -        closeElement(element, out, indent, indentWith, hasChildren);
       }
   
       /**
        * Writes the opening tag - including all attributes -
  -     * correspondong to a DOM element.
  +     * corresponding to a DOM element.
        *
        * @param element the DOM element to write
        * @param out where to send the output
  @@ -149,6 +149,25 @@
       public void openElement(Element element, Writer out, int indent,
                               String indentWith)
           throws IOException {
  +        openElement(element, out, indent, indentWith, true);
  +    }
  +
  +    /**
  +     * Writes the opening tag - including all attributes -
  +     * corresponding to a DOM element.
  +     *
  +     * @param element the DOM element to write
  +     * @param out where to send the output
  +     * @param indent number of
  +     * @param indentWith string that should be used to indent the
  +     * corresponding tag.
  +     * @param hasChildren whether this element has children.
  +     * @throws IOException if an error happens while writing to the stream.
  +     * @since Ant 1.7
  +     */
  +    public void openElement(Element element, Writer out, int indent,
  +                            String indentWith, boolean hasChildren)
  +        throws IOException {
           // Write indent characters
           for (int i = 0; i < indent; i++) {
               out.write(indentWith);
  @@ -168,7 +187,13 @@
               out.write(encode(attr.getValue()));
               out.write("\"");
           }
  -        out.write(">");
  +        if (hasChildren) {
  +            out.write(">");
  +        } else {
  +            out.write(" />");
  +            out.write(lSep);
  +            out.flush();
  +        }
       }
   
       /**
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org