Author: trygvis Date: Thu Jul 13 05:32:43 2006 New Revision: 421602 URL: http://svn.apache.org/viewvc?rev=421602&view=rev Log: o Adding a version to make sure a working Plexus plugin is used. o Adding the ability to give a file= argument to the Snippet macro. Useful to include files that's in the same checkout. Adding a basedir parameter to the MacroRequest. This parameter is currently set to File( "" ) which is not correct in all cases.
Modified: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/MacroExecutionException.java maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/MacroRequest.java maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetMacro.java maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractParser.java maven/doxia/trunk/pom.xml Modified: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/MacroExecutionException.java URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/MacroExecutionException.java?rev=421602&r1=421601&r2=421602&view=diff ============================================================================== --- maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/MacroExecutionException.java (original) +++ maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/MacroExecutionException.java Thu Jul 13 05:32:43 2006 @@ -24,6 +24,11 @@ public class MacroExecutionException extends Exception { + public MacroExecutionException( String message ) + { + super( message ); + } + public MacroExecutionException( String message, Throwable cause ) { super( message, cause ); Modified: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/MacroRequest.java URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/MacroRequest.java?rev=421602&r1=421601&r2=421602&view=diff ============================================================================== --- maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/MacroRequest.java (original) +++ maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/MacroRequest.java Thu Jul 13 05:32:43 2006 @@ -17,6 +17,7 @@ */ import java.util.Map; +import java.io.File; /** * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a> @@ -24,16 +25,29 @@ */ public class MacroRequest { + private File basedir; + private Map parameters; - public Map getParameters() + public MacroRequest( Map parameters, File basedir ) { - return parameters; + this.parameters = parameters; + this.basedir = basedir; } - public MacroRequest( Map parameters ) + public File getBasedir() { - this.parameters = parameters; + return basedir; + } + + public void setBasedir( File basedir ) + { + this.basedir = basedir; + } + + public Map getParameters() + { + return parameters; } public Object getParameter( String key ) Modified: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetMacro.java URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetMacro.java?rev=421602&r1=421601&r2=421602&view=diff ============================================================================== --- maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetMacro.java (original) +++ maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetMacro.java Thu Jul 13 05:32:43 2006 @@ -20,8 +20,12 @@ import org.apache.maven.doxia.macro.MacroExecutionException; import org.apache.maven.doxia.macro.MacroRequest; import org.apache.maven.doxia.sink.Sink; +import org.codehaus.plexus.util.StringUtils; +import org.codehaus.plexus.util.FileUtils; import java.io.IOException; +import java.io.File; +import java.io.FileNotFoundException; import java.net.MalformedURLException; import java.net.URL; import java.util.HashMap; @@ -53,29 +57,50 @@ String urlParam = (String) request.getParameter( "url" ); - required( urlParam, "url" ); + String fileParam = (String) request.getParameter( "file" ); - URL url; + StringBuffer snippet; - try + if ( !StringUtils.isEmpty( urlParam ) ) { - url = new URL( urlParam ); + try + { + snippet = getSnippet( new URL( urlParam ), id ); + } + catch ( MalformedURLException e ) + { + throw new IllegalArgumentException( urlParam + " is a malformed URL" ); + } + catch ( IOException e ) + { + throw new MacroExecutionException( "Error reading snippet", e ); + } } - catch ( MalformedURLException e ) + else if ( !StringUtils.isEmpty( fileParam ) ) { - throw new IllegalArgumentException( urlParam + " is a malformed URL" ); - } + File f = new File( fileParam ); - String lang = (String) request.getParameter( "lang" ); + if ( !f.isAbsolute() ) + { + f = new File( request.getBasedir(), fileParam ); + } - StringBuffer snippet = null; - try - { - snippet = getSnippet( url, id ); + try + { + snippet = new StringBuffer( FileUtils.fileRead( f ) ); + } + catch ( FileNotFoundException e ) + { + throw new MacroExecutionException( "No such file: '" + f.getAbsolutePath() + "'." ); + } + catch ( IOException e ) + { + throw new MacroExecutionException( "Error while readin file: '" + f.getAbsolutePath() + "'.", e ); + } } - catch ( IOException e ) + else { - throw new MacroExecutionException( "Error reading snippet", e ); + throw new IllegalArgumentException( "Either the 'url' or the 'file' param has to be given." ); } sink.verbatim( true ); @@ -85,7 +110,7 @@ sink.verbatim_(); } - StringBuffer getSnippet( URL url, String id ) + private StringBuffer getSnippet( URL url, String id ) throws IOException { StringBuffer result; @@ -109,7 +134,7 @@ if ( debug ) { - result.append( "(Fetched from url, cache content " + cache + ")" ); + result.append( "(Fetched from url, cache content " ).append( cache ).append( ")" ); } } Modified: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java?rev=421602&r1=421601&r2=421602&view=diff ============================================================================== --- maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java (original) +++ maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java Thu Jul 13 05:32:43 2006 @@ -564,7 +564,7 @@ sink.definitionList_(); } - private final void nextLine() + private void nextLine() throws AptParseException { line = source.getNextLine(); @@ -782,17 +782,17 @@ // ----------------------------------------------------------------------- - private static final boolean isOctalChar( char c ) + private static boolean isOctalChar( char c ) { return ( c >= '0' && c <= '7' ); } - private static final boolean isHexChar( char c ) + private static boolean isHexChar( char c ) { return ( ( c >= '0' && c <= '9' ) || ( c >= 'a' && c <= 'f' ) || ( c >= 'A' && c <= 'F' ) ); } - private static final char charAt( String string, int length, int i ) + private static char charAt( String string, int length, int i ) { return ( i < length ) ? string.charAt( i ) : '\0'; } @@ -1106,7 +1106,7 @@ flushTraversed( buffer, sink ); } - private static final void flushTraversed( StringBuffer buffer, Sink sink ) + private static void flushTraversed( StringBuffer buffer, Sink sink ) { if ( buffer.length() > 0 ) { @@ -1762,7 +1762,7 @@ int columns = 0; StringBuffer[] cells = null; boolean[] headers = null; - boolean grid = false; + boolean grid; AptParser.this.sink.table(); @@ -2138,7 +2138,7 @@ parameters.put( param[0], param[1] ); } - MacroRequest request = new MacroRequest( parameters ); + MacroRequest request = new MacroRequest( parameters, getBasedir() ); try { Modified: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java?rev=421602&r1=421601&r2=421602&view=diff ============================================================================== --- maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java (original) +++ maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java Thu Jul 13 05:32:43 2006 @@ -85,7 +85,7 @@ { sink.anchor( parser.getAttributeValue( null, "name" ) ); sink.anchor_(); - + sink.section1(); sink.sectionTitle1(); @@ -98,7 +98,7 @@ { sink.anchor( parser.getAttributeValue( null, "name" ) ); sink.anchor_(); - + sink.section2(); sink.sectionTitle2(); @@ -172,7 +172,7 @@ parameters.put( parser.getAttributeName( i ), parser.getAttributeValue( i ) ); } - MacroRequest request = new MacroRequest( parameters ); + MacroRequest request = new MacroRequest( parameters, getBasedir() ); executeMacro( macroId, request, sink ); } Modified: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractParser.java URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractParser.java?rev=421602&r1=421601&r2=421602&view=diff ============================================================================== --- maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractParser.java (original) +++ maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractParser.java Thu Jul 13 05:32:43 2006 @@ -22,6 +22,9 @@ import org.apache.maven.doxia.macro.manager.MacroManager; import org.apache.maven.doxia.macro.manager.MacroNotFoundException; import org.apache.maven.doxia.sink.Sink; +import org.codehaus.plexus.util.StringUtils; + +import java.io.File; /** * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a> @@ -44,5 +47,22 @@ Macro macro = macroManager.getMacro( macroId ); macro.execute( sink, request ); + } + + protected File getBasedir() + { + // TODO: This is baaad, it should come in with the request. + + String basedir = System.getProperty( "basedir" ); + + if ( basedir != null ) + { + return new File( basedir ); + } + + System.out.println( + "new File( new File( \"\" ).getAbsolutePath() ) = " + new File( new File( "" ).getAbsolutePath() ) ); + + return new File( new File( "" ).getAbsolutePath() ); } } Modified: maven/doxia/trunk/pom.xml URL: http://svn.apache.org/viewvc/maven/doxia/trunk/pom.xml?rev=421602&r1=421601&r2=421602&view=diff ============================================================================== --- maven/doxia/trunk/pom.xml (original) +++ maven/doxia/trunk/pom.xml Thu Jul 13 05:32:43 2006 @@ -46,6 +46,7 @@ <plugin> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-maven-plugin</artifactId> + <version>1.2</version> <executions> <execution> <goals> @@ -63,6 +64,7 @@ <module>doxia-decoration-model</module> <module>doxia-modules</module> <module>doxia-sandbox</module> + <module>doxia-site</module> </modules> <distributionManagement> <site>