1 package org.apache.maven.doxia.module.xdoc;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.IOException;
23 import java.io.StringReader;
24 import java.io.StringWriter;
25
26 import org.codehaus.plexus.util.xml.PrettyPrintXMLWriter;
27 import org.codehaus.plexus.util.xml.XMLWriter;
28 import org.codehaus.plexus.util.xml.XmlUtil;
29
30
31
32
33
34
35
36
37
38
39 public class XmlWriterXdocSink
40 extends XdocSink
41 {
42
43 private StringWriter xdocWriter;
44
45 private XMLWriter xmlWriter;
46
47 private XmlWriterXdocSink( StringWriter out, String encoding )
48 {
49 super( out, encoding );
50 this.xdocWriter = out;
51 this.xmlWriter = new PrettyPrintXMLWriter( out );
52 }
53
54
55
56
57
58
59
60 public XmlWriterXdocSink( XMLWriter out )
61 {
62 this( new StringWriter(), "UTF-8" );
63 this.xmlWriter = out;
64 }
65
66
67
68
69 public void close()
70 {
71 super.close();
72
73 String xdocContent = xdocWriter.toString();
74 if ( getLog().isDebugEnabled() )
75 {
76 getLog().debug( "Xdoc content: " + xdocContent );
77 }
78 StringWriter formattedContent = new StringWriter();
79 try
80 {
81 XmlUtil.prettyFormat( new StringReader( xdocContent ), formattedContent );
82 }
83 catch ( IOException e )
84 {
85 if ( getLog().isDebugEnabled() )
86 {
87 getLog().error( "IOException: " + e.getMessage(), e );
88 }
89 formattedContent = new StringWriter();
90 formattedContent.write( xdocContent );
91 }
92 xmlWriter.writeMarkup( formattedContent.toString() );
93 }
94 }