Author: vsiveton Date: Sat May 30 13:55:40 2009 New Revision: 780266 URL: http://svn.apache.org/viewvc?rev=780266&view=rev Log: o reduced warning log message for some parser/skin.
Modified: maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/XhtmlBaseParser.java maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/XhtmlBaseSink.java maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookSink.java maven/doxia/doxia/trunk/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoAggregateSink.java maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java maven/doxia/doxia/trunk/doxia-modules/doxia-module-itext/src/main/java/org/apache/maven/doxia/module/itext/ITextSink.java maven/doxia/doxia/trunk/doxia-modules/doxia-module-rtf/src/main/java/org/apache/maven/doxia/module/rtf/RtfSink.java Modified: maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/XhtmlBaseParser.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/XhtmlBaseParser.java?rev=780266&r1=780265&r2=780266&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/XhtmlBaseParser.java (original) +++ maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/XhtmlBaseParser.java Sat May 30 13:55:40 2009 @@ -20,7 +20,9 @@ */ import java.io.Reader; +import java.util.HashMap; import java.util.Iterator; +import java.util.Map; import java.util.Set; import java.util.TreeSet; @@ -73,8 +75,9 @@ /** Decoration properties, eg for texts. */ private final SinkEventAttributeSet decoration = new SinkEventAttributeSet(); - /** Used to add warn message when links are modified. */ - private Set modifiedLinks; + /** Map of warn messages with a String as key to describe the error type and a Set as value. + * Using to reduce warn messages. */ + private Map warnMessages; /** {...@inheritdoc} */ public void parse( Reader source, Sink sink ) @@ -82,17 +85,23 @@ { super.parse( source, sink ); - if ( getLog().isWarnEnabled() ) + if ( getLog().isWarnEnabled() && this.warnMessages != null && !isSecondParsing() ) { - if ( this.modifiedLinks != null ) + for ( Iterator it = this.warnMessages.entrySet().iterator(); it.hasNext(); ) { - for ( Iterator it = this.modifiedLinks.iterator(); it.hasNext(); ) + Map.Entry entry = (Map.Entry) it.next(); + + Set set = (Set) entry.getValue(); + + for ( Iterator it2 = set.iterator(); it2.hasNext(); ) { - getLog().warn( it.next().toString() ); - } + String msg = (String) it2.next(); - this.modifiedLinks = null; + getLog().warn( msg ); + } } + + this.warnMessages = null; } } @@ -686,7 +695,9 @@ if ( !DoxiaUtils.isValidId( id ) ) { String linkAnchor = DoxiaUtils.encodeId( id, true ); - addModifiedLinkMessage( id, linkAnchor ); + + String msg = "Modified invalid link: '" + id + "' to '" + linkAnchor + "'"; + logMessage( "modifiedLink", msg ); return linkAnchor; } @@ -723,7 +734,8 @@ { href = href.substring( 0, hashIndex ) + "#" + DoxiaUtils.encodeId( hash, true ); - addModifiedLinkMessage( hash, href ); + String msg = "Modified invalid link: '" + hash + "' to '" + href + "'"; + logMessage( "modifiedLink", msg ); } } sink.link( href, attribs ); @@ -921,14 +933,35 @@ sink.tableRows( justif, grid ); } - private void addModifiedLinkMessage( String hash, String linkAnchor ) + /** + * If debug mode is enabled, log the <code>msg</code> as is, otherwise add unique msg in <code>warnMessages</code>. + * + * @param key not null + * @param msg not null + * @see #parse(Reader, Sink) + * @since 1.1.1 + */ + private void logMessage( String key, String msg ) { - if ( modifiedLinks == null ) + msg = "[XHTML Parser] " + msg; + if ( getLog().isDebugEnabled() ) { - modifiedLinks = new TreeSet(); + getLog().debug( msg ); + + return; } - String msg = "[Xhtml Parser] Modified invalid link: '" + hash + "' to '" + linkAnchor + "'"; - modifiedLinks.add( msg ); + if ( warnMessages == null ) + { + warnMessages = new HashMap(); + } + + Set set = (Set) warnMessages.get( key ); + if ( set == null ) + { + set = new TreeSet(); + } + set.add( msg ); + warnMessages.put( key, set ); } } Modified: maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/XhtmlBaseSink.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/XhtmlBaseSink.java?rev=780266&r1=780265&r2=780266&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/XhtmlBaseSink.java (original) +++ maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/XhtmlBaseSink.java Sat May 30 13:55:40 2009 @@ -22,6 +22,11 @@ import java.io.PrintWriter; import java.io.StringWriter; import java.io.Writer; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import java.util.TreeSet; import javax.swing.text.MutableAttributeSet; import javax.swing.text.html.HTML.Attribute; @@ -111,6 +116,10 @@ * */ private boolean tableRows = false; + /** Map of warn messages with a String as key to describe the error type and a Set as value. + * Using to reduce warn messages. */ + private Map warnMessages; + // ---------------------------------------------------------------------- // Constructor // ---------------------------------------------------------------------- @@ -1443,7 +1452,8 @@ { id = DoxiaUtils.encodeId( name, true ); - getLog().warn( "[Xhtml Sink] Modified invalid anchor name: '" + name + "' to '" + id + "'" ); + String msg = "Modified invalid anchor name: '" + name + "' to '" + id + "'"; + logMessage( "modifiedLink", msg ); } MutableAttributeSet att = new SinkEventAttributeSet(); @@ -1778,7 +1788,8 @@ { if ( requiredParams == null || !( requiredParams[0] instanceof Integer ) ) { - getLog().warn( "Missing type information for unknown event: " + name + ", ignoring!" ); + String msg = "No type information for unknown event: '" + name + "', ignoring!"; + logMessage( "noTypeInfo", msg ); return; } @@ -1803,7 +1814,8 @@ if ( tag == null ) { - getLog().warn( "No HTML tag found for unknown Sink event: " + name + ", ignoring!" ); + String msg = "No HTML tag found for unknown event: '" + name + "', ignoring!"; + logMessage( "noHtmlTag", msg ); } else { @@ -1821,7 +1833,8 @@ } else { - getLog().warn( "No type information for unknown Sink event: " + name + ", ignoring!" ); + String msg = "No type information for unknown event: '" + name + "', ignoring!"; + logMessage( "noTypeInfo", msg ); } } } @@ -1838,6 +1851,25 @@ writer.write( tempWriter.toString() ); tempWriter = new StringWriter(); writer.close(); + + if ( getLog().isWarnEnabled() && this.warnMessages != null ) + { + for ( Iterator it = this.warnMessages.entrySet().iterator(); it.hasNext(); ) + { + Map.Entry entry = (Map.Entry) it.next(); + + Set set = (Set) entry.getValue(); + + for ( Iterator it2 = set.iterator(); it2.hasNext(); ) + { + String msg = (String) it2.next(); + + getLog().warn( msg ); + } + } + + this.warnMessages = null; + } } // ---------------------------------------------------------------------- @@ -1897,4 +1929,35 @@ tempWriter.write( unifyEOLs( text ) ); } + /** + * If debug mode is enabled, log the <code>msg</code> as is, otherwise add unique msg in <code>warnMessages</code>. + * + * @param key not null + * @param msg not null + * @see #close() + * @since 1.1.1 + */ + private void logMessage( String key, String msg ) + { + msg = "[XHTML Sink] " + msg; + if ( getLog().isDebugEnabled() ) + { + getLog().debug( msg ); + + return; + } + + if ( warnMessages == null ) + { + warnMessages = new HashMap(); + } + + Set set = (Set) warnMessages.get( key ); + if ( set == null ) + { + set = new TreeSet(); + } + set.add( msg ); + warnMessages.put( key, set ); + } } Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java?rev=780266&r1=780265&r2=780266&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java Sat May 30 13:55:40 2009 @@ -163,11 +163,9 @@ /** a line of AptSource. */ protected String line; - /** Used to add warn message when links are ambiguous. */ - private Set ambiguousLinks; - - /** Used to add warn message when links are modified. */ - private Set modifiedLinks; + /** Map of warn messages with a String as key to describe the error type and a Set as value. + * Using to reduce warn messages. */ + protected Map warnMessages; private static final int NUMBER_OF_SPACES = 85; @@ -231,26 +229,23 @@ throw new AptParseException( ape.getMessage(), ape, getSourceName(), getSourceLineNumber(), -1 ); } - if ( getLog().isWarnEnabled() ) + if ( getLog().isWarnEnabled() && this.warnMessages != null && !isSecondParsing() ) { - if ( this.ambiguousLinks != null ) + for ( Iterator it = this.warnMessages.entrySet().iterator(); it.hasNext(); ) { - for ( Iterator it = this.ambiguousLinks.iterator(); it.hasNext(); ) - { - getLog().warn( it.next().toString() ); - } + Map.Entry entry = (Map.Entry) it.next(); - this.ambiguousLinks = null; - } - if ( this.modifiedLinks != null ) - { - for ( Iterator it = this.modifiedLinks.iterator(); it.hasNext(); ) + Set set = (Set) entry.getValue(); + + for ( Iterator it2 = set.iterator(); it2.hasNext(); ) { - getLog().warn( it.next().toString() ); - } + String msg = (String) it2.next(); - this.modifiedLinks = null; + getLog().warn( msg ); + } } + + this.warnMessages = null; } } @@ -483,7 +478,8 @@ if ( hash.endsWith( ".html" ) && !hash.startsWith( "./" ) ) { - addAmbiguousLinkMessage( hash ); + String msg = "Ambiguous link: '" + hash + "'. If this is a local link, prepend \"./\"!"; + logMessage( "ambiguousLink", msg ); } if ( !DoxiaUtils.isValidId( hash ) ) @@ -492,7 +488,8 @@ linkAnchor.substring( 0, hashIndex ) + "#" + DoxiaUtils.encodeId( hash, true ); - addModifiedLinkMessage( hash, linkAnchor ); + String msg = "Modified invalid link: '" + hash + "' to '" + linkAnchor + "'"; + logMessage( "modifiedLink", msg ); } } @@ -1584,32 +1581,35 @@ } /** - * @param hash not null + * If debug mode is enabled, log the <code>msg</code> as is, otherwise add unique msg in <code>warnMessages</code>. + * + * @param key not null + * @param msg not null + * @see #parse(Reader, Sink) + * @since 1.1.1 */ - private void addAmbiguousLinkMessage( String hash ) + private void logMessage( String key, String msg ) { - if ( ambiguousLinks == null ) + msg = "[APT Parser] " + msg; + if ( getLog().isDebugEnabled() ) { - ambiguousLinks = new TreeSet(); - } + getLog().debug( msg ); - String msg = "[Apt Parser] Ambiguous link: '" + hash + "'. If this is a local link, prepend \"./\"!"; - ambiguousLinks.add( msg ); - } + return; + } - /** - * @param hash not null - * @param linkAnchor not null - */ - private void addModifiedLinkMessage( String hash, String linkAnchor ) - { - if ( modifiedLinks == null ) + if ( warnMessages == null ) { - modifiedLinks = new TreeSet(); + warnMessages = new HashMap(); } - String msg = "[Apt Parser] Modified invalid link: '" + hash + "' to '" + linkAnchor + "'"; - modifiedLinks.add( msg ); + Set set = (Set) warnMessages.get( key ); + if ( set == null ) + { + set = new TreeSet(); + } + set.add( msg ); + warnMessages.put( key, set ); } // ----------------------------------------------------------------------- Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookSink.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookSink.java?rev=780266&r1=780265&r2=780266&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookSink.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookSink.java Sat May 30 13:55:40 2009 @@ -22,8 +22,13 @@ import java.io.PrintWriter; import java.io.StringWriter; import java.io.Writer; +import java.util.HashMap; +import java.util.Iterator; import java.util.Locale; +import java.util.Map; +import java.util.Set; import java.util.StringTokenizer; +import java.util.TreeSet; import javax.swing.text.MutableAttributeSet; import javax.swing.text.SimpleAttributeSet; @@ -145,6 +150,10 @@ private String encoding; + /** Map of warn messages with a String as key to describe the error type and a Set as value. + * Using to reduce warn messages. */ + private Map warnMessages; + /** * Constructor, initialize the Writer. * @@ -1397,7 +1406,8 @@ { id = DoxiaUtils.encodeId( name, true ); - getLog().warn( "[Docbook Sink] Modified invalid anchor name: '" + name + "' to '" + id + "'" ); + String msg = "Modified invalid anchor name: '" + name + "' to '" + id + "'"; + logMessage( "modifiedLink", msg ); } MutableAttributeSet att = new SimpleAttributeSet(); @@ -1544,9 +1554,8 @@ comment = StringUtils.replace( comment, "--", "- -" ); } - getLog().warn( - "[Docbook Sink] Modified invalid comment: '" + originalComment + "' to '" + comment - + "'" ); + String msg = "Modified invalid comment: '" + originalComment + "' to '" + comment + "'"; + logMessage( "modifiedComment", msg ); } StringBuffer buffer = new StringBuffer( comment.length() + 9 ); @@ -1566,7 +1575,8 @@ */ public void unknown( String name, Object[] requiredParams, SinkEventAttributes attributes ) { - getLog().warn( "Unknown Sink event in DocBookSink: " + name + ", ignoring!" ); + String msg = "Unknown Sink event: '" + name + "', ignoring!"; + logMessage( "unknownEvent", msg ); } // ----------------------------------------------------------------------- @@ -1622,6 +1632,25 @@ public void close() { out.close(); + + if ( getLog().isWarnEnabled() && this.warnMessages != null ) + { + for ( Iterator it = this.warnMessages.entrySet().iterator(); it.hasNext(); ) + { + Map.Entry entry = (Map.Entry) it.next(); + + Set set = (Set) entry.getValue(); + + for ( Iterator it2 = set.iterator(); it2.hasNext(); ) + { + String msg = (String) it2.next(); + + getLog().warn( msg ); + } + } + + this.warnMessages = null; + } } /** {...@inheritdoc} */ @@ -1640,4 +1669,36 @@ { this.skip = skip; } + + /** + * If debug mode is enabled, log the <code>msg</code> as is, otherwise add unique msg in <code>warnMessages</code>. + * + * @param key not null + * @param msg not null + * @see #close() + * @since 1.1.1 + */ + private void logMessage( String key, String msg ) + { + msg = "[Docbook Sink] " + msg; + if ( getLog().isDebugEnabled() ) + { + getLog().debug( msg ); + + return; + } + + if ( warnMessages == null ) + { + warnMessages = new HashMap(); + } + + Set set = (Set) warnMessages.get( key ); + if ( set == null ) + { + set = new TreeSet(); + } + set.add( msg ); + warnMessages.put( key, set ); + } } Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java?rev=780266&r1=780265&r2=780266&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java Sat May 30 13:55:40 2009 @@ -21,7 +21,11 @@ import java.io.IOException; import java.io.Reader; +import java.util.HashMap; import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import java.util.TreeSet; import javax.swing.text.html.HTML.Attribute; @@ -71,6 +75,9 @@ /** Used to collect text events. */ private StringBuffer buffer; + /** Map of warn messages with a String as key to describe the error type and a Set as value. + * Using to reduce warn messages. */ + private Map warnMessages; /** {...@inheritdoc} */ public void parse( Reader source, Sink sink ) @@ -80,6 +87,25 @@ super.parse( source, sink ); writeFaqs( sink ); + + if ( getLog().isWarnEnabled() && this.warnMessages != null && !isSecondParsing() ) + { + for ( Iterator it = this.warnMessages.entrySet().iterator(); it.hasNext(); ) + { + Map.Entry entry = (Map.Entry) it.next(); + + Set set = (Set) entry.getValue(); + + for ( Iterator it2 = set.iterator(); it2.hasNext(); ) + { + String msg = (String) it2.next(); + + getLog().warn( msg ); + } + } + + this.warnMessages = null; + } } /** {...@inheritdoc} */ @@ -122,9 +148,12 @@ } else if ( !DoxiaUtils.isValidId( currentPart.getId() ) ) { - getLog().warn( "Modified invalid id: " + currentPart.getId() ); + String linkAnchor = DoxiaUtils.encodeId( currentPart.getId(), true ); - currentPart.setId( DoxiaUtils.encodeId( currentPart.getId(), true ) ); + String msg = "Modified invalid link: '" + currentPart.getId() + "' to '" + linkAnchor + "'"; + logMessage( "modifiedLink", msg ); + + currentPart.setId( linkAnchor ); } } else if ( parser.getName().equals( TITLE.toString() ) ) @@ -157,9 +186,12 @@ } else if ( !DoxiaUtils.isValidId( currentFaq.getId() ) ) { - getLog().warn( "Modified invalid id: " + currentFaq.getId() ); + String linkAnchor = DoxiaUtils.encodeId( currentPart.getId(), true ); + + String msg = "Modified invalid link: '" + currentPart.getId() + "' to '" + linkAnchor + "'"; + logMessage( "modifiedLink", msg ); - currentFaq.setId( DoxiaUtils.encodeId( currentFaq.getId(), true ) ); + currentFaq.setId( linkAnchor ); } } if ( parser.getName().equals( QUESTION_TAG.toString() ) ) @@ -502,4 +534,35 @@ sink.paragraph_(); } + /** + * If debug mode is enabled, log the <code>msg</code> as is, otherwise add unique msg in <code>warnMessages</code>. + * + * @param key not null + * @param msg not null + * @see #parse(Reader, Sink) + * @since 1.1.1 + */ + private void logMessage( String key, String msg ) + { + msg = "[FML Parser] " + msg; + if ( getLog().isDebugEnabled() ) + { + getLog().debug( msg ); + + return; + } + + if ( warnMessages == null ) + { + warnMessages = new HashMap(); + } + + Set set = (Set) warnMessages.get( key ); + if ( set == null ) + { + set = new TreeSet(); + } + set.add( msg ); + warnMessages.put( key, set ); + } } Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoAggregateSink.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoAggregateSink.java?rev=780266&r1=780265&r2=780266&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoAggregateSink.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoAggregateSink.java Sat May 30 13:55:40 2009 @@ -327,7 +327,8 @@ { anchor = DoxiaUtils.encodeId( name, true ); - getLog().warn( "[FO Sink] Modified invalid anchor name: " + name ); + String msg = "Modified invalid anchor name: '" + name + "' to '" + anchor + "'"; + logMessage( "modifiedLink", msg ); } anchor = "#" + anchor; @@ -368,9 +369,11 @@ if ( !DoxiaUtils.isValidId( anchor ) ) { + String tmp = anchor; anchor = DoxiaUtils.encodeId( anchor, true ); - getLog().warn( "[FO Sink] Modified invalid link name: " + name ); + String msg = "Modified invalid anchor name: '" + tmp + "' to '" + anchor + "'"; + logMessage( "modifiedLink", msg ); } if ( docName != null ) Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java?rev=780266&r1=780265&r2=780266&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java Sat May 30 13:55:40 2009 @@ -23,7 +23,12 @@ import java.io.IOException; import java.io.StringWriter; import java.io.Writer; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; import java.util.Stack; +import java.util.TreeSet; import javax.swing.text.MutableAttributeSet; import javax.swing.text.html.HTML.Attribute; @@ -93,6 +98,10 @@ private String languageId; + /** Map of warn messages with a String as key to describe the error type and a Set as value. + * Using to reduce warn messages. */ + protected Map warnMessages; + /** * Constructor, initialize the Writer. * @@ -1133,7 +1142,8 @@ { anchor = DoxiaUtils.encodeId( name, true ); - getLog().warn( "[FO Sink] Modified invalid anchor name: '" + name + "' to '" + anchor + "'" ); + String msg = "Modified invalid anchor name: '" + name + "' to '" + anchor + "'"; + logMessage( "modifiedLink", msg ); } anchor = "#" + name; @@ -1174,7 +1184,8 @@ { anchor = DoxiaUtils.encodeId( anchor, true ); - getLog().warn( "[FO Sink] Modified invalid anchor name: '" + name + "' to '" + anchor + "'" ); + String msg = "Modified invalid anchor name: '" + name + "' to '" + anchor + "'"; + logMessage( "modifiedLink", msg ); } anchor = "#" + anchor; @@ -1305,6 +1316,25 @@ { getLog().debug( e ); } + + if ( getLog().isWarnEnabled() && this.warnMessages != null ) + { + for ( Iterator it = this.warnMessages.entrySet().iterator(); it.hasNext(); ) + { + Map.Entry entry = (Map.Entry) it.next(); + + Set set = (Set) entry.getValue(); + + for ( Iterator it2 = set.iterator(); it2.hasNext(); ) + { + String msg = (String) it2.next(); + + getLog().warn( msg ); + } + } + + this.warnMessages = null; + } } /** @@ -1315,7 +1345,8 @@ */ public void unknown( String name, Object[] requiredParams, SinkEventAttributes attributes ) { - getLog().warn( "Unknown Sink event in FoSink: " + name + ", ignoring!" ); + String msg = "Unknown Sink event: '" + name + "', ignoring!"; + logMessage( "unknownEvent", msg ); } /** {...@inheritdoc} */ @@ -1331,7 +1362,8 @@ comment = StringUtils.replace( comment, "--", "- -" ); } - getLog().warn( "[FO Sink] Modified invalid comment: '" + originalComment + "' to '" + comment + "'" ); + String msg = "Modified invalid comment: '" + originalComment + "' to '" + comment + "'"; + logMessage( "modifyComment", msg ); } StringBuffer buf = new StringBuffer( comment.length() + 9 ); @@ -1658,4 +1690,36 @@ { // do nothing, overridden by AggregateSink } + + /** + * If debug mode is enabled, log the <code>msg</code> as is, otherwise add unique msg in <code>warnMessages</code>. + * + * @param key not null + * @param msg not null + * @see #close() + * @since 1.1.1 + */ + protected void logMessage( String key, String msg ) + { + msg = "[FO Sink] " + msg; + if ( getLog().isDebugEnabled() ) + { + getLog().debug( msg ); + + return; + } + + if ( warnMessages == null ) + { + warnMessages = new HashMap(); + } + + Set set = (Set) warnMessages.get( key ); + if ( set == null ) + { + set = new TreeSet(); + } + set.add( msg ); + warnMessages.put( key, set ); + } } Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-itext/src/main/java/org/apache/maven/doxia/module/itext/ITextSink.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-itext/src/main/java/org/apache/maven/doxia/module/itext/ITextSink.java?rev=780266&r1=780265&r2=780266&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-itext/src/main/java/org/apache/maven/doxia/module/itext/ITextSink.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-itext/src/main/java/org/apache/maven/doxia/module/itext/ITextSink.java Sat May 30 13:55:40 2009 @@ -30,7 +30,12 @@ import java.io.Writer; import java.net.MalformedURLException; import java.net.URL; +import java.util.HashMap; +import java.util.Iterator; import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.TreeSet; import org.apache.maven.doxia.sink.Sink; import org.apache.maven.doxia.sink.SinkAdapter; @@ -103,6 +108,10 @@ private String tableCaption = null; + /** Map of warn messages with a String as key to describe the error type and a Set as value. + * Using to reduce warn messages. */ + private Map warnMessages; + /** * <p>Constructor for ITextSink.</p> * @@ -172,6 +181,25 @@ public void close() { IOUtil.close( writer ); + + if ( getLog().isWarnEnabled() && this.warnMessages != null ) + { + for ( Iterator it = this.warnMessages.entrySet().iterator(); it.hasNext(); ) + { + Map.Entry entry = (Map.Entry) it.next(); + + Set set = (Set) entry.getValue(); + + for ( Iterator it2 = set.iterator(); it2.hasNext(); ) + { + String msg = (String) it2.next(); + + getLog().warn( msg ); + } + } + + this.warnMessages = null; + } } /** {...@inheritdoc} */ @@ -1181,8 +1209,11 @@ if ( urlName == null ) { - getLog().warn( "No image " + name + " found in the class loader. Try to call setClassLoader(ClassLoader)" - + " before." ); + String msg = + "No image '" + name + + "' found in the class loader. Try to call setClassLoader(ClassLoader) before."; + logMessage( "imageNotFound", msg ); + return; } @@ -1316,7 +1347,8 @@ { id = DoxiaUtils.encodeId( name, true ); - getLog().warn( "Modified invalid anchor name: " + name ); + String msg = "Modified invalid link: '" + name + "' to '" + id + "'"; + logMessage( "modifiedLink", msg ); } writeStartElement( ElementTags.ANCHOR ); @@ -1500,7 +1532,8 @@ */ public void unknown( String name, Object[] requiredParams, SinkEventAttributes attributes ) { - getLog().warn( "Unknown Sink event in ITextSink: " + name + ", ignoring!" ); + String msg = "Unknown Sink event: '" + name + "', ignoring!"; + logMessage( "unknownEvent", msg ); } /** @@ -1648,4 +1681,36 @@ writeAddAttribute( ElementTags.RED, fontColorRed ); // writeAddAttribute( ElementTags.LOCALDESTINATION, localDestination ); } + + /** + * If debug mode is enabled, log the <code>msg</code> as is, otherwise add unique msg in <code>warnMessages</code>. + * + * @param key not null + * @param msg not null + * @see #close() + * @since 1.1.1 + */ + private void logMessage( String key, String msg ) + { + msg = "[iText Sink] " + msg; + if ( getLog().isDebugEnabled() ) + { + getLog().debug( msg ); + + return; + } + + if ( warnMessages == null ) + { + warnMessages = new HashMap(); + } + + Set set = (Set) warnMessages.get( key ); + if ( set == null ) + { + set = new TreeSet(); + } + set.add( msg ); + warnMessages.put( key, set ); + } } Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-rtf/src/main/java/org/apache/maven/doxia/module/rtf/RtfSink.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-rtf/src/main/java/org/apache/maven/doxia/module/rtf/RtfSink.java?rev=780266&r1=780265&r2=780266&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-rtf/src/main/java/org/apache/maven/doxia/module/rtf/RtfSink.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-rtf/src/main/java/org/apache/maven/doxia/module/rtf/RtfSink.java Sat May 30 13:55:40 2009 @@ -29,8 +29,13 @@ import java.io.PrintWriter; import java.io.Writer; +import java.util.HashMap; import java.util.Hashtable; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; import java.util.StringTokenizer; +import java.util.TreeSet; import java.util.Vector; import org.apache.maven.doxia.sink.Sink; @@ -210,6 +215,10 @@ protected OutputStream stream; // for raw image data + /** Map of warn messages with a String as key to describe the error type and a Set as value. + * Using to reduce warn messages. */ + private Map warnMessages; + // ----------------------------------------------------------------------- /** @@ -1188,8 +1197,11 @@ if ( !source.toLowerCase().endsWith( ".ppm" ) ) { // TODO support more image types! - getLog().warn( "Unsupported image type for image file: '" + source + "'."); - getLog().warn( "Only PPM image type is currently supported."); + String msg = + "Unsupported image type for image file: '" + source + "'. Only PPM image type is " + + "currently supported."; + logMessage( "unsupportedImage", msg ); + return; } @@ -1592,7 +1604,8 @@ */ public void unknown( String name, Object[] requiredParams, SinkEventAttributes attributes ) { - getLog().warn( "Unknown Sink event in RtfSink: " + name + ", ignoring!" ); + String msg = "Unknown Sink event: '" + name + "', ignoring!"; + logMessage( "unknownEvent", msg ); } private static String normalize( String s ) @@ -1716,6 +1729,57 @@ public void close() { writer.close(); + + if ( getLog().isWarnEnabled() && this.warnMessages != null ) + { + for ( Iterator it = this.warnMessages.entrySet().iterator(); it.hasNext(); ) + { + Map.Entry entry = (Map.Entry) it.next(); + + Set set = (Set) entry.getValue(); + + for ( Iterator it2 = set.iterator(); it2.hasNext(); ) + { + String msg = (String) it2.next(); + + getLog().warn( msg ); + } + } + + this.warnMessages = null; + } + } + + /** + * If debug mode is enabled, log the <code>msg</code> as is, otherwise add unique msg in <code>warnMessages</code>. + * + * @param key not null + * @param msg not null + * @see #close() + * @since 1.1.1 + */ + private void logMessage( String key, String msg ) + { + msg = "[RTF Sink] " + msg; + if ( getLog().isDebugEnabled() ) + { + getLog().debug( msg ); + + return; + } + + if ( warnMessages == null ) + { + warnMessages = new HashMap(); + } + + Set set = (Set) warnMessages.get( key ); + if ( set == null ) + { + set = new TreeSet(); + } + set.add( msg ); + warnMessages.put( key, set ); } // -----------------------------------------------------------------------