[hibernate-commits] Hibernate SVN: r11680 - in trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main: java/org/jboss/maven/plugin/docbook/gen/render and 5 other directories.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Tue Jun 12 13:51:25 EDT 2007


Author: steve.ebersole at jboss.com
Date: 2007-06-12 13:51:25 -0400 (Tue, 12 Jun 2007)
New Revision: 11680

Added:
   trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/AbstractDocBookMojo.java
   trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/ResourceMojo.java
   trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/render/Formatting.java
   trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/util/StandardDocBookFormatSpecification.java
   trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/catalog/
   trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/catalog/AbstractCatalogManager.java
   trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/catalog/ExplicitCatalogManager.java
   trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/catalog/ImplicitCatalogManager.java
   trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/CurrentVersionResolver.java
   trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/ExplicitUrnResolver.java
   trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/RelativeJarUriResolver.java
   trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/VersionResolver.java
Removed:
   trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/Settings.java
   trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/util/FormatType.java
   trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/AbstractCatalogManager.java
   trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/DocBookStylesheetResolver.java
   trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/ExplicitCatalogManager.java
   trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/StandardCatalogManager.java
Modified:
   trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/Format.java
   trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/GenerationMojo.java
   trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/Options.java
   trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/render/BasicRenderer.java
   trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/render/HtmlRenderer.java
   trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/render/PdfRenderer.java
   trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/render/Renderer.java
   trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/render/RendererFactory.java
   trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/TransformerFactory.java
   trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/ResolverChain.java
   trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/resources/META-INF/plexus/components.xml
Log:
initial phase 2 dev

Added: trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/AbstractDocBookMojo.java
===================================================================
--- trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/AbstractDocBookMojo.java	                        (rev 0)
+++ trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/AbstractDocBookMojo.java	2007-06-12 17:51:25 UTC (rev 11680)
@@ -0,0 +1,169 @@
+package org.jboss.maven.plugin.docbook.gen;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.archiver.manager.ArchiverManager;
+import org.jboss.maven.plugin.docbook.gen.render.Formatting;
+import org.jboss.maven.plugin.docbook.gen.render.RenderingException;
+import org.jboss.maven.plugin.docbook.gen.util.StandardDocBookFormatSpecification;
+import org.jboss.maven.plugin.docbook.gen.xslt.XSLTException;
+
+/**
+ * Basic support for the various DocBook mojos in this package.  Mainly, we are
+ * defining common configuration attributes of the packaging.
+ *
+ * @author Steve Ebersole
+ */
+public abstract class AbstractDocBookMojo extends AbstractMojo {
+    /**
+	 * INTERNAL : The project being built
+	 *
+     * @parameter expression="${project}"
+     * @required
+     * @readonly
+     */
+    protected MavenProject project;
+
+	/**
+	 * INTERNAL : The artifacts associated with the dependencies defined as part
+	 * of the project to which we are being attached.
+	 *
+	 * @parameter expression="${project.artifacts}"
+     * @required
+     * @readonly
+	 */
+	protected Set projectArtifacts;
+
+	/**
+	 * INTERNAL : The artifacts associated to the dependencies defined as part
+	 * of our configuration within the project to which we are being attached.
+	 *
+	 * @parameter expression="${plugin.artifacts}"
+     * @required
+     * @readonly
+	 */
+	protected List pluginArtifacts;
+
+    /**
+     * INTERNAL : used to get reference to environemtn Archiver/UnArchiver.
+     *
+     * @parameter expression="${component.org.codehaus.plexus.archiver.manager.ArchiverManager}"
+     * @required
+     * @readonly
+     */
+    protected ArchiverManager archiverManager;
+
+	/**
+	 * The name of the document (relative to sourceDirectory) which is the
+	 * document to be rendered.
+	 *
+	 * @parameter
+	*  @required
+	 */
+	protected String sourceDocumentName;
+
+	/**
+	 * The directory where the sources are located.
+	 *
+	 * @parameter expression="${basedir}/src/main/docbook"
+	 */
+	protected File sourceDirectory;
+
+	/**
+	 * The directory where the output will be written.
+	 *
+	 * @parameter expression="${basedir}/target/docbook"
+	 */
+	protected File targetDirectory;
+
+	/**
+	 * The directory where "docbook resource" staging occurs.  Mainly this is
+	 * used for (1) image/css staging for html-based output; (2) base directory
+	 * for value of <tt>img.src.path</tt> DocBook XSLT parameter for fop-based 
+	 * formattings.
+	 *
+	 * @parameter expression="${basedir}/target/staging"
+	 * @required
+	 * @readonly
+	 */
+	protected File stagingDirectory;
+
+	/**
+	 * The formats in which to perform rendering.
+	 *
+     * @parameter
+	*  @required
+	 */
+	protected Format[] formats;
+
+	/**
+	 * Configurable options
+	 *
+     * @parameter
+	 */
+	protected Options options;
+
+	/**
+	 * The override method to perform the actual processing of the
+	 * mojo.
+	 * 
+	 * @param formattings The fomattings configured for render
+	 * @param resources
+	 * @throws RenderingException
+	 * @throws XSLTException
+	 */
+	protected abstract void process(Formatting[] formattings, Artifact[] resources) throws RenderingException, XSLTException;
+
+	public final void execute() throws MojoExecutionException, MojoFailureException {
+		try {
+			process( buildFormattings(), collectDocBookResourceDependentArtifacts() );
+		}
+		catch ( XSLTException e ) {
+			throw new MojoExecutionException( "XSLT problem", e );
+		}
+		catch ( RenderingException e ) {
+			throw new MojoExecutionException( "Rendering problem", e );
+		}
+	}
+
+	private Formatting[] buildFormattings() {
+		Formatting[] formattings = new Formatting[ formats.length ];
+		for ( int i = 0; i < formats.length; i++ ) {
+			formattings[i] = new Formatting( StandardDocBookFormatSpecification.parse( formats[i].getFormatName() ), formats[i] );
+		}
+		return formattings;
+	}
+
+	private Artifact[] collectDocBookResourceDependentArtifacts() {
+		List artifacts = new ArrayList();
+		addDocBookResourceArtifacts( artifacts, projectArtifacts );
+		addDocBookResourceArtifacts( artifacts, pluginArtifacts );
+		return ( Artifact[] ) artifacts.toArray( new Artifact[ artifacts.size() ] );
+	}
+
+	private void addDocBookResourceArtifacts(Collection target, Collection source) {
+		Iterator itr = source.iterator();
+		while ( itr.hasNext() ) {
+			final Artifact artifact = ( Artifact ) itr.next();
+			getLog().info( "checking artifact : "+ artifact.getId() + " [" + artifact.getType() + "]" );
+			if ( "docbook-xslt".equals( artifact.getType() ) ||
+					"docbook-resources".equals( artifact.getType() ) ) {
+				target.add( artifact );
+			}
+			// temp...
+			else if ( "docbook-xslt".equals( artifact.getArtifactId() ) ) {
+				target.add( artifact );
+			}
+		}
+	}
+}

Modified: trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/Format.java
===================================================================
--- trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/Format.java	2007-06-11 13:24:05 UTC (rev 11679)
+++ trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/Format.java	2007-06-12 17:51:25 UTC (rev 11680)
@@ -1,39 +1,65 @@
 package org.jboss.maven.plugin.docbook.gen;
 
