[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