DO NOT REPLY [Bug 25564] - CVS tagdiff does not escape XML characters

2003-12-21 Thread bugzilla
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=25564

CVS tagdiff does not escape XML characters

[EMAIL PROTECTED] changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||DUPLICATE



--- Additional Comments From [EMAIL PROTECTED]  2003-12-21 17:39 ---


*** This bug has been marked as a duplicate of 24281 ***

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



RE: Bug 25564 - CVS tagdiff does not escape XML characters

2003-12-19 Thread Dominique Devienne
Actually, that's a good point. The tags are on different lines, not a single
line, so maybe that's what they consider indented!?!?

Given the fact that the processor cannot know whitespace is not significant,
maybe it's even a better behavior. It's OK to 'indent'
that way for XML to be consumed by an XSL stylesheet for example,
but for generating XML to be potentially read by humans, the lack
of real indenting (nested tag offset from parent tag) is problematic.

Maybe the real answer is to adapt Ant's DOMElementWriter code to
allow outputting directly (instead of requiring a DOM tree), and
leverage the logic there to escape invalid characters... --DD 

-Original Message-
From: [EMAIL PROTECTED]
To: Ant Developers List
Sent: 12/19/2003 5:35 AM
Subject: RE: Bug 25564 - CVS tagdiff does not escape XML characters