-import org.jboss.maven.plugin.docbook.gen.util.FormatType;
-
 /**
- * {@inheritDoc}
+ * Represents a user format specification.
  *
  * @author Steve Ebersole
  */
 public class Format {
 	private String formatName;
+
+	private String targetFileExtension;
+	private String finalName;
 	private String stylesheetResource;
-	private String finalName;
+	private Boolean imagePathSettingRequired;
+	private Boolean imageCopyingRequired;
+	private Boolean doingChunking;
 
 	public Format() {
 	}
 
-	public Format(String formatName, String stylesheetResource, String finalName) {
+	public Format(
+			String formatName,
+			String targetFileExtension,
+			String finalName,
+			String stylesheetResource,
+			Boolean imagePathSettingRequired,
+			Boolean imageCopyingRequired,
+			Boolean doingChunking) {
 		this.formatName = formatName;
+		this.targetFileExtension = targetFileExtension;
+		this.finalName = finalName;
 		this.stylesheetResource = stylesheetResource;
-		this.finalName = finalName;
+		this.imagePathSettingRequired = imagePathSettingRequired;
+		this.imageCopyingRequired = imageCopyingRequired;
+		this.doingChunking = doingChunking;
 	}
 
 	public String getFormatName() {
 		return formatName;
 	}
 
-	public String getStylesheetResource() {
-		return stylesheetResource;
+	public String getTargetFileExtension() {
+		return targetFileExtension;
 	}
 
 	public String getFinalName() {
 		return finalName;
 	}
 
-	public FormatType getFormatType() {
-		return FormatType.parse( formatName );
+	public String getStylesheetResource() {
+		return stylesheetResource;
 	}
+
+	public Boolean getImagePathSettingRequired() {
+		return imagePathSettingRequired;
+	}
+
+	public Boolean getImageCopyingRequired() {
+		return imageCopyingRequired;
+	}
+
+	public Boolean getDoingChunking() {
+		return doingChunking;
+	}
 }

Modified: trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/GenerationMojo.java
===================================================================
--- trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/GenerationMojo.java	2007-06-11 13:24:05 UTC (rev 11679)
+++ trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/GenerationMojo.java	2007-06-12 17:51:25 UTC (rev 11680)
@@ -2,64 +2,25 @@
 
 import java.io.File;
 
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.artifact.Artifact;
 import org.codehaus.plexus.util.FileUtils;
-import org.jboss.maven.plugin.docbook.gen.xslt.XSLTException;
+import org.jboss.maven.plugin.docbook.gen.render.Formatting;
 import org.jboss.maven.plugin.docbook.gen.render.RendererFactory;
 import org.jboss.maven.plugin.docbook.gen.render.RenderingException;
+import org.jboss.maven.plugin.docbook.gen.xslt.XSLTException;
 
 /**
  * A DocBook plugin based on the excellent docbkx-maven-plugin, but which
  * specifically handles language translations in a more transparent way.
  *
  * @goal generate
- * @phase package
+ * @phase compile
  *
  * @author Steve Ebersole
  */
-public class GenerationMojo extends AbstractMojo {
+public class GenerationMojo extends AbstractDocBookMojo {
 
-	/**
-	 * The directory where the sources are located.
-	 *
-	 * @parameter expression="${basedir}/src/main/docbook"
-	 */
-	private File sourceDirectory;
-
-	/**
-	 * The directory where the output will be written.
-	 *
-	 * @parameter expression="${basedir}/target/docbook"
-	 */
-	private File targetDirectory;
-
-	/**
-	 * The name of the document (relative to sourceDirectory) which is the
-	 * document to be rendered.
-	 *
-	 * @parameter
-	*  @required
-	 */
-	private String sourceDocumentName;
-
-	/**
-	 * The formats in which to perform rendering.
-	 *
-     * @parameter
-	*  @required
-	 */
-	private Format[] formats;
-
-	/**
-	 * Configurable options
-	 *
-     * @parameter
-	 */
-	private Options options;
-
-	public void execute() throws MojoExecutionException, MojoFailureException {
+	protected void process(Formatting[] formattings, Artifact[] resources) throws XSLTException, RenderingException {
 		if ( !sourceDirectory.exists() ) {
 			getLog().info( "sourceDirectory [" + sourceDirectory.getAbsolutePath() + "] did not exist" );
 			return;
@@ -74,18 +35,18 @@
 			FileUtils.mkdir( targetDirectory.getAbsolutePath() );
 		}
 
-		RendererFactory rendererFactory = new RendererFactory( options, source, targetDirectory, getLog() );
-		try {
-			for ( int i = 0; i < formats.length; i++ ) {
-				rendererFactory.buildRenderer( formats[i] ).render( source );
-			}
-		}
-		catch ( XSLTException e ) {
-			throw new MojoExecutionException( "XSLT problem", e );
-		}
-		catch ( RenderingException e ) {
-			throw new MojoExecutionException( "Rendering problem", e );
-		}
+		RendererFactory rendererFactory = new RendererFactory( 
+				options,
+				source,
+				targetDirectory,
+				stagingDirectory,
+				project,
+				getLog()
+		);
 
+		for ( int i = 0; i < formattings.length; i++ ) {
+			rendererFactory.buildRenderer( formattings[i] ).render( source );
+		}
 	}
+
 }

Modified: trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/Options.java
===================================================================
--- trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/Options.java	2007-06-11 13:24:05 UTC (rev 11679)
+++ trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/Options.java	2007-06-12 17:51:25 UTC (rev 11680)
@@ -3,7 +3,7 @@
 import java.util.Properties;
 
 /**
- * {@inheritDoc}
+ * A (detachable) representation of the user configuration.
  *
  * @author Steve Ebersole
  */
@@ -12,6 +12,14 @@
 	private String[] catalogs;
 	private String xmlTransformerType;
 	private Properties transformerParameters;
+	private boolean useRelativeImageUris = true;
+	// TODO : try as hard as I possibly can to remove this :(
+	// 		this is gettable either from (1) VERSION (fm:project/fm:Version) or
+	// 		(2) the dependencies making up the execution classpath
+	//
+	//		In #1, it would require had parsing :(, and #2 I've yet to actually
+	//		find a wsay to do this...
+	private String docbookVersion;
 
 	public Options() {
 	}
@@ -20,11 +28,15 @@
 			boolean xincludeSupported,
 			String[] catalogs,
 			String xmlTransformerType,
-			Properties transformerParameters) {
+			Properties transformerParameters,
+			boolean useRelativeImageUris,
+			String docBookVersion) {
 		this.xincludeSupported = xincludeSupported;
 		this.catalogs = catalogs;
 		this.xmlTransformerType = xmlTransformerType;
 		this.transformerParameters = transformerParameters;
+		this.useRelativeImageUris = useRelativeImageUris;
+		this.docbookVersion = docBookVersion;
 	}
 
 	public boolean isXincludeSupported() {
@@ -43,4 +55,11 @@
 		return transformerParameters;
 	}
 
+	public boolean isUseRelativeImageUris() {
+		return useRelativeImageUris;
+	}
+
+	public String getDocbookVersion() {
+		return docbookVersion;
+	}
 }

Added: trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/ResourceMojo.java
===================================================================
--- trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/ResourceMojo.java	                        (rev 0)
+++ trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/ResourceMojo.java	2007-06-12 17:51:25 UTC (rev 11680)
@@ -0,0 +1,93 @@
+package org.jboss.maven.plugin.docbook.gen;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.Field;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.resources.ResourcesMojo;
+import org.codehaus.plexus.archiver.ArchiverException;
+import org.codehaus.plexus.archiver.UnArchiver;
+import org.codehaus.plexus.archiver.manager.NoSuchArchiverException;
+import org.jboss.maven.plugin.docbook.gen.render.Formatting;
+import org.jboss.maven.plugin.docbook.gen.render.RenderingException;
+import org.jboss.maven.plugin.docbook.gen.xslt.XSLTException;
+
+/**
+ * This mojo's purpose within the plugin is to process resources defined
+ * by various inputs, moving them into a *single* staging directory for use
+ * during XSLT processing; the DocBook XSLT only allow defining a single
+ * <tt>img.src.path</tt> value.
+ *
+ * @goal resources
+ * @phase process-resources
+ *
+ * @author Steve Ebersole
+ */
+public class ResourceMojo extends AbstractDocBookMojo {
+
+	protected void process(Formatting[] formattings, Artifact[] resources)
+			throws RenderingException, XSLTException {
+		processProjectResources();
+		processDependencyResources( resources );
+	}
+
+	private void processProjectResources() throws RenderingException {
+		ResourcesMojo mavenResourcesMojo = new ResourcesMojo();
+		injectMojoValue( mavenResourcesMojo, "outputDirectory", stagingDirectory.getAbsolutePath() );
+		injectMojoValue( mavenResourcesMojo, "resources", project.getResources() );
+		injectMojoValue( mavenResourcesMojo, "project", project );
+		injectMojoValue( mavenResourcesMojo, "filters", project.getBuild().getFilters() );
+		mavenResourcesMojo.setLog( getLog() );
+		try {
+			mavenResourcesMojo.execute();
+		}
+		catch ( MojoExecutionException e ) {
+			throw new RenderingException( "unable to process project resources" );
+		}
+	}
+
+	private void injectMojoValue(ResourcesMojo mavenResourcesMojo, String name, Object value) throws RenderingException {
+		try {
+			Field field = ResourcesMojo.class.getDeclaredField( name );
+			if ( !field.isAccessible() ) {
+				field.setAccessible( true );
+			}
+			field.set( mavenResourcesMojo, value );
+		}
+		catch ( NoSuchFieldException e ) {
+			throw new RenderingException( "unable to locate mojo property field [" + name + "]", e );
+		}
+		catch ( IllegalAccessException e ) {
+			throw new RenderingException( "unable to access property field to set value", e );
+		}
+	}
+
+	private void processDependencyResources(Artifact[] resources)
+			throws RenderingException {
+		for ( int i = 0; i < resources.length; i++ ) {
+			processDependencyResource( resources[i].getFile(), stagingDirectory );
+		}
+	}
+
+	protected void processDependencyResource(File file, File target) throws RenderingException {
+		getLog().info( "unpacking dependency resource [" + file.getAbsolutePath() + "] to staging-dir [" + target.getAbsolutePath() + "]" );
+		try {
+            target.mkdirs();
+            UnArchiver unArchiver = archiverManager.getUnArchiver( file );
+            unArchiver.setSourceFile( file );
+            unArchiver.setDestDirectory( target );
+            unArchiver.extract();
+        }
+        catch ( NoSuchArchiverException e ) {
+            throw new RenderingException( "Unknown archiver type", e );
+        }
+        catch ( ArchiverException e ) {
+            throw new RenderingException( "Error unpacking file [" + file + "] to [" + target + "]", e );
+        }
+        catch ( IOException e ) {
+            throw new RenderingException( "Error unpacking file [" + file + "] to [" + target + "]", e );
+        }
+    }
+}

Deleted: trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/Settings.java
===================================================================
--- trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/Settings.java	2007-06-11 13:24:05 UTC (rev 11679)
+++ trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/Settings.java	2007-06-12 17:51:25 UTC (rev 11680)
@@ -1,60 +0,0 @@
-package org.jboss.maven.plugin.docbook.gen;
-
-import java.io.File;
-import java.util.List;
-
-import org.apache.xml.resolver.CatalogManager;
-import org.apache.maven.plugin.logging.Log;
-
-/**
- * {@inheritDoc}
- *
- * @author Steve Ebersole
- */
-public class Settings {
-	private final boolean xincludeSupported;
-	private final File sourceDocument;
-	private final File targetDirectory;
-	private final List entities;
-	private final CatalogManager catalogManager;
-	private final Log log;
-
-	public Settings(
-			boolean xincludeSupported,
-			File sourceDocument,
-			File targetDirectory,
-			List entities,
-			CatalogManager catalogManager,
-			Log log) {
-		this.xincludeSupported = xincludeSupported;
-		this.sourceDocument = sourceDocument;
-		this.targetDirectory = targetDirectory;
-		this.entities = entities;
-		this.catalogManager = catalogManager;
-		this.log = log;
-	}
-
-	public boolean isXincludeSupported() {
-		return xincludeSupported;
-	}
-
-	public File getSourceDocument() {
-		return sourceDocument;
-	}
-
-	public File getTargetDirectory() {
-		return targetDirectory;
-	}
-
-	public List getEntities() {
-		return entities;
-	}
-
-	public CatalogManager getCatalogManager() {
-		return catalogManager;
-	}
-
-	public Log getLog() {
-		return log;
-	}
-}

Modified: trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/render/BasicRenderer.java
===================================================================
--- trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/render/BasicRenderer.java	2007-06-11 13:24:05 UTC (rev 11679)
+++ trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/render/BasicRenderer.java	2007-06-12 17:51:25 UTC (rev 11680)
@@ -14,7 +14,6 @@
 import javax.xml.parsers.SAXParserFactory;
 import javax.xml.parsers.ParserConfigurationException;
 
-import org.jboss.maven.plugin.docbook.gen.Format;
 import org.jboss.maven.plugin.docbook.gen.xslt.XSLTException;
 import org.jboss.maven.plugin.docbook.gen.util.ResourceHelper;
 import org.apache.maven.plugin.logging.Log;
@@ -35,17 +34,33 @@
 	public static final String DTD_LOADING_FEATURE = "http://apache.org/xml/features/nonvalidating/load-external-dtd";
 
 	protected final RendererFactory factory;
-	protected final Format format;
+	protected final Formatting formatting;
 
-	public BasicRenderer(RendererFactory factory, Format format) {
+	public BasicRenderer(RendererFactory factory, Formatting formatting) {
 		this.factory = factory;
-		this.format = format;
+		this.formatting = formatting;
 	}
 
+	public File prepareDirectory() throws RenderingException {
+		File target = new File( factory.getTargetDirectory(), formatting.getFormatName() );
+		if ( ! target.exists() ) {
+			FileUtils.mkdir( target.getAbsolutePath() );
+		}
+		if ( formatting.isImageCopyingRequired() ) {
+			try {
+				FileUtils.copyDirectory( factory.getStagingDirectory(), target );
+			}
+			catch ( IOException e ) {
+				throw new RenderingException( "unable to copy images", e );
+			}
+		}
+		return target;
+	}
+
 	public final void render(File source) throws RenderingException, XSLTException {
-		getLog().debug( "starting formatting [" + format.getFormatName() + "]" );
+		getLog().debug( "starting formatting [" + formatting.getFormatName() + "]" );
 
-		File target = prepareTarget( source );
+		File target = prepareTarget( prepareDirectory(), source );
 
 		Transformer transformer = buildTransformer( target );
 		Source transformationSource = buildSource( source );
@@ -62,10 +77,10 @@
 		
 	}
 
-	private File prepareTarget(File source) throws RenderingException {
+	private File prepareTarget(File directory, File source) throws RenderingException {
 		String targetFileName = deduceTargetFileName( source );
 		getLog().debug( "preparing target file [" + targetFileName + "]" );
-		File target = new File( factory.getTargetDirectory(), targetFileName );
+		File target = new File( directory, targetFileName );
 		if ( target.exists() ) {
 			if ( !target.delete() ) {
 				getLog().warn( "unable to clean up previous output file [" + target.getAbsolutePath() + "]" );
@@ -83,30 +98,39 @@
 	}
 
 	private String deduceTargetFileName(File source) {
-		return format.getFinalName() == null
-				? FileUtils.basename( source.getAbsolutePath() ) + format.getFormatType().getStandardFileExtension()
-				: format.getFinalName();
+		return formatting.getNamingStrategy().deduceTargetFileName( source );
 	}
 
 	protected Transformer buildTransformer(File targetFile)
 			throws RenderingException, XSLTException {
 		final URL transformationStylesheet = resolveTransformationStylesheet();
 		Transformer transformer = factory.getTransformerFactory()
-				.buildTransformer( format.getFormatType(), transformationStylesheet );
-		// "inclusion" of graphics in html is much different than other formats
-		// REF: http://sagehill.net/docbookxsl/GraphicsLocations.html
-		if ( format.getFormatType().isImagePathNeeded() ) {
-			String imgSrcPath = factory.getTargetDirectory().getAbsolutePath() + "/";
+				.buildTransformer( formatting, transformationStylesheet );
+		if ( formatting.isImagePathSettingRequired() ) {
+			String imgSrcPath = factory.getStagingDirectory().getAbsolutePath() + "/";
 			getLog().debug( "setting 'img.src.path' [" + imgSrcPath + "]" );
 			transformer.setParameter( "img.src.path", imgSrcPath );
 		}
+		if ( factory.getOptions().isUseRelativeImageUris() ) {
+			getLog().debug( "enforcing retention of relative image URIs" );
+			transformer.setParameter( "keep.relative.image.uris", "0" );
+		}
+		if ( formatting.isDoingChunking() ) {
+			getLog().debug( "Chunking output." );
+			String rootFilename = targetFile.getName();
+			rootFilename = rootFilename.substring( 0, rootFilename.lastIndexOf( '.' ) );
+			transformer.setParameter( "root.filename", rootFilename );
+			transformer.setParameter( "base.dir", targetFile.getParent() + File.separator );
+                        transformer.setParameter( "manifest.in.base.dir", "1" );
+		}
 		return transformer;
 	}
 
 	protected final URL resolveTransformationStylesheet() throws RenderingException {
-		return format.getStylesheetResource() != null
-				? ResourceHelper.requireResource( format.getStylesheetResource() )
-				: ResourceHelper.requireResource( format.getFormatType().getStylesheetResource() );
+		return ResourceHelper.requireResource( formatting.getStylesheetResource() );
+//		return format.getStylesheetResource() != null
+//				? ResourceHelper.requireResource( format.getStylesheetResource() )
+//				: ResourceHelper.requireResource( format.getFormatType().getStylesheetResource() );
 	}
 
 	private Source buildSource(File sourceFile) throws RenderingException {

Added: trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/render/Formatting.java
===================================================================
--- trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/render/Formatting.java	                        (rev 0)
+++ trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/render/Formatting.java	2007-06-12 17:51:25 UTC (rev 11680)
@@ -0,0 +1,103 @@
+package org.jboss.maven.plugin.docbook.gen.render;
+
+import java.io.File;
+
+import org.codehaus.plexus.util.FileUtils;
+import org.jboss.maven.plugin.docbook.gen.Format;
+import org.jboss.maven.plugin.docbook.gen.util.StandardDocBookFormatSpecification;
+
+/**
+ * Defined formatting information.  Basically stuff to either pass into the xsl
+ * transformer or stuff needed to prepare for transformation.
+ *
+ * @author Steve Ebersole
+ */
+public class Formatting {
+	private final String formatName;
+	private final String stylesheetResource;
+	private final boolean imagePathSettingRequired;
+	private final boolean imageCopyingRequired;
+	private final boolean doingChunking;
+	private final StandardDocBookFormatSpecification standardDocBookSpec;
+	private final TargetNamingStrategy namingStrategy;
+
+	public Formatting(StandardDocBookFormatSpecification standardDocBookSpec, Format userSpec) {
+		// todo : there may not be a matching standard docbook format spec...
+		if ( ! standardDocBookSpec.getName().equals( userSpec.getFormatName() ) ) {
+			throw new IllegalArgumentException( "formatting type mismatch" );
+		}
+
+		this.standardDocBookSpec = standardDocBookSpec;
+		this.formatName = userSpec.getFormatName();
+
+		this.stylesheetResource = userSpec.getStylesheetResource() == null
+				? standardDocBookSpec.getStylesheetResource()
+				: userSpec.getStylesheetResource();
+
+		this.imageCopyingRequired = userSpec.getImageCopyingRequired() == null
+				? standardDocBookSpec.isImageCopyingRequired()
+				: userSpec.getImageCopyingRequired().booleanValue();
+
+		this.imagePathSettingRequired = userSpec.getImagePathSettingRequired() == null
+				? standardDocBookSpec.isImagePathSettingRequired()
+				: userSpec.getImagePathSettingRequired().booleanValue();
+
+		this.doingChunking =userSpec.getDoingChunking() == null
+				? standardDocBookSpec.isDoingChunking()
+				: userSpec.getDoingChunking().booleanValue();
+
+		this.namingStrategy = new TargetNamingStrategy( standardDocBookSpec, userSpec );
+	}
+
+	public String getFormatName() {
+		return formatName;
+	}
+
+	public StandardDocBookFormatSpecification getStandardDocBookSpec() {
+		return standardDocBookSpec;
+	}
+
+	public String getStylesheetResource() {
+		return stylesheetResource;
+	}
+
+	public boolean isImagePathSettingRequired() {
+		return imagePathSettingRequired;
+	}
+
+	public boolean isImageCopyingRequired() {
+		return imageCopyingRequired;
+	}
+
+	public boolean isDoingChunking() {
+		return doingChunking;
+	}
+
+	public TargetNamingStrategy getNamingStrategy() {
+		return namingStrategy;
+	}
+
+	public static class TargetNamingStrategy {
+		private String targetFileExtension;
+		private String finalName;
+
+		public TargetNamingStrategy(StandardDocBookFormatSpecification standardDocBookSpec, Format userSpec) {
+			if ( userSpec.getFinalName() != null ) {
+				this.targetFileExtension = null;
+				this.finalName = userSpec.getFinalName();
+			}
+			else {
+				this.targetFileExtension = userSpec.getTargetFileExtension() == null
+						? standardDocBookSpec.getStandardFileExtension()
+						: userSpec.getTargetFileExtension();
+				this.finalName = null;
+			}
+		}
+
+		public String deduceTargetFileName(File source) {
+			return finalName == null
+				? FileUtils.basename( source.getAbsolutePath() ) + targetFileExtension
+				: finalName;
+		}
+	}
+}

Modified: trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/render/HtmlRenderer.java
===================================================================
--- trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/render/HtmlRenderer.java	2007-06-11 13:24:05 UTC (rev 11679)
+++ trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/render/HtmlRenderer.java	2007-06-12 17:51:25 UTC (rev 11680)
@@ -3,30 +3,21 @@
 import java.io.File;
 import javax.xml.transform.Transformer;
 
-import org.jboss.maven.plugin.docbook.gen.Format;
-import org.jboss.maven.plugin.docbook.gen.util.FormatType;
 import org.jboss.maven.plugin.docbook.gen.xslt.XSLTException;
 
 /**
- * {@inheritDoc}
+ * Special handling for html processing
  *
  * @author Steve Ebersole
  */
 public class HtmlRenderer extends BasicRenderer {
-	public HtmlRenderer(RendererFactory factory, Format format) {
-		super( factory, format );
+	public HtmlRenderer(RendererFactory factory, Formatting formatting) {
+		super( factory, formatting );
 	}
 
 	protected Transformer buildTransformer(File targetFile)
 			throws RenderingException, XSLTException {
 		Transformer transformer = super.buildTransformer( targetFile );
-		if ( format.getFormatType() == FormatType.HTML ) {
-			getLog().debug( "Chunking output." );
-			String rootFilename = targetFile.getName();
-			rootFilename = rootFilename.substring( 0, rootFilename.lastIndexOf( '.' ) );
-			transformer.setParameter( "root.filename", rootFilename );
-			transformer.setParameter( "base.dir", targetFile.getParent() + File.separator );
-		}
 		return transformer;
 	}
 }

Modified: trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/render/PdfRenderer.java
===================================================================
--- trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/render/PdfRenderer.java	2007-06-11 13:24:05 UTC (rev 11679)
+++ trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/render/PdfRenderer.java	2007-06-12 17:51:25 UTC (rev 11680)
@@ -1,24 +1,25 @@
 package org.jboss.maven.plugin.docbook.gen.render;
 
+import java.io.BufferedOutputStream;
 import java.io.File;
+import java.io.FileOutputStream;
 import java.io.OutputStream;
-import java.io.FileNotFoundException;
 import javax.xml.transform.Result;
 import javax.xml.transform.sax.SAXResult;
 
-import org.jboss.maven.plugin.docbook.gen.Format;
+import org.apache.avalon.framework.logger.Logger;
 import org.apache.fop.apps.Driver;
-import org.apache.avalon.framework.logger.Logger;
 import org.apache.maven.plugin.logging.Log;
 
 /**
- * {@inheritDoc}
+ * Special handling for pdf rendering
  *
  * @author Steve Ebersole
  */
 public class PdfRenderer extends BasicRenderer {
-	public PdfRenderer(RendererFactory factory, Format format) {
-		super( factory, format );
+
+	public PdfRenderer(RendererFactory factory, Formatting formatting) {
+		super( factory, formatting );
 	}
 
 	protected Result buildResult(File targetFile) throws RenderingException {
@@ -28,14 +29,12 @@
 		driver.setRenderer( Driver.RENDER_PDF );
 
 		try {
-			OutputStream out = new java.io.FileOutputStream( targetFile );
+			OutputStream out = new BufferedOutputStream( new FileOutputStream( targetFile ) );
 			driver.setOutputStream( out );
 			return new SAXResult( driver.getContentHandler() );
 		}
-		catch ( FileNotFoundException e ) {
-			throw new RenderingException(
-					"unable to access target file " + targetFile.getAbsolutePath()
-			);
+		catch ( Throwable t ) {
+			throw new RenderingException( "error rendering pdf [" + targetFile.getAbsolutePath() + "]", t );
 		}
 	}
 
@@ -113,4 +112,42 @@
 
 	}
 
+
+
+	///////////////////////////////////////////////////////////////////////////
+	// this is (supposed) fop-0.93 usage pattern.  I have been unsucessful
+	// getting this to work (hence rolling back to 0.25)
+
+//	protected Result buildResult(File targetFile) throws RenderingException {
+//		getLog().info( "building formatting result [" + targetFile.getAbsolutePath() + "]" );
+//
+//    	FopFactory fopFactory = FopFactory.newInstance();
+//		// todo : need to set up at the font base URL
+////		fopFactory.setFontBaseURL( "xyz" );
+//
+//		FOUserAgent userAgent = fopFactory.newFOUserAgent();
+//		userAgent.setProducer( "maven-jboss-docbook-plugin" );
+//		userAgent.setCreationDate( new Date() );
+//		userAgent.setTitle( factory.getMavenProject().getName() );
+//		if ( factory.getMavenProject().getOrganization() != null ) {
+//			if ( factory.getMavenProject().getOrganization().getName() != null ) {
+//				userAgent.setAuthor( factory.getMavenProject().getOrganization().getName() );
+//				userAgent.setCreator( factory.getMavenProject().getOrganization().getName() );
+//			}
+//		}
+//
+//		try {
+//			OutputStream out = new BufferedOutputStream( new FileOutputStream( targetFile ) );
+//            try {
+//                Fop fop = fopFactory.newFop( MimeConstants.MIME_PDF, userAgent, out );
+//				return new SAXResult( fop.getDefaultHandler() );
+//            }
+//			finally {
+//                out.close();
+//            }
+//		}
+//		catch ( Throwable t ) {
+//			throw new RenderingException( "error rendering pdf [" + targetFile.getAbsolutePath() + "]", t );
+//		}
+//	}
 }

Modified: trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/render/Renderer.java
===================================================================
--- trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/render/Renderer.java	2007-06-11 13:24:05 UTC (rev 11679)
+++ trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/render/Renderer.java	2007-06-12 17:51:25 UTC (rev 11680)
@@ -1,6 +1,7 @@
 package org.jboss.maven.plugin.docbook.gen.render;
 
 import java.io.File;
+import java.io.IOException;
 
 import org.jboss.maven.plugin.docbook.gen.xslt.XSLTException;
 
@@ -10,5 +11,6 @@
  * @author Steve Ebersole
  */
 public interface Renderer {
+	public File prepareDirectory() throws RenderingException;
 	public void render(File source) throws RenderingException, XSLTException;
 }

Modified: trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/render/RendererFactory.java
===================================================================
--- trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/render/RendererFactory.java	2007-06-11 13:24:05 UTC (rev 11679)
+++ trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/render/RendererFactory.java	2007-06-12 17:51:25 UTC (rev 11680)
@@ -2,17 +2,17 @@
 
 import java.io.File;
 
-import org.jboss.maven.plugin.docbook.gen.Format;
+import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.project.MavenProject;
+import org.apache.xml.resolver.CatalogManager;
+import org.apache.xml.resolver.tools.CatalogResolver;
 import org.jboss.maven.plugin.docbook.gen.Options;
+import org.jboss.maven.plugin.docbook.gen.util.StandardDocBookFormatSpecification;
 import org.jboss.maven.plugin.docbook.gen.util.TransformerType;
-import org.jboss.maven.plugin.docbook.gen.util.FormatType;
+import org.jboss.maven.plugin.docbook.gen.xslt.TransformerFactory;
 import org.jboss.maven.plugin.docbook.gen.xslt.XSLTException;
-import org.jboss.maven.plugin.docbook.gen.xslt.TransformerFactory;
-import org.jboss.maven.plugin.docbook.gen.xslt.resolve.StandardCatalogManager;
-import org.jboss.maven.plugin.docbook.gen.xslt.resolve.ExplicitCatalogManager;
-import org.apache.xml.resolver.CatalogManager;
-import org.apache.xml.resolver.tools.CatalogResolver;
-import org.apache.maven.plugin.logging.Log;
+import org.jboss.maven.plugin.docbook.gen.xslt.catalog.ExplicitCatalogManager;
+import org.jboss.maven.plugin.docbook.gen.xslt.catalog.ImplicitCatalogManager;
 
 /**
  * Builds a renderer for the given format
@@ -23,33 +23,28 @@
 	private final Options options;
 	private final File source;
 	private final File targetDirectory;
+	private final File stagingDirectory;
+	private final MavenProject mavenProject;
 	private final Log log;
-	private final CatalogResolver catalogResolver;
-	private final TransformerFactory transformerFactory;
 
-	public RendererFactory(Options options, File source, File targetDirectory, Log log) {
+	private CatalogResolver catalogResolver;
+	private TransformerFactory transformerFactory;
+
+	public RendererFactory(
+			Options options,
+			File source,
+			File targetDirectory,
+			File stagingDirectory,
+			MavenProject mavenProject,
+			Log log) {
 		this.options = options;
 		this.source = source;
 		this.targetDirectory = targetDirectory;
+		this.stagingDirectory = stagingDirectory;
+		this.mavenProject = mavenProject;
 		this.log = log;
-		CatalogManager catalogManager;
-		// todo : add a "recommended catalog manager" based on discussion at http://sagehill.net/docbookxsl/Catalogs.html
-		// especially the part at http://sagehill.net/docbookxsl/WriteCatalog.html#MapManyWithRewrite
-		if ( options.getCatalogs() == null || options.getCatalogs().length == 0 ) {
-			catalogManager = new StandardCatalogManager();
-		}
-		else {
-			catalogManager = new ExplicitCatalogManager( options.getCatalogs() );
-		}
-		catalogResolver = new CatalogResolver( catalogManager );
-		transformerFactory = new TransformerFactory(
-				TransformerType.parse( options.getXmlTransformerType() ),
-				options.getTransformerParameters(),
-				catalogResolver
-		);
 	}
 
-
 	public Options getOptions() {
 		return options;
 	}
@@ -62,28 +57,55 @@
 		return targetDirectory;
 	}
 
+	public File getStagingDirectory() {
+		return stagingDirectory;
+	}
+
+	public MavenProject getMavenProject() {
+		return mavenProject;
+	}
+
 	public Log getLog() {
 		return log;
 	}
 
 	public CatalogResolver getCatalogResolver() {
+		if ( catalogResolver == null ) {
+			CatalogManager catalogManager;
+			if ( options.getCatalogs() == null || options.getCatalogs().length == 0 ) {
+				catalogManager = new ImplicitCatalogManager();
+			}
+			else {
+				catalogManager = new ExplicitCatalogManager( options.getCatalogs() );
+			}
+			catalogResolver = new CatalogResolver( catalogManager );
+		}
 		return catalogResolver;
 	}
 
 	public TransformerFactory getTransformerFactory() {
+		if ( transformerFactory == null ) {
+			transformerFactory = new TransformerFactory(
+					TransformerType.parse( options.getXmlTransformerType() ),
+					options.getTransformerParameters(),
+					getCatalogResolver(),
+					options.getDocbookVersion()
+			);
+		}
 		return transformerFactory;
 	}
 
-	public Renderer buildRenderer(Format format) throws XSLTException {
-		FormatType type = format.getFormatType();
-		if ( type == FormatType.PDF ) {
-			return new PdfRenderer( this, format );
+	public Renderer buildRenderer(Formatting formatting) throws XSLTException {
+		// todo : these usages of 'FormatType' are ok as well
+		if ( formatting.getFormatName().equals( StandardDocBookFormatSpecification.PDF.getName() ) ) {
+			return new PdfRenderer( this, formatting );
 		}
-		else if ( type == FormatType.HTML || type == FormatType.HTML_SINGLE ) {
-			return new HtmlRenderer( this, format );
+		else if ( formatting.getFormatName().equals( StandardDocBookFormatSpecification.HTML.getName() )
+				|| formatting.getFormatName().equals( StandardDocBookFormatSpecification.HTML_SINGLE.getName() ) ) {
+			return new HtmlRenderer( this, formatting );
 		}
 		else {
-			return new BasicRenderer( this, format );
+			return new BasicRenderer( this, formatting );
 		}
 	}
 }

Deleted: trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/util/FormatType.java
===================================================================
--- trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/util/FormatType.java	2007-06-11 13:24:05 UTC (rev 11679)
+++ trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/util/FormatType.java	2007-06-12 17:51:25 UTC (rev 11680)
@@ -1,67 +0,0 @@
-package org.jboss.maven.plugin.docbook.gen.util;
-
-/**
- * An enumeration of the various types of formatting supported in this plugin.
- * <p/>
- * DocBook does define some other output formatting support (like HTML Help),
- * but those are not covered nor supported by this plugin.
- *
- * @author Steve Ebersole
- */
-public class FormatType {
-	public static final FormatType PDF = new FormatType( "pdf", "/fo/docbook.xsl" );
-	public static final FormatType HTML = new FormatType( "html", "html", "/html/chunk.xsl", false );
-	public static final FormatType HTML_SINGLE = new FormatType( "html_single", "html", "/html/docbook.xsl", false );
-	public static final FormatType MAN = new FormatType( "man", "/manpages/docbook.xsl" );
-
-	private final String name;
-	private final String standardFileExtension;
-	private final String stylesheetResource;
-	private final boolean imagePathNeeded;
-
-
-	public FormatType(String name, String stylesheetResource) {
-		this( name, name, stylesheetResource, true );
-	}
-
-	private FormatType(String name, String standardFileExtension, String stylesheetResource, boolean imagePathNeeded) {
-		this.name = name;
-		this.standardFileExtension = standardFileExtension;
-		this.stylesheetResource = stylesheetResource;
-		this.imagePathNeeded = imagePathNeeded;
-	}
-
-	public String getName() {
-		return name;
-	}
-
-	public String getStandardFileExtension() {
-		return standardFileExtension;
-	}
-
-	public String getStylesheetResource() {
-		return stylesheetResource;
-	}
-
-	public boolean isImagePathNeeded() {
-		return imagePathNeeded;
-	}
-
-	public static FormatType parse(String name) {
-		if ( PDF.name.equals( name ) ) {
-			return PDF;
-		}
-		else if ( HTML.name.equals( name ) ) {
-			return HTML;
-		}
-		else if ( HTML_SINGLE.name.equals( name ) ) {
-			return HTML_SINGLE;
-		}
-		else if ( MAN.name.equals( name ) ) {
-			return MAN;
-		}
-		else {
-			throw new IllegalArgumentException( "unknown format type [" + name + "]" );
-		}
-	}
-}

Copied: trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/util/StandardDocBookFormatSpecification.java (from rev 11597, trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/util/FormatType.java)
===================================================================
--- trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/util/StandardDocBookFormatSpecification.java	                        (rev 0)
+++ trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/util/StandardDocBookFormatSpecification.java	2007-06-12 17:51:25 UTC (rev 11680)
@@ -0,0 +1,141 @@
+package org.jboss.maven.plugin.docbook.gen.util;
+
+/**
+ * An enumeration of the various types of formatting supported in this plugin.
+ * <p/>
+ * DocBook does define some other output formatting support (like HTML Help),
+ * but those are not covered nor supported by this plugin.
+ * <p/>
+ * Really, instead of a discrete enumeration, these should act as templates
+ * based on the docbook standard formats.  The attributes here should be exposed
+ * to the user for configuration, thesse attributes values acting as defaults
+ * based on the selected format-name.
+ *
+ * @author Steve Ebersole
+ */
+public class StandardDocBookFormatSpecification {
+	public static final StandardDocBookFormatSpecification ECLIPSE =
+			new HtmlBasedStandardDocBookFormat( "eclipse", "/eclipse/eclipse.xsl" );
+
+	public static final StandardDocBookFormatSpecification HTML =
+			new HtmlBasedStandardDocBookFormat( "html", "/html/chunk.xsl" );
+
+	public static final StandardDocBookFormatSpecification HTML_SINGLE =
+			new HtmlBasedStandardDocBookFormat( "html_single", "/html/docbook.xsl", false );
+
+	public static final StandardDocBookFormatSpecification HTMLHELP =
+			new HtmlBasedStandardDocBookFormat( "htmlhelp", "/htmlhelp/htmlhelp.xsl" );
+
+	public static final StandardDocBookFormatSpecification JAVAHELP =
+			new HtmlBasedStandardDocBookFormat( "javahelp", "/javahelp/javahelp.xsl" );
+
+	public static final StandardDocBookFormatSpecification MAN =
+			new HtmlBasedStandardDocBookFormat( "man", "/manpages/docbook.xsl", false );
+
+	public static final StandardDocBookFormatSpecification PDF =
+			new StandardDocBookFormatSpecification( "pdf", "pdf", "/fo/docbook.xsl", true, false, false );
+
+	public static final StandardDocBookFormatSpecification WEBSITE =
+			new HtmlBasedStandardDocBookFormat( "website", "/website/website.xsl", false );
+
+// I'd rather not support this...
+//	public static final FormatType WORDML =
+//			new FormatType( "wordml", "doc", "/wordml/wordml.xsl", ?, ?, ? );
+
+	public static final StandardDocBookFormatSpecification XHTML =
+			new StandardDocBookFormatSpecification( "xhtml", "xhtml", "/xhtml/docbook.xsl", false, true, false );
+
+	private final String name;
+	private final String standardFileExtension;
+	private final String stylesheetResource;
+	private final boolean imagePathSettingRequired;
+	private final boolean imageCopyingRequired;
+	private final boolean doingChunking;
+
+	public StandardDocBookFormatSpecification(
+			String name,
+			String standardFileExtension,
+			String stylesheetResource,
+			boolean imagePathSettingRequired,
+			boolean imageCopyingRequired,
+			boolean doingChunking) {
+		this.name = name;
+		this.standardFileExtension = standardFileExtension;
+		this.stylesheetResource = stylesheetResource;
+		this.imagePathSettingRequired = imagePathSettingRequired;
+		this.imageCopyingRequired = imageCopyingRequired;
+		this.doingChunking = doingChunking;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public String getStandardFileExtension() {
+		return standardFileExtension;
+	}
+
+	public String getStylesheetResource() {
+		return stylesheetResource;
+	}
+
+	public boolean isImagePathSettingRequired() {
+		return imagePathSettingRequired;
+	}
+
+	public boolean isImageCopyingRequired() {
+		return imageCopyingRequired;
+	}
+
+	public boolean isDoingChunking() {
+		return doingChunking;
+	}
+
+	public static StandardDocBookFormatSpecification parse(String name) {
+		if ( ECLIPSE.name.equals( name ) ) {
+			return ECLIPSE;
+		}
+		else if ( HTML.name.equals( name ) ) {
+			return HTML;
+		}
+		else if ( HTML_SINGLE.name.equals( name ) ) {
+			return HTML_SINGLE;
+		}
+		else if ( HTMLHELP.name.equals( name ) ) {
+			return HTMLHELP;
+		}
+		else if ( JAVAHELP.name.equals( name ) ) {
+			return JAVAHELP;
+		}
+		else if ( MAN.name.equals( name ) ) {
+			return MAN;
+		}
+		else if ( PDF.name.equals( name ) ) {
+			return PDF;
+		}
+		else if ( WEBSITE.name.equals( name ) ) {
+			return WEBSITE;
+		}
+//		else if ( WORDML.name.equals( name ) ) {
+//			return WORDML;
+//		}
+		else if ( XHTML.name.equals( name ) ) {
+			return XHTML;
+		}
+		else {
+			return null;
+		}
+	}
+
+
+	// convenience for html based formats to simplify ctors ~~~~~~~~~~~~~~~~~~~
+
+	private static class HtmlBasedStandardDocBookFormat extends StandardDocBookFormatSpecification {
+		private HtmlBasedStandardDocBookFormat(String name, String stylesheetResource) {
+			this( name, stylesheetResource, true );
+		}
+		private HtmlBasedStandardDocBookFormat(String name, String stylesheetResource, boolean doingChunking) {
+			super( name, "html", stylesheetResource, false, true, doingChunking );
+		}
+	}
+}

Modified: trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/TransformerFactory.java
===================================================================
--- trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/TransformerFactory.java	2007-06-11 13:24:05 UTC (rev 11679)
+++ trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/TransformerFactory.java	2007-06-12 17:51:25 UTC (rev 11680)
@@ -1,25 +1,29 @@
 package org.jboss.maven.plugin.docbook.gen.xslt;
 
-import java.util.Properties;
+import java.io.IOException;
+import java.net.URL;
 import java.util.Iterator;
 import java.util.Map;
-import java.net.URL;
-import java.io.IOException;
+import java.util.Properties;
+import javax.xml.transform.Source;
 import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
 import javax.xml.transform.URIResolver;
-import javax.xml.transform.Source;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerConfigurationException;
 import javax.xml.transform.stream.StreamSource;
 
+import com.icl.saxon.Controller;
 import org.apache.xml.resolver.tools.CatalogResolver;
+import org.jboss.maven.plugin.docbook.gen.render.Formatting;
+import org.jboss.maven.plugin.docbook.gen.util.StandardDocBookFormatSpecification;
+import org.jboss.maven.plugin.docbook.gen.util.NoOpWriter;
+import org.jboss.maven.plugin.docbook.gen.util.ResourceHelper;
 import org.jboss.maven.plugin.docbook.gen.util.TransformerType;
-import org.jboss.maven.plugin.docbook.gen.xslt.resolve.DocBookStylesheetResolver;
+import org.jboss.maven.plugin.docbook.gen.xslt.resolve.CurrentVersionResolver;
+import org.jboss.maven.plugin.docbook.gen.xslt.resolve.ExplicitUrnResolver;
+import org.jboss.maven.plugin.docbook.gen.xslt.resolve.RelativeJarUriResolver;
 import org.jboss.maven.plugin.docbook.gen.xslt.resolve.ResolverChain;
-import org.jboss.maven.plugin.docbook.gen.util.FormatType;
-import org.jboss.maven.plugin.docbook.gen.util.ResourceHelper;
-import org.jboss.maven.plugin.docbook.gen.util.NoOpWriter;
-import com.icl.saxon.Controller;
+import org.jboss.maven.plugin.docbook.gen.xslt.resolve.VersionResolver;
 
 /**
  * A factory for {@link javax.xml.transform.Transformer} instances, configurable
@@ -31,24 +35,26 @@
 	private final TransformerType transformerType;
 	private final Properties transformerParameters;
 	private final CatalogResolver catalogResolver;
+	private final String docbookVersion;
 
 	public TransformerFactory(
 			TransformerType transformerType,
 			Properties transformerParameters,
-			CatalogResolver catalogResolver) {
+			CatalogResolver catalogResolver, String docbookVersion) {
 		this.transformerType = transformerType;
 		this.transformerParameters = transformerParameters;
 		this.catalogResolver = catalogResolver;
+		this.docbookVersion = docbookVersion;
 	}
 
-	public Transformer buildTransformer(FormatType formatType, URL customStylesheet) throws XSLTException {
-		URIResolver uriResolver = buildUriResolver( formatType );
+	public Transformer buildTransformer(Formatting formatting, URL customStylesheet) throws XSLTException {
+		URIResolver uriResolver = buildUriResolver( formatting.getStandardDocBookSpec() );
 
 		javax.xml.transform.TransformerFactory transformerFactory = buildTransformerFactory();
 		transformerFactory.setURIResolver( uriResolver );
 
 		URL xsltStylesheet = customStylesheet == null
-				? ResourceHelper.requireResource( formatType.getStylesheetResource() )
+				? ResourceHelper.requireResource( formatting.getStylesheetResource() )
 				: customStylesheet;
 
 		Transformer transformer;
@@ -100,11 +106,17 @@
 		}
 	}
 
-	private URIResolver buildUriResolver(FormatType formatType)
-			throws XSLTException {
+	private URIResolver buildUriResolver(StandardDocBookFormatSpecification formatType) throws XSLTException {
 		ResolverChain resolverChain = new ResolverChain();
+		if ( formatType != null ) {
+			resolverChain.addResolver( new ExplicitUrnResolver( formatType ) );
+		}
+		resolverChain.addResolver( new CurrentVersionResolver() );
+		if ( docbookVersion != null ) {
+			resolverChain.addResolver( new VersionResolver( docbookVersion ) );
+		}
+		resolverChain.addResolver( new RelativeJarUriResolver() );
 		resolverChain.addResolver( catalogResolver );
-		resolverChain.addResolver( new DocBookStylesheetResolver( formatType ) );
 		return resolverChain;
 	}
 }

Added: trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/catalog/AbstractCatalogManager.java
===================================================================
--- trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/catalog/AbstractCatalogManager.java	                        (rev 0)
+++ trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/catalog/AbstractCatalogManager.java	2007-06-12 17:51:25 UTC (rev 11680)
@@ -0,0 +1,31 @@
+package org.jboss.maven.plugin.docbook.gen.xslt.catalog;
+
+import org.apache.xml.resolver.CatalogManager;
+
+/**
+ * Basic support for our notion of CatalogManagers.
+ *
+ * @author Steve Ebersole
+ */
+public abstract class AbstractCatalogManager extends CatalogManager {
+	public AbstractCatalogManager(String[] catalogNames) {
+		super();
+		setIgnoreMissingProperties( true );
+		if ( catalogNames != null && catalogNames.length != 0 ) {
+			StringBuffer buffer = new StringBuffer();
+			boolean first = true;
+			for ( int i = 0; i < catalogNames.length; i++ ) {
+				if ( catalogNames[i] != null ) {
+					if ( first ) {
+						first = false;
+					}
+					else {
+						buffer.append( ';' );
+					}
+				}
+				buffer.append( catalogNames[i] );
+			}
+			setCatalogFiles( buffer.toString() );
+		}
+	}
+}

Added: trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/catalog/ExplicitCatalogManager.java
===================================================================
--- trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/catalog/ExplicitCatalogManager.java	                        (rev 0)
+++ trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/catalog/ExplicitCatalogManager.java	2007-06-12 17:51:25 UTC (rev 11680)
@@ -0,0 +1,14 @@
+package org.jboss.maven.plugin.docbook.gen.xslt.catalog;
+
+
+/**
+ * Utilizes explicit, user-supplied catalog names to build a
+ * CatalogManager.
+ *
+ * @author Steve Ebersole
+ */
+public class ExplicitCatalogManager extends AbstractCatalogManager {
+	public ExplicitCatalogManager(String[] catalogNames) {
+		super( catalogNames );
+	}
+}

Added: trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/catalog/ImplicitCatalogManager.java
===================================================================
--- trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/catalog/ImplicitCatalogManager.java	                        (rev 0)
+++ trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/catalog/ImplicitCatalogManager.java	2007-06-12 17:51:25 UTC (rev 11680)
@@ -0,0 +1,41 @@
+package org.jboss.maven.plugin.docbook.gen.xslt.catalog;
+
+import java.util.Enumeration;
+import java.util.ArrayList;
+import java.net.URL;
+import java.io.IOException;
+
+/**
+ * CatalogManager which resolves its catalogs internally via  classpath
+ * resource lookups.  Its looks for resources named '/catalog.xml' on the
+ * classpath.
+ *
+ * @author Steve Ebersole
+ */
+public class ImplicitCatalogManager extends AbstractCatalogManager {
+	public ImplicitCatalogManager() {
+		super( resolveCatalogNames() );
+	}
+
+	private static String[] resolveCatalogNames() {
+        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+		if ( classLoader == null ) {
+			classLoader = ImplicitCatalogManager.class.getClassLoader();
+		}
+		ArrayList names = new ArrayList();
+        try {
+            Enumeration enumeration = classLoader.getResources( "/catalog.xml" );
+            while ( enumeration.hasMoreElements() ) {
+				final URL resource = ( URL ) enumeration.nextElement();
+				final String resourcePath = resource.toExternalForm();
+				if ( resourcePath != null ) {
+					names.add( resourcePath );
+				}
+            }
+        }
+		catch ( IOException ignore ) {
+			// intentionally empty
+		}
+		return ( String[] ) names.toArray( new String[ names.size() ] );
+	}
+}

Deleted: trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/AbstractCatalogManager.java
===================================================================
--- trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/AbstractCatalogManager.java	2007-06-11 13:24:05 UTC (rev 11679)
+++ trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/AbstractCatalogManager.java	2007-06-12 17:51:25 UTC (rev 11680)
@@ -1,31 +0,0 @@
-package org.jboss.maven.plugin.docbook.gen.xslt.resolve;
-
-import org.apache.xml.resolver.CatalogManager;
-
-/**
- * Basic support for our notion of CatalogManagers.
- *
- * @author Steve Ebersole
- */
-public abstract class AbstractCatalogManager extends CatalogManager {
-	public AbstractCatalogManager(String[] catalogNames) {
-		super();
-		setIgnoreMissingProperties( true );
-		if ( catalogNames != null && catalogNames.length != 0 ) {
-			StringBuffer buffer = new StringBuffer();
-			boolean first = true;
-			for ( int i = 0; i < catalogNames.length; i++ ) {
-				if ( catalogNames[i] != null ) {
-					if ( first ) {
-						first = false;
-					}
-					else {
-						buffer.append( ';' );
-					}
-				}
-				buffer.append( catalogNames[i] );
-			}
-			setCatalogFiles( buffer.toString() );
-		}
-	}
-}

Added: trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/CurrentVersionResolver.java
===================================================================
--- trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/CurrentVersionResolver.java	                        (rev 0)
+++ trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/CurrentVersionResolver.java	2007-06-12 17:51:25 UTC (rev 11680)
@@ -0,0 +1,14 @@
+package org.jboss.maven.plugin.docbook.gen.xslt.resolve;
+
+/**
+ * Map hrefs starting with <tt>http://docbook.sourceforge.net/release/xsl/current/</tt>
+ * to classpath resource lookups.
+ *
+ * @author Steve Ebersole
+ */
+public class CurrentVersionResolver extends VersionResolver {
+
+	public CurrentVersionResolver() {
+		super( "current" );
+	}
+}

Deleted: trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/DocBookStylesheetResolver.java
===================================================================
--- trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/DocBookStylesheetResolver.java	2007-06-11 13:24:05 UTC (rev 11679)
+++ trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/DocBookStylesheetResolver.java	2007-06-12 17:51:25 UTC (rev 11680)
@@ -1,38 +0,0 @@
-package org.jboss.maven.plugin.docbook.gen.xslt.resolve;
-
-import java.net.URL;
-import java.io.IOException;
-import javax.xml.transform.Source;
-import javax.xml.transform.stream.StreamSource;
-
-import org.jboss.maven.plugin.docbook.gen.util.FormatType;
-import org.jboss.maven.plugin.docbook.gen.util.ResourceHelper;
-import org.jboss.maven.plugin.docbook.gen.xslt.XSLTException;
-
-/**
- * Resolves against the set of standard DocBook stylesheets
- *
- * @author Steve Ebersole
- */
-public class DocBookStylesheetResolver extends BasicUrnResolver {
-	private final FormatType formatType;
-
-	public DocBookStylesheetResolver(FormatType type) throws XSLTException {
-		super( "urn:docbook:stylesheet", createSource( type ) );
-		this.formatType = type;
-	}
-
-	private static Source createSource(FormatType type) throws XSLTException {
-		URL stylesheet = ResourceHelper.requireResource( type.getStylesheetResource() );
-		try {
-			return new StreamSource( stylesheet.openStream(), stylesheet.toExternalForm() );
-		}
-		catch ( IOException e ) {
-			throw new XSLTException( "could not locate DocBook stylesheet [" + type.getName() + "]", e );
-		}
-	}
-
-	public String toString() {
-		return super.toString() + " [" + formatType.getName() + "]";
-	}
-}

Deleted: trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/ExplicitCatalogManager.java
===================================================================
--- trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/ExplicitCatalogManager.java	2007-06-11 13:24:05 UTC (rev 11679)
+++ trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/ExplicitCatalogManager.java	2007-06-12 17:51:25 UTC (rev 11680)
@@ -1,14 +0,0 @@
-package org.jboss.maven.plugin.docbook.gen.xslt.resolve;
-
-
-/**
- * Utilizes explicit, user-supplied catalog names to build a
- * CatalogManager.
- *
- * @author Steve Ebersole
- */
-public class ExplicitCatalogManager extends AbstractCatalogManager {
-	public ExplicitCatalogManager(String[] catalogNames) {
-		super( catalogNames );
-	}
-}

Added: trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/ExplicitUrnResolver.java
===================================================================
--- trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/ExplicitUrnResolver.java	                        (rev 0)
+++ trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/ExplicitUrnResolver.java	2007-06-12 17:51:25 UTC (rev 11680)
@@ -0,0 +1,39 @@
+package org.jboss.maven.plugin.docbook.gen.xslt.resolve;
+
+import java.net.URL;
+import java.io.IOException;
+import javax.xml.transform.Source;
+import javax.xml.transform.stream.StreamSource;
+
+import org.jboss.maven.plugin.docbook.gen.util.StandardDocBookFormatSpecification;
+import org.jboss.maven.plugin.docbook.gen.util.ResourceHelper;
+import org.jboss.maven.plugin.docbook.gen.xslt.XSLTException;
+
+/**
+ * Resolves an explicit <tt>urn:docbook:stylesheet</tt> URN against the standard
+ * DocBook stylesheets.
+ *
+ * @author Steve Ebersole
+ */
+public class ExplicitUrnResolver extends BasicUrnResolver {
+	private final StandardDocBookFormatSpecification formatType;
+
+	public ExplicitUrnResolver(StandardDocBookFormatSpecification type) throws XSLTException {
+		super( "urn:docbook:stylesheet", createSource( type ) );
+		this.formatType = type;
+	}
+
+	private static Source createSource(StandardDocBookFormatSpecification type) throws XSLTException {
+		URL stylesheet = ResourceHelper.requireResource( type.getStylesheetResource() );
+		try {
+			return new StreamSource( stylesheet.openStream(), stylesheet.toExternalForm() );
+		}
+		catch ( IOException e ) {
+			throw new XSLTException( "could not locate DocBook stylesheet [" + type.getName() + "]", e );
+		}
+	}
+
+	public String toString() {
+		return super.toString() + " [" + formatType.getName() + "]";
+	}
+}

Added: trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/RelativeJarUriResolver.java
===================================================================
--- trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/RelativeJarUriResolver.java	                        (rev 0)
+++ trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/RelativeJarUriResolver.java	2007-06-12 17:51:25 UTC (rev 11680)
@@ -0,0 +1,36 @@
+package org.jboss.maven.plugin.docbook.gen.xslt.resolve;
+
+import java.net.URL;
+import javax.xml.transform.URIResolver;
+import javax.xml.transform.Source;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.stream.StreamSource;
+
+/**
+ * Responsible for resolving relative references from jar base urls.
+ *
+ * @author Steve Ebersole
+ */
+public class RelativeJarUriResolver implements URIResolver {
+	public Source resolve(String href, String base) throws TransformerException {
+		// href need to be relative
+		if ( href.indexOf( "://" ) > 0 || href.startsWith( "/" ) ) {
+			return null;
+		}
+
+		// base would need to start with jar:
+		if ( !base.startsWith( "jar:" ) ) {
+			return null;
+		}
+
+		String fullHref = base.substring( 4, base.lastIndexOf( '/' ) + 1 )
+				+ href;
+		try {
+			URL url = new URL( fullHref );
+			return new StreamSource( url.openStream(), url.toExternalForm() );
+		}
+		catch ( Throwable t ) {
+			return null;
+		}
+	}
+}

Modified: trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/ResolverChain.java
===================================================================
--- trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/ResolverChain.java	2007-06-11 13:24:05 UTC (rev 11679)
+++ trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/ResolverChain.java	2007-06-12 17:51:25 UTC (rev 11680)
@@ -45,7 +45,8 @@
 		Source result = null;
 		Iterator itr = resolvers.iterator();
 		while ( itr.hasNext() ) {
-			result = ( ( URIResolver ) itr.next() ).resolve( href, base );
+			final URIResolver resolver = ( URIResolver ) itr.next();
+			result = resolver.resolve( href, base );
 			if ( result != null ) {
 				break;
 			}

Deleted: trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/StandardCatalogManager.java
===================================================================
--- trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/StandardCatalogManager.java	2007-06-11 13:24:05 UTC (rev 11679)
+++ trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/StandardCatalogManager.java	2007-06-12 17:51:25 UTC (rev 11680)
@@ -1,41 +0,0 @@
-package org.jboss.maven.plugin.docbook.gen.xslt.resolve;
-
-import java.util.Enumeration;
-import java.util.ArrayList;
-import java.net.URL;
-import java.io.IOException;
-
-/**
- * CatalogManager which resolves its catalogs internally via  classpath
- * resource lookups.  Its looks for resources named '/catalog.xml' on the
- * classpath.
- *
- * @author Steve Ebersole
- */
-public class StandardCatalogManager extends AbstractCatalogManager {
-	public StandardCatalogManager() {
-		super( resolveCatalogNames() );
-	}
-
-	private static String[] resolveCatalogNames() {
-        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
-		if ( classLoader == null ) {
-			classLoader = StandardCatalogManager.class.getClassLoader();
-		}
-		ArrayList names = new ArrayList();
-        try {
-            Enumeration enumeration = classLoader.getResources( "/catalog.xml" );
-            while ( enumeration.hasMoreElements() ) {
-				final URL resource = ( URL ) enumeration.nextElement();
-				final String resourcePath = resource.toExternalForm();
-				if ( resourcePath != null ) {
-					names.add( resourcePath );
-				}
-            }
-        }
-		catch ( IOException ignore ) {
-			// intentionally empty
-		}
-		return ( String[] ) names.toArray( new String[ names.size() ] );
-	}
-}

Added: trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/VersionResolver.java
===================================================================
--- trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/VersionResolver.java	                        (rev 0)
+++ trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/java/org/jboss/maven/plugin/docbook/gen/xslt/resolve/VersionResolver.java	2007-06-12 17:51:25 UTC (rev 11680)
@@ -0,0 +1,55 @@
+package org.jboss.maven.plugin.docbook.gen.xslt.resolve;
+
+import java.net.URL;
+import java.io.IOException;
+import javax.xml.transform.Source;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.URIResolver;
+import javax.xml.transform.stream.StreamSource;
+
+import org.jboss.maven.plugin.docbook.gen.util.ResourceHelper;
+
+/**
+ * {@inheritDoc}
+ *
+ * @author Steve Ebersole
+ */
+public class VersionResolver implements URIResolver {
+	public static final String BASE_HREF = "http://docbook.sourceforge.net/release/xsl/";
+
+	private final String version;
+	private final String versionHref;
+
+	public VersionResolver(String version) {
+		this.version = version;
+		this.versionHref = BASE_HREF + version;
+	}
+
+	public Source resolve(String href, String base) throws TransformerException {
+		if ( href.startsWith( versionHref ) ) {
+			return resolve( href );
+		}
+		else if ( base.startsWith( versionHref ) ) {
+			return resolve( base + "/" + href );
+		}
+		return null;
+	}
+
+	private Source resolve(String href) {
+		String resource = href.substring( versionHref.length() );
+		try {
+			URL resourceURL = ResourceHelper.requireResource( resource );
+			return new StreamSource( resourceURL.openStream(), resourceURL.toExternalForm() );
+		}
+		catch ( IllegalArgumentException e ) {
+			return null;
+		}
+		catch ( IOException e ) {
+			return null;
+		}
+	}
+
+	public String toString() {
+		return super.toString() + " [version=" + version + "]";
+	}
+}

Modified: trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/resources/META-INF/plexus/components.xml
===================================================================
--- trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/resources/META-INF/plexus/components.xml	2007-06-11 13:24:05 UTC (rev 11679)
+++ trunk/sandbox/maven-poc/plugins/maven-jboss-docbook-plugin/src/main/resources/META-INF/plexus/components.xml	2007-06-12 17:51:25 UTC (rev 11680)
@@ -1,10 +1,31 @@
 <component-set>
+
     <components>
+
         <component>
             <role>org.apache.maven.reporting.MavenReport</role>
             <role-hint>diff</role-hint>
             <implementation>org.jboss.maven.plugin.docbook.revdiff.TranslationDiffReport</implementation>
             <instantiation-strategy>per-lookup</instantiation-strategy>
         </component>
+
+        <component>
+            <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
+            <role-hint>docbook</role-hint>
+            <implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
+            <configuration>
+                <phases>
+                    <process-resources>org.jboss.maven.plugins:maven-jboss-docbook-plugin:resources</process-resources>
+                    <compile>org.jboss.maven.plugins:maven-jboss-docbook-plugin:generate</compile>
+                    <!--
+                    <package>org.codehaus.plexus:plexus-maven-plugin:app</package>
+                    -->
+                    <install>org.apache.maven.plugins:maven-install-plugin:install</install>
+                    <deploy>org.apache.maven.plugins:maven-deploy-plugin:deploy</deploy>
+                </phases>
+            </configuration>
+        </component>
+
     </components>
+
 </component-set>
\ No newline at end of file




More information about the hibernate-commits mailing list