Author: vsiveton Date: Fri Feb 15 05:22:30 2008 New Revision: 628059 URL: http://svn.apache.org/viewvc?rev=628059&view=rev Log: DOXIA-145: Adding logger feature
o based on lukas's work o collaborative work after good discussions on IRC Added: maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/AbstractSink.java (with props) Modified: maven/doxia/doxia/trunk/doxia-core/pom.xml maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/DefaultDoxia.java maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/AbstractMacro.java maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/Macro.java maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractParser.java maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/Parser.java 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/SinkAdapter.java maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/WellformednessCheckingSink.java maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/TextSink.java maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java maven/doxia/doxia/trunk/doxia-sink-api/pom.xml maven/doxia/doxia/trunk/doxia-sink-api/src/main/java/org/apache/maven/doxia/sink/Sink.java maven/doxia/doxia/trunk/pom.xml Modified: maven/doxia/doxia/trunk/doxia-core/pom.xml URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/pom.xml?rev=628059&r1=628058&r2=628059&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-core/pom.xml (original) +++ maven/doxia/doxia/trunk/doxia-core/pom.xml Fri Feb 15 05:22:30 2008 @@ -21,11 +21,13 @@ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> + <parent> <artifactId>doxia</artifactId> <groupId>org.apache.maven.doxia</groupId> <version>1.0-beta-1-SNAPSHOT</version> </parent> + <artifactId>doxia-core</artifactId> <name>Doxia :: Core</name> <description>Doxia core classes and interfaces.</description> @@ -78,10 +80,15 @@ </plugin> </plugins> </build> + <dependencies> <dependency> <groupId>org.apache.maven.doxia</groupId> <artifactId>doxia-sink-api</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven.doxia</groupId> + <artifactId>doxia-logging-api</artifactId> </dependency> <dependency> <groupId>org.codehaus.plexus</groupId> Modified: maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/DefaultDoxia.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/DefaultDoxia.java?rev=628059&r1=628058&r2=628059&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/DefaultDoxia.java (original) +++ maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/DefaultDoxia.java Fri Feb 15 05:22:30 2008 @@ -19,12 +19,15 @@ * under the License. */ +import org.apache.maven.doxia.logging.PlexusLoggerWrapper; import org.apache.maven.doxia.parser.ParseException; import org.apache.maven.doxia.parser.Parser; import org.apache.maven.doxia.parser.manager.ParserManager; import org.apache.maven.doxia.parser.manager.ParserNotFoundException; import org.apache.maven.doxia.sink.Sink; +import org.codehaus.plexus.logging.AbstractLogEnabled; + import java.io.Reader; /** @@ -37,11 +40,10 @@ * @plexus.component */ public class DefaultDoxia + extends AbstractLogEnabled implements Doxia { - /** - * @plexus.requirement - */ + /** @plexus.requirement */ private ParserManager parserManager; // ---------------------------------------------------------------------- @@ -55,6 +57,8 @@ throws ParserNotFoundException, ParseException { Parser parser = parserManager.getParser( parserId ); + + parser.enableLogging( new PlexusLoggerWrapper( getLogger() ) ); parser.parse( source, sink ); } Modified: maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/AbstractMacro.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/AbstractMacro.java?rev=628059&r1=628058&r2=628059&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/AbstractMacro.java (original) +++ maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/AbstractMacro.java Fri Feb 15 05:22:30 2008 @@ -19,6 +19,9 @@ * under the License. */ +import org.apache.maven.doxia.logging.Log; +import org.apache.maven.doxia.logging.SystemStreamLog; + /** * Abstract base class to execute <code>Macro</code>. * @@ -29,6 +32,31 @@ public abstract class AbstractMacro implements Macro { + /** Log instance. */ + private Log log; + + /** [EMAIL PROTECTED] */ + public void enableLogging( Log log ) + { + this.log = log; + } + + /** + * Returns a logger for this macro. + * If no logger has been configured, a new SystemStreamLog is returned. + * + * @return Log + */ + protected Log getLog() + { + if ( log == null ) + { + log = new SystemStreamLog(); + } + + return log; + } + /** * Check if the given parameter is required. Throws an * IllegalArgumentException if paramValue is null or empty. Modified: maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/Macro.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/Macro.java?rev=628059&r1=628058&r2=628059&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/Macro.java (original) +++ maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/Macro.java Fri Feb 15 05:22:30 2008 @@ -19,6 +19,7 @@ * under the License. */ +import org.apache.maven.doxia.logging.LogEnabled; import org.apache.maven.doxia.sink.Sink; /** @@ -29,6 +30,7 @@ * @since 1.0 */ public interface Macro + extends LogEnabled { /** The Plexus lookup role. */ String ROLE = Macro.class.getName(); Modified: maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractParser.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractParser.java?rev=628059&r1=628058&r2=628059&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractParser.java (original) +++ maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractParser.java Fri Feb 15 05:22:30 2008 @@ -21,6 +21,8 @@ import java.io.File; +import org.apache.maven.doxia.logging.Log; +import org.apache.maven.doxia.logging.SystemStreamLog; import org.apache.maven.doxia.macro.Macro; import org.apache.maven.doxia.macro.MacroExecutionException; import org.apache.maven.doxia.macro.MacroRequest; @@ -46,6 +48,9 @@ /** @plexus.requirement */ protected MacroManager macroManager; + /** Log instance. */ + private Log log; + /** [EMAIL PROTECTED] */ public int getType() { @@ -68,6 +73,8 @@ { Macro macro = macroManager.getMacro( macroId ); + macro.enableLogging( getLog() ); + macro.execute( sink, request ); } @@ -98,5 +105,27 @@ public void setSecondParsing( boolean second ) { this.secondParsing = second; + } + + /** [EMAIL PROTECTED] */ + public void enableLogging( Log log ) + { + this.log = log; + } + + /** + * Returns the current logger for this parser. + * If no logger has been configured yet, a new SystemStreamLog is returned. + * + * @return Log + */ + protected Log getLog() + { + if ( log == null ) + { + log = new SystemStreamLog(); + } + + return log; } } Modified: maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/Parser.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/Parser.java?rev=628059&r1=628058&r2=628059&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/Parser.java (original) +++ maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/Parser.java Fri Feb 15 05:22:30 2008 @@ -19,6 +19,7 @@ * under the License. */ +import org.apache.maven.doxia.logging.LogEnabled; import org.apache.maven.doxia.sink.Sink; import java.io.Reader; @@ -33,6 +34,7 @@ * @since 1.0 */ public interface Parser + extends LogEnabled { /** The Plexus lookup role. */ String ROLE = Parser.class.getName(); 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=628059&r1=628058&r2=628059&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 Fri Feb 15 05:22:30 2008 @@ -41,10 +41,10 @@ public class XhtmlBaseParser extends AbstractXmlParser { - /** Used to distinguish <a href=""> from <a name="">. */ + /** Used to distinguish <a href=""> from <a name="">. */ private boolean isLink; - /** Used to distinguish <a href=""> from <a name="">. */ + /** Used to distinguish <a href=""> from <a name="">. */ private boolean isAnchor; /** Used for nested lists. */ @@ -528,7 +528,14 @@ { if ( !baseStartTag( parser, sink ) ) { - // TODO: log( "Unrecognized start tag!" ); + if ( getLog().isWarnEnabled() ) + { + String position = "[" + parser.getLineNumber() + ":" + + parser.getColumnNumber() + "]"; + String tag = "<" + parser.getName() + ">"; + + getLog().warn( "Unrecognized tag: " + tag + " at " + position ); + } } } @@ -543,7 +550,14 @@ { if ( !baseEndTag( parser, sink ) ) { - // TODO: log( "Unrecognized end tag!" ); + if ( getLog().isWarnEnabled() ) + { + String position = "[" + parser.getLineNumber() + ":" + + parser.getColumnNumber() + "]"; + String tag = "<" + parser.getName() + ">"; + + getLog().warn( "Unrecognized tag: " + tag + " at " + position ); + } } } Added: maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/AbstractSink.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/AbstractSink.java?rev=628059&view=auto ============================================================================== --- maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/AbstractSink.java (added) +++ maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/AbstractSink.java Fri Feb 15 05:22:30 2008 @@ -0,0 +1,59 @@ +package org.apache.maven.doxia.sink; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import org.apache.maven.doxia.logging.Log; +import org.apache.maven.doxia.logging.SystemStreamLog; + +/** + * An abstract base class that defines some convenience methods for sinks. + * + * @author ltheussl + * @author <a href="mailto:[EMAIL PROTECTED]">Vincent Siveton</a> + * @version $Id$ + * @since 1.0-beta-1 + */ +public abstract class AbstractSink + implements Sink +{ + private Log log; + + /** [EMAIL PROTECTED] */ + public void enableLogging( Log log ) + { + this.log = log; + } + + /** + * Returns a logger for this sink. + * If no logger has been configured, a new SystemStreamLog is returned. + * + * @return Log + */ + protected Log getLog() + { + if ( log == null ) + { + log = new SystemStreamLog(); + } + + return log; + } +} Propchange: maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/AbstractSink.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/AbstractSink.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Modified: maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/SinkAdapter.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/SinkAdapter.java?rev=628059&r1=628058&r2=628059&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/SinkAdapter.java (original) +++ maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/SinkAdapter.java Fri Feb 15 05:22:30 2008 @@ -28,7 +28,7 @@ * @version $Id$ */ public class SinkAdapter - implements Sink + extends AbstractSink { /** [EMAIL PROTECTED] */ public void head() Modified: maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/WellformednessCheckingSink.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/WellformednessCheckingSink.java?rev=628059&r1=628058&r2=628059&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/WellformednessCheckingSink.java (original) +++ maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/WellformednessCheckingSink.java Fri Feb 15 05:22:30 2008 @@ -19,7 +19,7 @@ * under the License. */ -import org.apache.maven.doxia.sink.Sink; +import org.apache.maven.doxia.sink.AbstractSink; import java.util.LinkedList; import java.util.List; @@ -33,7 +33,7 @@ * @version $Id$ */ public class WellformednessCheckingSink - implements Sink + extends AbstractSink { private Stack elements = new Stack(); Modified: maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/TextSink.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/TextSink.java?rev=628059&r1=628058&r2=628059&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/TextSink.java (original) +++ maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/TextSink.java Fri Feb 15 05:22:30 2008 @@ -27,7 +27,7 @@ * Useful for testing purposes. */ public class TextSink - implements Sink + extends AbstractSink { /** System-dependent end-of-line string. */ @@ -582,7 +582,7 @@ } catch ( IOException e ) { - // TODO: log + getLog().warn( "Could not flush sink: " + e.getMessage(), e ); } } @@ -595,7 +595,7 @@ } catch ( IOException e ) { - // TODO: log + getLog().warn( "Could not close sink: " + e.getMessage(), e ); } } @@ -613,7 +613,7 @@ } catch ( IOException e ) { - // TODO: log + getLog().warn( "Could not write to sink: " + e.getMessage(), e ); } } @@ -627,6 +627,4 @@ write( text ); write( EOL ); } - - } Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java?rev=628059&r1=628058&r2=628059&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java Fri Feb 15 05:22:30 2008 @@ -56,7 +56,7 @@ /** The source content of the input reader. Used to pass into macros. */ private String sourceContent; - /** True if a <script></script> block is read. CDATA sections within are handled as rawText. */ + /** True if a <script></script> block is read. CDATA sections within are handled as rawText. */ private boolean scriptBlock; /** Empty elements don't write a closing tag. */ @@ -215,7 +215,14 @@ { // TODO: remove handleRawText( sink, parser ); - // TODO: log( "Unrecognized tag!" ); + if ( getLog().isWarnEnabled() ) + { + String position = "[" + parser.getLineNumber() + ":" + + parser.getColumnNumber() + "]"; + String tag = "<" + parser.getName() + ">"; + + getLog().warn( "Unrecognized tag: " + tag + " at " + position ); + } } } Modified: maven/doxia/doxia/trunk/doxia-sink-api/pom.xml URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-sink-api/pom.xml?rev=628059&r1=628058&r2=628059&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-sink-api/pom.xml (original) +++ maven/doxia/doxia/trunk/doxia-sink-api/pom.xml Fri Feb 15 05:22:30 2008 @@ -21,12 +21,21 @@ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> + <parent> <artifactId>doxia</artifactId> <groupId>org.apache.maven.doxia</groupId> <version>1.0-beta-1-SNAPSHOT</version> </parent> + <artifactId>doxia-sink-api</artifactId> <name>Doxia :: Sink API</name> <description>Doxia Sink API.</description> + + <dependencies> + <dependency> + <groupId>org.apache.maven.doxia</groupId> + <artifactId>doxia-logging-api</artifactId> + </dependency> + </dependencies> </project> Modified: maven/doxia/doxia/trunk/doxia-sink-api/src/main/java/org/apache/maven/doxia/sink/Sink.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-sink-api/src/main/java/org/apache/maven/doxia/sink/Sink.java?rev=628059&r1=628058&r2=628059&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-sink-api/src/main/java/org/apache/maven/doxia/sink/Sink.java (original) +++ maven/doxia/doxia/trunk/doxia-sink-api/src/main/java/org/apache/maven/doxia/sink/Sink.java Fri Feb 15 05:22:30 2008 @@ -19,6 +19,8 @@ * under the License. */ +import org.apache.maven.doxia.logging.LogEnabled; + /** * A <i>Sink</i> consumes Doxia events in a resultant output format like * Docbook, PDF, or XHTML. @@ -54,6 +56,7 @@ * @version $Id$ */ public interface Sink + extends LogEnabled { /** * The Plexus Sink Role Modified: maven/doxia/doxia/trunk/pom.xml URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/pom.xml?rev=628059&r1=628058&r2=628059&view=diff ============================================================================== --- maven/doxia/doxia/trunk/pom.xml (original) +++ maven/doxia/doxia/trunk/pom.xml Fri Feb 15 05:22:30 2008 @@ -21,12 +21,14 @@ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> + <parent> <groupId>org.apache.maven</groupId> <artifactId>maven-parent</artifactId> <version>7</version> <relativePath>../../pom/maven/pom.xml</relativePath> </parent> + <groupId>org.apache.maven.doxia</groupId> <artifactId>doxia</artifactId> <version>1.0-beta-1-SNAPSHOT</version> @@ -199,6 +201,11 @@ </dependency> <dependency> <groupId>org.apache.maven.doxia</groupId> + <artifactId>doxia-logging-api</artifactId> + <version>${projectVersion}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.doxia</groupId> <artifactId>doxia-core</artifactId> <version>${projectVersion}</version> </dependency> @@ -233,6 +240,7 @@ <modules> <module>doxia-core</module> + <module>doxia-logging-api</module> <module>doxia-sink-api</module> <module>doxia-modules</module> <module>doxia-book</module>