> I noticed though that with JDK 1.4.2, even when requesting indenting,
> the resulting file is not indented :-(

I have found this to be very implementation dependent, with the version
I 
used, not setting the indent put every thing on a single line. I'll have

to have a look at the xalan/xerces source code to see what is going on.

Steve

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



RE: Bug 25564 - CVS tagdiff does not escape XML characters

2003-12-19 Thread Steven . Murphy
> I noticed though that with JDK 1.4.2, even when requesting indenting,
> the resulting file is not indented :-(

I have found this to be very implementation dependent, with the version I 
used, not setting the indent put every thing on a single line. I'll have 
to have a look at the xalan/xerces source code to see what is going on.

Steve








Dominique Devienne <[EMAIL PROTECTED]>
18/12/2003 16:53
Please respond to "Ant Developers List"

 
To: Steven Murphy/DSD/LONDON/[EMAIL PROTECTED], "'Ant Developers 
List '" 
<[EMAIL PROTECTED]>
    cc: 
        Subject:    RE: Bug 25564 - CVS tagdiff does not escape XML 
characters


Thanks Steven! Interesting ;-) 

Included below is my own twist on the technique you demonstated
that allows to encapsulate the SAX/TrAX code. Clients just
implement the XmlContentProvider, probably as an anonymous inner
class at the same time as calling XmlWriter.write().

I noticed though that with JDK 1.4.2, even when requesting indenting,
the resulting file is not indented :-(

package com.lgc.buildmagic.util;

import java.io.File;
import java.io.Writer;
import java.io.OutputStream;
import java.io.IOException;

// SAX classes
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.ContentHandler;
import org.xml.sax.helpers.AttributesImpl;
import org.xml.sax.helpers.XMLFilterImpl;

// TrAX classes
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.sax.SAXSource;
import javax.xml.transform.stream.StreamResult;

public class XmlWriter {

  /** The mirror image of SAX's ContentHandler that writes to a handler. 
*/
  public interface XmlContentProvider {
void writeTo(ContentHandler to)
 throws SAXException;
  }

  /** Just a dummy impl of the content provider interface above for 
testing.
*/
  public static class MyProvider
  implements XmlContentProvider {
public void writeTo(ContentHandler to)
throws SAXException {
  final AttributesImpl attributes = new AttributesImpl();
  to.startDocument();
  to.startElement("", "history-cache", "history-cache", attributes);

   to.startElement("", "entries", "entries", attributes);
to.startElement("", "name", "name", attributes);
String name = "Javah&cache";
to.characters(name.toCharArray(), 0, name.length());
to.endElement("", "name", "name");

to.startElement("", "tag", "tag", attributes);
String tag = "text";
to.characters(tag.toCharArray(), 0, tag.length());
to.endElement("", "tag", "tag");
   to.endElement("", "entries", "entries");

  to.endElement("", "history-cache", "history-cache");
  to.endDocument();
}
  }

  public void write(File file, XmlContentProvider provider)
  throws TransformerException {
write(new StreamResult(file), provider);
  }

  public void write(OutputStream outputStream, XmlContentProvider 
provider)
  throws TransformerException {
write(new StreamResult(outputStream), provider);
  }

  public void write(Writer writer, XmlContentProvider provider)
  throws TransformerException {
write(new StreamResult(writer), provider);
  }

  /**
   * Writes SAX events sent by an XML provider using an identity 
transform.
   *
   * @param  result The stream to write the result of the identity 
transform
to.
   * @param  provider The XML content provider.
   */
  private void write(StreamResult result, final XmlContentProvider 
provider)
   throws TransformerException {
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");

XMLFilterImpl reader = new XMLFilterImpl() {
  public void parse(InputSource input)
  throws IOException,
 SAXException {
provider.writeTo(getContentHandler());
  }
};
SAXSource source = new SAXSource(reader, new InputSource());
    transformer.transform(source, result);
  }

  public static void main(String[] args)
 throws Exception {
new XmlWriter().write(new File("XmlWriter.xml"), new MyProvider());
  }

}

-Original Message-
From: [EMAIL PROTECTED]
To: Ant Developers List
Sent: 12/18/2003 7:36 AM
Subject: RE: Bug 25564 - CVS tagdiff does not escape XML characters

Hi,

I have attached 

DO NOT REPLY [Bug 25564] - CVS tagdiff does not escape XML characters

2003-12-18 Thread bugzilla
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=25564

CVS tagdiff does not escape XML characters

[EMAIL PROTECTED] changed:

   What|Removed |Added

Version|1.6Beta |1.6.0

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



RE: Bug 25564 - CVS tagdiff does not escape XML characters

2003-12-18 Thread Dominique Devienne
Thanks Steven! Interesting ;-) 

Included below is my own twist on the technique you demonstated
that allows to encapsulate the SAX/TrAX code. Clients just
implement the XmlContentProvider, probably as an anonymous inner
class at the same time as calling XmlWriter.write().

I noticed though that with JDK 1.4.2, even when requesting indenting,
the resulting file is not indented :-(

package com.lgc.buildmagic.util;

import java.io.File;
import java.io.Writer;
import java.io.OutputStream;
import java.io.IOException;

// SAX classes
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.ContentHandler;
import org.xml.sax.helpers.AttributesImpl;
import org.xml.sax.helpers.XMLFilterImpl;

// TrAX classes
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.sax.SAXSource;
import javax.xml.transform.stream.StreamResult;

public class XmlWriter {

  /** The mirror image of SAX's ContentHandler that writes to a handler. */
  public interface XmlContentProvider {
void writeTo(ContentHandler to)
 throws SAXException;
  }

  /** Just a dummy impl of the content provider interface above for testing.
*/
  public static class MyProvider
  implements XmlContentProvider {
public void writeTo(ContentHandler to)
throws SAXException {
  final AttributesImpl attributes = new AttributesImpl();
  to.startDocument();
  to.startElement("", "history-cache", "history-cache", attributes);

   to.startElement("", "entries", "entries", attributes);
to.startElement("", "name", "name", attributes);
String name = "Javah&cache";
to.characters(name.toCharArray(), 0, name.length());
to.endElement("", "name", "name");

to.startElement("", "tag", "tag", attributes);
String tag = "text";
to.characters(tag.toCharArray(), 0, tag.length());
to.endElement("", "tag", "tag");
   to.endElement("", "entries", "entries");

  to.endElement("", "history-cache", "history-cache");
  to.endDocument();
}
  }

  public void write(File file, XmlContentProvider provider)
  throws TransformerException {
write(new StreamResult(file), provider);
  }

  public void write(OutputStream outputStream, XmlContentProvider provider)
  throws TransformerException {
write(new StreamResult(outputStream), provider);
  }

  public void write(Writer writer, XmlContentProvider provider)
  throws TransformerException {
write(new StreamResult(writer), provider);
  }

  /**
   * Writes SAX events sent by an XML provider using an identity transform.
   *
   * @param  result The stream to write the result of the identity transform
to.
   * @param  provider The XML content provider.
   */
  private void write(StreamResult result, final XmlContentProvider provider)
   throws TransformerException {
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");

XMLFilterImpl reader = new XMLFilterImpl() {
  public void parse(InputSource input)
  throws IOException,
 SAXException {
provider.writeTo(getContentHandler());
  }
};
SAXSource source = new SAXSource(reader, new InputSource());
transformer.transform(source, result);
  }

  public static void main(String[] args)
 throws Exception {
new XmlWriter().write(new File("XmlWriter.xml"), new MyProvider());
  }

}

-Original Message-
From: [EMAIL PROTECTED]
To: Ant Developers List
Sent: 12/18/2003 7:36 AM
Subject: RE: Bug 25564 - CVS tagdiff does not escape XML characters

Hi,

I have attached a file to the bug report.

http://issues.apache.org/bugzilla/show_bug.cgi?id=25564

Steve





Dominique Devienne <[EMAIL PROTECTED]>
17/12/2003 11:14
Please respond to "Ant Developers List"

 
To: "'Antoine Levy-Lambert '" <[EMAIL PROTECTED]>, "'Ant
Developers List '" 
<[EMAIL PROTECTED]>
cc: 
Subject:RE: Bug 25564 - CVS tagdiff does not escape XML
characters


From: <[EMAIL PROTECTED]>

> My favoured way of generating XML from a class is to extend
> XMLFilterImpl and fire SAX events to a Transformer with no
> stylesheet and StreamResult of the required output file,
> inspired by Cocoon 2.

Would you care to provide a concrete example please? Thanks, --DD

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



RE: Bug 25564 - CVS tagdiff does not escape XML characters

2003-12-18 Thread Steven . Murphy
Hi,

I have attached a file to the bug report.

http://issues.apache.org/bugzilla/show_bug.cgi?id=25564

Steve





Dominique Devienne <[EMAIL PROTECTED]>
17/12/2003 11:14
Please respond to "Ant Developers List"

 
To: "'Antoine Levy-Lambert '" <[EMAIL PROTECTED]>, "'Ant Developers 
List '" 
<[EMAIL PROTECTED]>
        cc: 
        Subject:RE: Bug 25564 - CVS tagdiff does not escape XML 
characters


From: <[EMAIL PROTECTED]>

> My favoured way of generating XML from a class is to extend
> XMLFilterImpl and fire SAX events to a Transformer with no
> stylesheet and StreamResult of the required output file,
> inspired by Cocoon 2.

Would you care to provide a concrete example please? Thanks, --DD

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





DO NOT REPLY [Bug 25564] - CVS tagdiff does not escape XML characters

2003-12-18 Thread bugzilla
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=25564

CVS tagdiff does not escape XML characters





--- Additional Comments From [EMAIL PROTECTED]  2003-12-18 13:19 ---
Created an attachment (id=9627)
File to demonstrate XML generation by throwing SAX events to a transformer.

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



RE: Bug 25564 - CVS tagdiff does not escape XML characters

2003-12-17 Thread Dominique Devienne
From: <[EMAIL PROTECTED]>

> My favoured way of generating XML from a class is to extend
> XMLFilterImpl and fire SAX events to a Transformer with no
> stylesheet and StreamResult of the required output file,
> inspired by Cocoon 2.

Would you care to provide a concrete example please? Thanks, --DD

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



Re: Bug 25564 - CVS tagdiff does not escape XML characters

2003-12-16 Thread Antoine Levy-Lambert
Hi Steven,

I will address this type of bug report once 1.6 is released.

Right now, I prefer to concentrate my energy on getting the release done
right.

Cheers,

Antoine
- Original Message -
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Tuesday, December 16, 2003 7:21 PM
Subject: Bug 25564 - CVS tagdiff does not escape XML characters


> Server is down at the moment, so I cannot add to
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=25564
>
> Hi All,
>
> I have been looking through the problem source and the XML is generated by
> hand with code like
>
> writer.print(" if (mystartTag != null) {
> writer.print("startTag=\"" + mystartTag + "\" ");
> } else {
> writer.print("startDate=\"" + mystartDate + "\" ");
> }
> if (myendTag != null) {
> writer.print("endTag=\"" + myendTag + "\" ");
> } else {
> writer.print("endDate=\"" + myendDate + "\" ");
> }
>
> Which is all quite nasty.
>
> Firstlly, the problem could be fixed by adding a CDATA to the offending
> text, but this still leaves potential problems.
>
> My favoured way of generating XML from a class is to extend XMLFilterImpl
> and fire SAX events to a Transformer with no stylesheet and StreamResult
> of the required output file, inspired by Cocoon 2.
>
> Given that frequently the XML output of this task would be transformed to
> HTML using taggdiff.xsl then the processing would be more efficient to use
> that transformer from the outset; this would of course have to be optional
> in order not to break existing build files.
>
> The cvschangelog task is also guitly of handcrafting XML albeit using a
> CDATA for certain elements, again this task is also frequently followed by
> a style task.
>
> CvsTagDiff extends AbstractCvsTask yet ChangeLogTask does not, but both
> tasks are very similar, i.e:
>
> execute cvs command
> parse resultant file to memory
> output memory contents to XML
>
> And are both frequently followed by a style task, such similarity IMO
> should be exploited.
>
> Anyway, I am new to this open source apache stuff so appologies if I have
> omitted and stages or information. I am happy to perform this work myself
> of course.
>
> Steve
>
>



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



Bug 25564 - CVS tagdiff does not escape XML characters

2003-12-16 Thread Steven . Murphy
Server is down at the moment, so I cannot add to
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=25564

Hi All,

I have been looking through the problem source and the XML is generated by 
hand with code like

writer.print("

DO NOT REPLY [Bug 25564] - CVS tagdiff does not escape XML characters

2003-12-16 Thread bugzilla
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=25564

CVS tagdiff does not escape XML characters





--- Additional Comments From [EMAIL PROTECTED]  2003-12-16 12:19 ---
To elaborate about it working in 1.5:

The filename that is causing the problem is a new file, these were not being
output due to cvs version incompatibility (fixed in revision 1.18).

So the file was never output, therefore the bug was never encountered in 1.5

The writeTagDiff and writeTagEntry methods do not use an XML API to generate the
output.

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