[jboss-svn-commits] JBL Code SVN: r26993 - in labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin: src/main/java/org/jboss/jdocbook and 11 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Jun 17 11:10:29 EDT 2009
Author: steve.ebersole at jboss.com
Date: 2009-06-17 11:10:29 -0400 (Wed, 17 Jun 2009)
New Revision: 26993
Added:
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/Environment.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/I18nEnvironment.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/I18nSource.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/MasterTranslationDescriptor.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/PublishingSource.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/RendererFactory.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/RenderingEnvironment.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/XslFoGenerator.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/fop/
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/fop/FopConfigHelper.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/fop/ResultImpl.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/fop/XslFoGeneratorImpl.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/util/ConsoleRedirectionHandler.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/util/XIncludeFallbackResolver.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/GenerateXslFoMojo.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/Profiling.java
Removed:
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/actions/
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/RendererFactory.java
Modified:
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/pom.xml
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/Options.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/Factory.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/PoSynchronizer.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/PotSynchronizer.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/TranslationBuilder.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/gettext/PoSynchronizerImpl.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/gettext/PotSynchronizerImpl.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/gettext/TranslationBuilderImpl.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/profile/Profiler.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/profile/ProfilerFactory.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/profile/ProfilerImpl.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/Renderer.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/BasicRenderer.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/PDFRenderer.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/util/FileUtils.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/util/ResourceHelper.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/util/TransformerType.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/util/XIncludeHelper.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/xslt/TransformerBuilder.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/xslt/resolve/BasicUrnResolver.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/xslt/resolve/ClasspathResolver.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/xslt/resolve/CurrentVersionResolver.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/xslt/resolve/ExplicitUrnResolver.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/xslt/resolve/VersionResolver.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/AbstractDocBookMojo.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/CleanPoMojo.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/CleanPotMojo.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/GenerationMojo.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/PackageMojo.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/ResourceMojo.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/TranslationMojo.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/UpdatePoMojo.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/UpdatePotMojo.java
labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/resources/META-INF/plexus/components.xml
Log:
MPJDOCBOOK-19, MPJDOCBOOK-26 : style transitivity & fonts
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/pom.xml
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/pom.xml 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/pom.xml 2009-06-17 15:10:29 UTC (rev 26993)
@@ -1,3 +1,26 @@
+<!--
+ ~ jDocBook, processing of DocBook sources as a Maven plugin
+ ~
+ ~ Copyright (c) 2009, Red Hat Middleware LLC or third-party contributors as
+ ~ indicated by the @author tags or express copyright attribution
+ ~ statements applied by the authors. All third-party contributions are
+ ~ distributed under license by Red Hat Middleware LLC.
+ ~
+ ~ This copyrighted material is made available to anyone wishing to use, modify,
+ ~ copy, or redistribute it subject to the terms and conditions of the GNU
+ ~ Lesser General Public License, as published by the Free Software Foundation.
+ ~
+ ~ This program is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ ~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ ~ for more details.
+ ~
+ ~ You should have received a copy of the GNU Lesser General Public License
+ ~ along with this distribution; if not, write to:
+ ~ Free Software Foundation, Inc.
+ ~ 51 Franklin Street, Fifth Floor
+ ~ Boston, MA 02110-1301 USA
+ -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
@@ -11,7 +34,7 @@
<groupId>org.jboss.maven.plugins</groupId>
<artifactId>maven-jdocbook-plugin</artifactId>
<packaging>maven-plugin</packaging>
- <version>2.1.3-SNAPSHOT</version>
+ <version>2.2.0-SNAPSHOT</version>
<name>jDocBook Maven Plugin</name>
<description>This plugin adds support for DocBook handling to Maven.</description>
@@ -99,18 +122,36 @@
</plugins>
</reporting>
+<!--
+ TEMPORARY!!!! = see FOP dependencies...
+-->
+<repositories>
+ <repository>
+ <id>docx4j</id>
+ <name>docx4j Maven 2 repository</name>
+ <url>http://dev.plutext.org/svn/docx4j/trunk/docx4j/m2</url>
+ </repository>
+</repositories>
+
+
<dependencies>
<dependency>
<!-- DocBook (this is the version used, unless user project imports one...) -->
<groupId>net.sf.docbook</groupId>
<artifactId>docbook</artifactId>
- <version>1.72.0</version>
+ <version>1.74.0</version>
</dependency>
<dependency>
+ <groupId>org.jboss.maven.util</groupId>
+ <artifactId>jboss-maven-utils</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-exec</artifactId>
- <version>1.0.0-SNAPSHOT</version>
+ <version>1.0</version>
</dependency>
<!-- XML APIs -->
@@ -129,6 +170,11 @@
<artifactId>xmlParserAPIs</artifactId>
<version>2.6.2</version>
</dependency>
+ <dependency>
+ <groupId>jdom</groupId>
+ <artifactId>jdom</artifactId>
+ <version>1.0</version>
+ </dependency>
<!-- depending upon which transformer factory you want to use -->
<dependency>
@@ -146,22 +192,22 @@
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-core</artifactId>
- <version>2.0.9</version>
+ <version>${maven.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
- <version>2.0</version>
+ <version>${maven.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
- <version>2.0.4</version>
+ <version>${maven.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.reporting</groupId>
<artifactId>maven-reporting-api</artifactId>
- <version>2.0.4</version>
+ <version>${maven.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
@@ -183,10 +229,44 @@
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>fop</artifactId>
- <version>0.93</version>
+<!--
+ <version>0.95</version>
+-->
+ <version>svn-trunk</version>
</dependency>
+<!--
+<dependency>
+<groupId>docx4j</groupId>
+<artifactId>fop-patched</artifactId>
+<version>0.95.756434</version>
+</dependency>
+<dependency>
+<groupId>org.apache.xmlgraphics</groupId>
+<artifactId>xmlgraphics-commons</artifactId>
+<version>1.3.757686</version>
+</dependency>
+
+<dependency>
+<groupId>commons-logging</groupId>
+<artifactId>commons-logging</artifactId>
+<version>1.1.1</version>
+</dependency>
+
+<dependency>
+<groupId>commons-io</groupId>
+<artifactId>commons-io</artifactId>
+<version>1.3.1</version>
+</dependency>
+-->
+ <dependency>
+ <groupId>org.apache.avalon.framework</groupId>
+ <artifactId>avalon-framework-impl</artifactId>
+ <version>4.3.1</version>
+ </dependency>
+
<!-- Batik is used by FOP for SVG, PNG, and TIFF processing -->
+
<dependency>
<groupId>batik</groupId>
<artifactId>batik-css</artifactId>
@@ -211,6 +291,16 @@
<version>${batikVersion}</version>
<scope>runtime</scope>
</dependency>
+ <dependency>
+ <groupId>batik</groupId>
+ <artifactId>batik-bridge</artifactId>
+ <version>1.6-1</version>
+ </dependency>
+ <dependency>
+ <groupId>batik</groupId>
+ <artifactId>batik-ext</artifactId>
+ <version>1.6-1</version>
+ </dependency>
<!-- JAI is used by FOP for GIF and TIFF processing -->
<dependency>
@@ -225,10 +315,15 @@
<version>1.1.3</version>
<scope>runtime</scope>
</dependency>
-
+ <dependency>
+ <groupId>org.apache.maven.shared</groupId>
+ <artifactId>maven-dependency-tree</artifactId>
+ <version>1.1</version>
+ </dependency>
</dependencies>
<properties>
+ <maven.version>2.0.9</maven.version>
<batikVersion>1.6</batikVersion>
</properties>
Added: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/Environment.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/Environment.java (rev 0)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/Environment.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -0,0 +1,78 @@
+/*
+ * jDocBook, processing of DocBook sources as a Maven plugin
+ *
+ * Copyright (c) 2009, Red Hat Middleware LLC or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors. All third-party contributions are
+ * distributed under license by Red Hat Middleware LLC.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301 USA
+ */
+package org.jboss.jdocbook;
+
+import java.net.URL;
+import java.io.File;
+
+import org.jboss.jdocbook.xslt.TransformerBuilder;
+import org.jboss.jdocbook.util.ResourceHelper;
+import org.jboss.jdocbook.render.format.FormatPlan;
+import org.jboss.jdocbook.render.format.StandardDocBookFormatDescriptor;
+import org.apache.xml.resolver.tools.CatalogResolver;
+
+/**
+ * Basic environment in which jDocBook is executing.
+ *
+ * @author Steve Ebersole
+ */
+public interface Environment {
+ /**
+ * Retrieve the logging bridge to the environment's logging system.
+ *
+ * @return The environment's logging bridge.
+ */
+ public Log log();
+
+ /**
+ * Retrieve the user defined configuration options.
+ *
+ * @return The user defined configuration options.
+ */
+ public Options getOptions();
+
+ /**
+ * Get the transformer builder for this environment..
+ *
+ * @return The transformer builder.
+ */
+ public TransformerBuilder getTransformerBuilder();
+
+ /**
+ * Retrieve the catalog resolver for this environment.
+ *
+ * @return The catalog resolver.
+ */
+ public CatalogResolver getCatalogResolver();
+
+ public URL[] getClasspathUriResolverBaseUrls();
+
+ public File getStagingDirectory();
+
+ public File getWorkDirectory();
+
+ public ResourceHelper getResourceHelper();
+
+ public FormatPlan getFormatPlan(StandardDocBookFormatDescriptor format);
+}
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/Options.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/Options.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/Options.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -25,12 +25,7 @@
import java.util.Properties;
-import org.apache.xml.resolver.CatalogManager;
-import org.apache.xml.resolver.tools.CatalogResolver;
import org.jboss.jdocbook.util.TransformerType;
-import org.jboss.jdocbook.xslt.TransformerBuilder;
-import org.jboss.jdocbook.xslt.catalog.ExplicitCatalogManager;
-import org.jboss.jdocbook.xslt.catalog.ImplicitCatalogManager;
/**
* A (detachable) representation of the user configuration.
@@ -45,12 +40,9 @@
private boolean useRelativeImageUris = true;
private String docbookVersion;
private char localeSeparator = '-';
+ private boolean autoDetectFonts;
+ private boolean useFopFontCache = true;
- private CatalogResolver catalogResolver;
- private TransformerBuilder transformerBuilder;
-
- private Log log = new NoOpLog();
-
protected Options() {
}
@@ -65,7 +57,8 @@
Properties transformerParameters,
boolean useRelativeImageUris,
String docBookVersion,
- char localeSeparator) {
+ char localeSeparator,
+ boolean autoDetectFonts) {
this.xincludeSupported = xincludeSupported;
this.catalogs = catalogs;
this.xmlTransformerType = xmlTransformerType;
@@ -73,6 +66,7 @@
this.useRelativeImageUris = useRelativeImageUris;
this.docbookVersion = docBookVersion;
this.localeSeparator = localeSeparator;
+ this.autoDetectFonts = autoDetectFonts;
}
public boolean isXincludeSupported() {
@@ -114,65 +108,19 @@
return localeSeparator;
}
- public CatalogResolver getCatalogResolver() {
- if ( catalogResolver == null ) {
- CatalogManager catalogManager;
- if ( getCatalogs() == null || getCatalogs().length == 0 ) {
- catalogManager = new ImplicitCatalogManager();
- }
- else {
- catalogManager = new ExplicitCatalogManager( getCatalogs() );
- }
- catalogResolver = new CatalogResolver( catalogManager );
- }
- return catalogResolver;
+ public boolean isAutoDetectFontsEnabled() {
+ return autoDetectFonts;
}
- public TransformerBuilder getTransformerBuilder() {
- if ( transformerBuilder == null ) {
- transformerBuilder = new TransformerBuilder( this );
- }
- return transformerBuilder;
+ public void setAutoDetectFonts(boolean autoDetectFonts) {
+ this.autoDetectFonts = autoDetectFonts;
}
- public void setLog(Log log) {
- this.log = log;
+ public boolean isUseFopFontCache() {
+ return useFopFontCache;
}
- public Log getLog() {
- return log;
+ public void setUseFopFontCache(boolean useFopFontCache) {
+ this.useFopFontCache = useFopFontCache;
}
-
- private static class NoOpLog implements Log {
-
- public void trace(String message) {
- }
-
- public void trace(String message, Object... args) {
- }
-
- public void info(String message) {
- }
-
- public void info(String message, Object... args) {
- }
-
- public void info(String message, Throwable exception) {
- }
-
- public void info(String message, Throwable exception, Object... args) {
- }
-
- public void error(String message) {
- }
-
- public void error(String message, Object... args) {
- }
-
- public void error(String message, Throwable exception) {
- }
-
- public void error(String message, Throwable exception, Object... args) {
- }
- }
}
\ No newline at end of file
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/Factory.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/Factory.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/Factory.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -28,30 +28,30 @@
import org.jboss.jdocbook.i18n.gettext.TranslationBuilderImpl;
/**
- * Factory for various i18n components. Statically bound to "gettext" versions.
+ * Factory for various i18n components. Statically bound to "gettext" and "po/xml" executables.
*
* @author Steve Ebersole
*/
public class Factory {
- private static final PotSynchronizer potSynchronizer = new PotSynchronizerImpl();
- private static final PoSynchronizer poSynchronizer = new PoSynchronizerImpl();
- private static final TranslationBuilder translationBuilder = new TranslationBuilderImpl();
+ private final PotSynchronizer potSynchronizer;
+ private final PoSynchronizer poSynchronizer;
+ private final TranslationBuilder translationBuilder;
- /**
- * Disallow instantiation
- */
- private Factory() {
+ public Factory(I18nEnvironment environment) {
+ this.potSynchronizer = new PotSynchronizerImpl( environment );
+ this.poSynchronizer = new PoSynchronizerImpl( environment );
+ this.translationBuilder = new TranslationBuilderImpl( environment );
}
- public static PotSynchronizer getPotSynchronizer() {
+ public PotSynchronizer getPotSynchronizer() {
return potSynchronizer;
}
- public static PoSynchronizer getPoSynchronizer() {
+ public PoSynchronizer getPoSynchronizer() {
return poSynchronizer;
}
- public static TranslationBuilder getTranslationBuilder() {
+ public TranslationBuilder getTranslationBuilder() {
return translationBuilder;
}
}
Added: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/I18nEnvironment.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/I18nEnvironment.java (rev 0)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/I18nEnvironment.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -0,0 +1,39 @@
+/*
+ * jDocBook, processing of DocBook sources as a Maven plugin
+ *
+ * Copyright (c) 2009, Red Hat Middleware LLC or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors. All third-party contributions are
+ * distributed under license by Red Hat Middleware LLC.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301 USA
+ */
+package org.jboss.jdocbook.i18n;
+
+import java.util.List;
+
+import org.jboss.jdocbook.Environment;
+
+/**
+ * Describes the environment for processing i18n aspects of documentation.
+ *
+ * @author Steve Ebersole
+ */
+public interface I18nEnvironment extends Environment {
+ public MasterTranslationDescriptor getMasterTranslationDescriptor();
+
+ public List<I18nSource> getI18nSources(boolean excludeIngoredTranslations);
+}
Added: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/I18nSource.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/I18nSource.java (rev 0)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/I18nSource.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -0,0 +1,56 @@
+/*
+ * jDocBook, processing of DocBook sources as a Maven plugin
+ *
+ * Copyright (c) 2009, Red Hat Middleware LLC or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors. All third-party contributions are
+ * distributed under license by Red Hat Middleware LLC.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301 USA
+ */
+package org.jboss.jdocbook.i18n;
+
+import java.util.Locale;
+import java.io.File;
+
+/**
+ * Describes a source of localized content for a language.
+ *
+ * @author Steve Ebersole
+ */
+public interface I18nSource {
+ /**
+ * Retrieve the locale representation of the tralsnation language.
+ *
+ * @return The translation language locale.
+ */
+ public Locale getLocale();
+
+ /**
+ * Retrieve the directory containing PO files for this translation.
+ *
+ * @return This translation's PO file directory.
+ */
+ public File resolvePoDirectory();
+
+ /**
+ * Retrieve the directory to which translated XML files should go (created by applying the PO files on top of the
+ * master XML).
+ *
+ * @return This translation's XML directory.
+ */
+ public File resolveTranslatedXmlDirectory();
+}
Added: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/MasterTranslationDescriptor.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/MasterTranslationDescriptor.java (rev 0)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/MasterTranslationDescriptor.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -0,0 +1,41 @@
+/*
+ * jDocBook, processing of DocBook sources as a Maven plugin
+ *
+ * Copyright (c) 2009, Red Hat Middleware LLC or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors. All third-party contributions are
+ * distributed under license by Red Hat Middleware LLC.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301 USA
+ */
+package org.jboss.jdocbook.i18n;
+
+import java.util.Locale;
+import java.io.File;
+
+import org.jboss.jdocbook.render.PublishingSource;
+
+/**
+ * TODO : javadoc
+ *
+ * @author Steve Ebersole
+ */
+public interface MasterTranslationDescriptor extends PublishingSource {
+ public Locale getLocale();
+// public File getSourceDirectory();
+ public File resolveMasterDocument();
+ public File resolvePotDirectory();
+}
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/PoSynchronizer.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/PoSynchronizer.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/PoSynchronizer.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -23,10 +23,6 @@
*/
package org.jboss.jdocbook.i18n;
-import java.io.File;
-import java.util.Locale;
-
-import org.jboss.jdocbook.Options;
import org.jboss.jdocbook.JDocBookProcessException;
/**
@@ -40,12 +36,7 @@
/**
* Perform the synchronization on the the PO files.
*
- * @param potDirectory The directory containing the POT files.
- * @param translationDirectory The directory containing the translation PO files.
- * @param translationLocale The locale of the translation
- * @param options The user options
* @throws JDocBookProcessException unable to synchronize POT files
*/
- public void synchronizePo(File potDirectory, File translationDirectory, Locale translationLocale, Options options)
- throws JDocBookProcessException;
+ public void synchronizePoFiles() throws JDocBookProcessException;
}
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/PotSynchronizer.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/PotSynchronizer.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/PotSynchronizer.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -23,10 +23,7 @@
*/
package org.jboss.jdocbook.i18n;
-import java.io.File;
-
import org.jboss.jdocbook.JDocBookProcessException;
-import org.jboss.jdocbook.Options;
/**
* Contract for synchronizing (creating/updating) PortableObjectTemplate (POT)
@@ -42,11 +39,8 @@
* Perform the synchronization on the the POT files pertaining to the given
* master DocBook source.
*
- * @param masterFile The DocBook source
- * @param templateDirectory The directory where POT files are contained.
- * @param options The user options
* @throws JDocBookProcessException unable to synchronize POT files
*/
- public void synchronizePot(File masterFile, File templateDirectory, Options options) throws JDocBookProcessException;
+ public void synchronizePot() throws JDocBookProcessException;
}
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/TranslationBuilder.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/TranslationBuilder.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/TranslationBuilder.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -23,9 +23,6 @@
*/
package org.jboss.jdocbook.i18n;
-import java.io.File;
-
-import org.jboss.jdocbook.Options;
import org.jboss.jdocbook.JDocBookProcessException;
/**
@@ -36,13 +33,9 @@
*/
public interface TranslationBuilder {
/**
+ * Process the translation PO files into a set of translated XML files.
*
- * @param masterFile The master DocBook source
- * @param poDirectory The directory containing PO files
- * @param targetDirectory The directory into which to generate the translated XML
- * @param options The user options
* @throws JDocBookProcessException unable to apply PO translations
*/
- public void buildTranslation(File masterFile, File poDirectory, File targetDirectory, Options options)
- throws JDocBookProcessException;
+ public void buildTranslations() throws JDocBookProcessException;
}
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/gettext/PoSynchronizerImpl.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/gettext/PoSynchronizerImpl.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/gettext/PoSynchronizerImpl.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -28,8 +28,10 @@
import java.util.Locale;
import org.jboss.jdocbook.JDocBookProcessException;
-import org.jboss.jdocbook.Options;
+import org.jboss.jdocbook.Log;
import org.jboss.jdocbook.i18n.PoSynchronizer;
+import org.jboss.jdocbook.i18n.I18nEnvironment;
+import org.jboss.jdocbook.i18n.I18nSource;
import org.jboss.jdocbook.util.FileUtils;
import org.jboss.jdocbook.util.I18nUtils;
import org.jboss.jdocbook.util.VCSDirectoryExclusionFilter;
@@ -45,13 +47,30 @@
* @author Steve Ebersole
*/
public class PoSynchronizerImpl implements PoSynchronizer {
- /**
- * {@inheritDoc}
- */
- public void synchronizePo(File potDirectory, File translationDirectory, Locale translationLocale, Options options)
+ private final I18nEnvironment environment;
+
+ public PoSynchronizerImpl(I18nEnvironment environment) {
+ this.environment = environment;
+ }
+
+ private Log getLog() {
+ return environment.log();
+ }
+
+ public void synchronizePoFiles() {
+ for ( I18nSource source : environment.getI18nSources( true ) ) {
+ synchronizePo(
+ environment.getMasterTranslationDescriptor().resolvePotDirectory(),
+ source.resolvePoDirectory(),
+ source.getLocale()
+ );
+ }
+ }
+
+ private void synchronizePo(File potDirectory, File poDirectory, Locale translationLocale)
throws JDocBookProcessException {
if ( !potDirectory.exists() ) {
- options.getLog().info( "skipping PO updates; POT directory did not exist : {0}", potDirectory );
+ getLog().info( "skipping PO updates; POT directory did not exist : {0}", potDirectory );
return;
}
File[] files = potDirectory.listFiles( new VCSDirectoryExclusionFilter() );
@@ -60,32 +79,31 @@
// recurse into the directory by calling back into ourselves with the sub-dir
synchronizePo(
new File( potDirectory, files[i].getName() ),
- new File( translationDirectory, files[i].getName() ),
- translationLocale,
- options
+ new File( poDirectory, files[i].getName() ),
+ translationLocale
);
}
else {
if ( I18nUtils.isPotFile( files[i] ) ) {
- File translation = new File( translationDirectory, I18nUtils.determinePoFileName( files[i] ) );
- updateTranslation( files[i], translation, translationLocale, options );
+ File translation = new File( poDirectory, I18nUtils.determinePoFileName( files[i] ) );
+ updateTranslation( files[i], translation, translationLocale );
}
}
}
}
- private void updateTranslation(File template, File translation, Locale translationLocale, Options options) {
+ private void updateTranslation(File template, File translation, Locale translationLocale) {
if ( !template.exists() ) {
- options.getLog().trace( "skipping PO updates; POT file did not exist : {0}", template );
+ getLog().trace( "skipping PO updates; POT file did not exist : {0}", template );
return;
}
if ( translation.lastModified() >= template.lastModified() ) {
- options.getLog().trace( "skipping PO updates; up-to-date : {0}", translation );
+ getLog().trace( "skipping PO updates; up-to-date : {0}", translation );
return;
}
- final String translationLocaleString = LocaleUtils.render( translationLocale, options.getLocaleSeparator() );
+ final String translationLocaleString = LocaleUtils.render( translationLocale, environment.getOptions().getLocaleSeparator() );
CommandLine commandLine;
if ( translation.exists() ) {
@@ -100,19 +118,19 @@
if ( ! translation.getParentFile().exists() ) {
boolean created = translation.getParentFile().mkdirs();
if ( ! created ) {
- options.getLog().info( "Unable to create translation directory : {}", translationLocaleString );
+ getLog().info( "Unable to create PO directory {}", translation.getParentFile().getAbsolutePath() );
}
}
commandLine = CommandLine.parse( "msginit" );
commandLine.addArgument( "--no-translator" );
- commandLine.addArgument( "--locale=" + LocaleUtils.render( translationLocale, options.getLocaleSeparator() ) );
+ commandLine.addArgument( "--locale=" + translationLocaleString );
commandLine.addArgument( "-i" );
commandLine.addArgument( FileUtils.resolveFullPathName( template ) );
commandLine.addArgument( "-o" );
commandLine.addArgument( FileUtils.resolveFullPathName( translation ) );
}
- options.getLog().info( "po-synch -> " + commandLine.toString() );
+ getLog().info( "po-synch -> " + commandLine.toString() );
DefaultExecutor executor = new DefaultExecutor();
try {
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/gettext/PotSynchronizerImpl.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/gettext/PotSynchronizerImpl.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/gettext/PotSynchronizerImpl.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -28,8 +28,9 @@
import java.io.IOException;
import org.jboss.jdocbook.JDocBookProcessException;
-import org.jboss.jdocbook.Options;
+import org.jboss.jdocbook.Log;
import org.jboss.jdocbook.i18n.PotSynchronizer;
+import org.jboss.jdocbook.i18n.I18nEnvironment;
import org.jboss.jdocbook.util.FileUtils;
import org.jboss.jdocbook.util.I18nUtils;
import org.jboss.jdocbook.util.XIncludeHelper;
@@ -44,51 +45,67 @@
* @author Steve Ebersole
*/
public class PotSynchronizerImpl implements PotSynchronizer {
+ private I18nEnvironment environment;
+
+ public PotSynchronizerImpl(I18nEnvironment environment) {
+ this.environment = environment;
+ }
+
+ private Log getLog() {
+ return environment.log();
+ }
+
/**
* {@inheritDoc}
*/
- public void synchronizePot(File masterFile, File templateDirectory, Options options) throws JDocBookProcessException {
+ public void synchronizePot() throws JDocBookProcessException {
+ synchronizePot(
+ environment.getMasterTranslationDescriptor().resolveMasterDocument(),
+ environment.getMasterTranslationDescriptor().resolvePotDirectory()
+ );
+ }
+
+ private void synchronizePot(File masterFile, File potDirectory) throws JDocBookProcessException {
if ( !masterFile.exists() ) {
- options.getLog().info( "skipping POT updates; master file did not exist : {0}", masterFile );
+ getLog().info( "skipping POT updates; master file did not exist : {0}", masterFile );
return;
}
final File sourceBasedir = masterFile.getParentFile();
final String potFileName = I18nUtils.determinePotFileName( masterFile );
- final File potFile = new File( templateDirectory, potFileName );
- updatePortableObjectTemplate( masterFile, potFile, options );
+ final File potFile = new File( potDirectory, potFileName );
+ updatePortableObjectTemplate( masterFile, potFile );
// Note : recursion below accounts for inclusions within inclusions
for ( File inclusion : XIncludeHelper.locateInclusions( masterFile ) ) {
final String relativity = FileUtils.determineRelativity( inclusion, sourceBasedir );
- final File relativeTemplateDir = ( relativity == null ) ? templateDirectory : new File(
- templateDirectory,
- relativity
- );
- synchronizePot( inclusion, relativeTemplateDir, options );
+ final File relativeTemplateDir = ( relativity == null )
+ ? potDirectory
+ : new File( potDirectory, relativity );
+ synchronizePot( inclusion, relativeTemplateDir );
}
}
- private void updatePortableObjectTemplate(File masterFile, File potFile, Options options) {
+ private void updatePortableObjectTemplate(File masterFile, File potFile) {
if ( !masterFile.exists() ) {
- options.getLog().trace( "skipping POT update; source file did not exist : {0}", masterFile );
+ getLog().trace( "skipping POT update; source file did not exist : {0}", masterFile );
return;
}
if ( potFile.exists() && potFile.lastModified() >= masterFile.lastModified() ) {
- options.getLog().trace( "skipping POT update; up-to-date : {0}", potFile );
+ getLog().trace( "skipping POT update; up-to-date : {0}", potFile );
return;
}
if ( !potFile.getParentFile().exists() ) {
boolean created = potFile.getParentFile().mkdirs();
if ( !created ) {
- options.getLog().info( "Unable to generate POT directory {}" + FileUtils.resolveFullPathName( potFile.getParentFile() ) );
+ getLog().info( "Unable to generate POT directory {}" + FileUtils.resolveFullPathName( potFile.getParentFile() ) );
}
}
- executeXml2pot( masterFile, potFile, options );
+ executeXml2pot( masterFile, potFile );
}
- private void executeXml2pot(File masterFile, File potFile, Options options) {
+ private void executeXml2pot(File masterFile, File potFile) {
CommandLine commandLine = CommandLine.parse( "xml2pot" );
commandLine.addArgument( FileUtils.resolveFullPathName( masterFile ) );
@@ -99,7 +116,7 @@
PumpStreamHandler streamDirector = new PumpStreamHandler( xmlStream, System.err );
executor.setStreamHandler( streamDirector );
try {
- options.getLog().trace( "updating POT file {0}", potFile );
+ getLog().trace( "updating POT file {0}", potFile );
executor.execute( commandLine );
}
finally {
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/gettext/TranslationBuilderImpl.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/gettext/TranslationBuilderImpl.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/i18n/gettext/TranslationBuilderImpl.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -27,15 +27,18 @@
import java.io.FileOutputStream;
import java.io.IOException;
+import org.apache.commons.exec.CommandLine;
+import org.apache.commons.exec.DefaultExecutor;
+import org.apache.commons.exec.PumpStreamHandler;
import org.jboss.jdocbook.JDocBookProcessException;
-import org.jboss.jdocbook.Options;
+import org.jboss.jdocbook.Log;
+import org.jboss.jdocbook.i18n.I18nEnvironment;
+import org.jboss.jdocbook.i18n.I18nSource;
+import org.jboss.jdocbook.i18n.MasterTranslationDescriptor;
import org.jboss.jdocbook.i18n.TranslationBuilder;
import org.jboss.jdocbook.util.FileUtils;
import org.jboss.jdocbook.util.I18nUtils;
import org.jboss.jdocbook.util.XIncludeHelper;
-import org.apache.commons.exec.CommandLine;
-import org.apache.commons.exec.DefaultExecutor;
-import org.apache.commons.exec.PumpStreamHandler;
/**
* Implementation of the {@link org.jboss.jdocbook.i18n.TranslationBuilder} contract based on system calls
@@ -44,14 +47,36 @@
* @author Steve Ebersole
*/
public class TranslationBuilderImpl implements TranslationBuilder {
+ private final I18nEnvironment environment;
+
+ public TranslationBuilderImpl(I18nEnvironment environment) {
+ this.environment = environment;
+ }
+
+ private Log getLog() {
+ return environment.log();
+ }
+
+ public void buildTranslations() throws JDocBookProcessException {
+ MasterTranslationDescriptor master = environment.getMasterTranslationDescriptor();
+
+ for ( I18nSource source : environment.getI18nSources( true ) ) {
+ buildTranslation(
+ master.resolveMasterDocument(),
+ source.resolvePoDirectory(),
+ source.resolveTranslatedXmlDirectory()
+ );
+ }
+ }
+
/**
* {@inheritDoc}
*/
- public void buildTranslation(File masterFile, File poDirectory, File targetDirectory, Options options)
+ public void buildTranslation(File masterFile, File poDirectory, File targetDirectory)
throws JDocBookProcessException {
- options.getLog().trace( "starting translation [" + masterFile + "]" );
+ getLog().trace( "starting translation [" + masterFile + "]" );
if ( !masterFile.exists() ) {
- options.getLog().info( "skipping translation; master file did not exist : {0}", masterFile );
+ getLog().info( "skipping translation; master file did not exist : {}", masterFile );
return;
}
@@ -61,45 +86,45 @@
throw new JDocBookProcessException( "Unable to locate PO file for [" + masterFile.getName() + "] in [" + poDirectory.getName() + "]" );
}
final File translatedFile = new File( targetDirectory, masterFile.getName() );
- generateTranslatedXML( masterFile, poFile, translatedFile, options );
+ generateTranslatedXML( masterFile, poFile, translatedFile );
// Note : recursion below accounts for inclusions within inclusions
final File sourceBasedir = masterFile.getParentFile();
for ( File inclusion : XIncludeHelper.locateInclusions( masterFile ) ) {
- options.getLog().trace( "starting translation of inclusion [" + inclusion + "]" );
+ getLog().trace( "starting translation of inclusion [" + inclusion + "]" );
final String relativity = FileUtils.determineRelativity( inclusion, sourceBasedir );
- options.getLog().trace( "determined relativity : " + relativity );
+ getLog().trace( "determined relativity : " + relativity );
final File relativeTranslationDir = ( relativity == null )
? poDirectory
: new File( poDirectory, relativity );
final File relativeWorkDir = ( relativity == null )
? targetDirectory
: new File( targetDirectory, relativity );
- buildTranslation( inclusion, relativeTranslationDir, relativeWorkDir, options );
+ buildTranslation( inclusion, relativeTranslationDir, relativeWorkDir );
}
}
- private void generateTranslatedXML(File masterFile, File poFile, File translatedFile, Options options) {
+ private void generateTranslatedXML(File masterFile, File poFile, File translatedFile) {
if ( !masterFile.exists() ) {
- options.getLog().trace( "skipping translation; source file did not exist : {0}", masterFile );
+ getLog().trace( "skipping translation; source file did not exist : {0}", masterFile );
return;
}
if ( !poFile.exists() ) {
- options.getLog().trace( "skipping translation; PO file did not exist : {0}", poFile );
+ getLog().trace( "skipping translation; PO file did not exist : {0}", poFile );
return;
}
if ( translatedFile.exists()
&& translatedFile.lastModified() >= masterFile.lastModified()
&& translatedFile.lastModified() >= poFile.lastModified() ) {
- options.getLog().trace( "skipping translation; up-to-date : {0}", translatedFile );
+ getLog().trace( "skipping translation; up-to-date : {0}", translatedFile );
return;
}
if ( ! translatedFile.getParentFile().exists() ) {
boolean created = translatedFile.getParentFile().mkdirs();
if ( ! created ) {
- options.getLog().info( "Unable to create directories for translation" );
+ getLog().info( "Unable to create directories for translation" );
}
}
@@ -115,6 +140,9 @@
executor.setStreamHandler( streamDirector );
executor.execute( commandLine );
}
+ catch ( IOException ioe ) {
+ throw new JDocBookProcessException( "uanble to execute po2xml : " + ioe.getMessage() );
+ }
finally {
try {
xmlStream.flush();
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/profile/Profiler.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/profile/Profiler.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/profile/Profiler.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -23,8 +23,6 @@
*/
package org.jboss.jdocbook.profile;
-import java.io.File;
-
/**
* Contract for applying DocBook profiling based on the approach they term 'two-pass'.
*
@@ -32,10 +30,7 @@
*/
public interface Profiler {
/**
- * Given a source file, create its profiled equivalent.
- *
- * @param source The source file to be profiled.
- * @return The profiling output.
+ * Apply profiling to jDocBook sources.
*/
- public File applyProfiling(File source);
+ public void applyProfiling();
}
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/profile/ProfilerFactory.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/profile/ProfilerFactory.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/profile/ProfilerFactory.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -23,28 +23,23 @@
*/
package org.jboss.jdocbook.profile;
-import java.io.File;
+import org.jboss.jdocbook.render.RenderingEnvironment;
-import org.jboss.jdocbook.Options;
-
/**
* A factory for {@link Profiler} instances.
*
* @author Steve Ebersole
*/
public class ProfilerFactory {
- private final File outputDirectory;
- private final Options options;
+ private final RenderingEnvironment environment;
/**
- * Constructs a factory capable of producing {@link Profiler} instances writing to the given directory.
+ * Constructs a factory capable of producing appropriate {@link Profiler} instances.
*
- * @param outputDirectory The directory where profiling output should be written.
- * @param options The options.
+ * @param environment The profiling environment.
*/
- public ProfilerFactory(File outputDirectory, Options options) {
- this.options = options;
- this.outputDirectory = outputDirectory;
+ public ProfilerFactory(RenderingEnvironment environment) {
+ this.environment = environment;
}
/**
@@ -53,7 +48,7 @@
* @return The profiler.
*/
public Profiler buildProfiler() {
- return new ProfilerImpl( outputDirectory, options );
+ return new ProfilerImpl( environment );
}
}
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/profile/ProfilerImpl.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/profile/ProfilerImpl.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/profile/ProfilerImpl.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -30,10 +30,12 @@
import javax.xml.transform.TransformerException;
import javax.xml.transform.stream.StreamResult;
-import org.jboss.jdocbook.Options;
import org.jboss.jdocbook.render.RenderingException;
+import org.jboss.jdocbook.render.RenderingEnvironment;
+import org.jboss.jdocbook.render.PublishingSource;
import org.jboss.jdocbook.util.Constants;
import org.jboss.jdocbook.util.FileUtils;
+import org.jboss.jdocbook.util.LocaleUtils;
import org.jboss.jdocbook.xslt.XSLTException;
/**
@@ -42,32 +44,47 @@
* @author Steve Ebersole
*/
class ProfilerImpl implements Profiler {
- private final File outputDirectory;
- private final Options options;
+ private final RenderingEnvironment environment;
- ProfilerImpl(File outputDirectory, Options options) {
- this.outputDirectory = outputDirectory;
- this.options = options;
+ public ProfilerImpl(RenderingEnvironment environment) {
+ this.environment = environment;
}
/**
* {@inheritDoc}
*/
- public File applyProfiling(File sourceFile) {
+ public void applyProfiling() {
try {
- if ( !outputDirectory.exists() ) {
- boolean created = outputDirectory.mkdirs();
- if ( !created ) {
- options.getLog().info( "Unable to create directory " + outputDirectory.getAbsolutePath() );
+ for ( PublishingSource source : environment.getPublishingSources( true ) ) {
+ final File targetFile = source.resolveProfiledDocumentFile();
+ if ( ! targetFile.getParentFile().exists() ) {
+ boolean created = targetFile.getParentFile().mkdirs();
+ if ( !created ) {
+ environment.log().info( "Unable to create parent directory " + targetFile.getAbsolutePath() );
+ }
}
+ environment.log().info( "applying DocBook profiling [" + targetFile.getAbsolutePath() + "]" );
+
+ Transformer xslt = environment.getTransformerBuilder()
+ .buildStandardTransformer( Constants.MAIN_PROFILE_XSL_RESOURCE );
+
+ final String lang = LocaleUtils.render( source.getLocale(), environment.getOptions().getLocaleSeparator() );
+
+ xslt.setParameter( "l10n.gentext.language", lang );
+
+ // figure out the attribute upon which to profile
+ final String profilingAttributeName = environment.getProfilingConfiguration().getAttributeName();
+ if ( profilingAttributeName == null || "lang".equals( profilingAttributeName ) ) {
+ xslt.setParameter( "profile.attribute", "lang" );
+ xslt.setParameter( "profile.lang", lang );
+ }
+ else {
+ xslt.setParameter( "profile.attribute", profilingAttributeName );
+ xslt.setParameter( "profile.value", environment.getProfilingConfiguration().getAttributeValue() );
+ }
+
+ xslt.transform( buildSource( source.resolveDocumentFile() ), buildResult( targetFile ) );
}
- File targetFile = new File( outputDirectory, sourceFile.getName() );
- options.getLog().info( "applying DocBook profiling [" + targetFile.getAbsolutePath() + "]" );
-
- Transformer xslt = options.getTransformerBuilder()
- .buildStandardTransformer( Constants.MAIN_PROFILE_XSL_RESOURCE );
- xslt.transform( buildSource( sourceFile ), buildResult( targetFile ) );
- return targetFile;
}
catch ( TransformerException e ) {
throw new XSLTException( "error performing translation [" + e.getLocationAsString() + "] : " + e.getMessage(), e );
@@ -75,7 +92,11 @@
}
private Source buildSource(File sourceFile) throws RenderingException {
- return FileUtils.createSAXSource( sourceFile, options.getCatalogResolver(), options.isXincludeSupported() );
+ return FileUtils.createSAXSource(
+ sourceFile,
+ environment.getCatalogResolver(),
+ environment.getOptions().isXincludeSupported()
+ );
}
protected Result buildResult(File targetFile) throws RenderingException, XSLTException {
Added: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/PublishingSource.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/PublishingSource.java (rev 0)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/PublishingSource.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -0,0 +1,75 @@
+/*
+ * jDocBook, processing of DocBook sources as a Maven plugin
+ *
+ * Copyright (c) 2009, Red Hat Middleware LLC or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors. All third-party contributions are
+ * distributed under license by Red Hat Middleware LLC.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301 USA
+ */
+package org.jboss.jdocbook.render;
+
+import java.util.Locale;
+import java.io.File;
+
+import org.jboss.jdocbook.render.format.FormatPlan;
+
+/**
+ * Describes a source content DocBook publishing.
+ *
+ * @author Steve Ebersole
+ */
+public interface PublishingSource {
+ /**
+ * Retrieve the language for this source.
+ *
+ * @return The language for this source.
+ */
+ public Locale getLocale();
+
+ public FormatPlan[] getFormatPlans();
+
+ /**
+ * Retrieve the DocBook XML document file to be processed.
+ *
+ * @return The DocBook XML document file.
+ */
+ public File resolveDocumentFile();
+
+ /**
+ * Retrieve the directory to use in order to apply DocBook profilng to this particular publishing source.
+ *
+ * @return The DocBook profiling output directory for this source.
+ */
+ public File resolveProfilingDirectory();
+
+ /**
+ * Retrieve the DocBook XML document file to be processed.
+ *
+ * @return The DocBook XML document file.
+ */
+ public File resolveProfiledDocumentFile();
+
+ /**
+ * Retrieve the base directory into which the formatted DocBook outputs should be written.
+ *
+ * @return The base directory into which the formatted DocBook outputs should be written.
+ */
+ public File resolvePublishingDirectory();
+
+ public File resolveXslFoDirectory();
+}
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/Renderer.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/Renderer.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/Renderer.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -23,9 +23,6 @@
*/
package org.jboss.jdocbook.render;
-import java.io.File;
-
-import org.jboss.jdocbook.render.format.FormatPlan;
import org.jboss.jdocbook.xslt.XSLTException;
/**
@@ -34,19 +31,11 @@
* @author Steve Ebersole
*/
public interface Renderer {
-
/**
- * Performs the actual rendering or transforming of the DocBook sources into
- * the respective output format.
+ * Performs the actual rendering or transforming of the DocBook sources into the respective output formats.
*
- * @param source The source DocBook file.
- * @param plan The formatting plan.
- * @param renderingDirectory The directory into which to render
- * @param stagingDirectory The directory where images resources were staged
* @throws RenderingException Problem writing the output file(s).
* @throws XSLTException Problem performing XSL transformation.
*/
- public void render(File source, FormatPlan plan, File renderingDirectory, File stagingDirectory) throws RenderingException, XSLTException;
-
- public File getAttachableBundle(File source);
+ public void render() throws RenderingException, XSLTException;
}
Copied: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/RendererFactory.java (from rev 25602, labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/RendererFactory.java)
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/RendererFactory.java (rev 0)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/RendererFactory.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -0,0 +1,65 @@
+/*
+ * jDocBook, processing of DocBook sources as a Maven plugin
+ *
+ * Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors. All third-party contributions are
+ * distributed under license by Red Hat Middleware LLC.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301 USA
+ */
+package org.jboss.jdocbook.render;
+
+import org.jboss.jdocbook.render.format.StandardDocBookFormatDescriptors;
+import org.jboss.jdocbook.render.format.FormatPlan;
+import org.jboss.jdocbook.render.impl.PDFRenderer;
+import org.jboss.jdocbook.render.impl.BasicRenderer;
+import org.jboss.jdocbook.render.impl.XslFoGenerator;
+import org.xml.sax.EntityResolver;
+
+/**
+ * A factory for building {@link Renderer} instances.
+ *
+ * @author Steve Ebersole
+ */
+public class RendererFactory {
+ private final RenderingEnvironment environment;
+
+ public RendererFactory(RenderingEnvironment environment) {
+ this.environment = environment;
+ }
+
+ /**
+ * Build an appropriate renderer for the given <tt>formatName</tt>
+ *
+ * @param formatPlan The format plan
+ * @param entityResolver The entity resolver to use within the renderer.
+ *
+ * @return The renderer.
+ */
+ public Renderer buildRenderer(FormatPlan formatPlan, EntityResolver entityResolver) {
+ if ( formatPlan.getName().equals( StandardDocBookFormatDescriptors.PDF.getName() ) ) {
+ return new PDFRenderer( environment, entityResolver, formatPlan );
+ }
+ else {
+ return new BasicRenderer( environment, entityResolver, formatPlan );
+ }
+ }
+
+ public XslFoGenerator buildXslFoGenerator(FormatPlan formatPlan, EntityResolver entityResolver) {
+ return new PDFRenderer( environment, entityResolver, formatPlan ).buildXslFoGenerator();
+ }
+}
Added: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/RenderingEnvironment.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/RenderingEnvironment.java (rev 0)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/RenderingEnvironment.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -0,0 +1,45 @@
+/*
+ * jDocBook, processing of DocBook sources as a Maven plugin
+ *
+ * Copyright (c) 2009, Red Hat Middleware LLC or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors. All third-party contributions are
+ * distributed under license by Red Hat Middleware LLC.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301 USA
+ */
+package org.jboss.jdocbook.render;
+
+import java.util.List;
+import java.io.File;
+
+import org.jboss.jdocbook.Environment;
+import org.jboss.maven.plugins.jdocbook.Profiling;
+
+/**
+ * Describes the environment for performing DocBook rendering.
+ *
+ * @author Steve Ebersole
+ */
+public interface RenderingEnvironment extends Environment {
+ public List<PublishingSource> getPublishingSources(boolean excludeIngoredTranslations);
+
+ public File getStagingDirectory();
+
+ public File[] getFontDirectories();
+
+ public Profiling getProfilingConfiguration();
+}
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/BasicRenderer.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/BasicRenderer.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/BasicRenderer.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -27,19 +27,24 @@
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
+import java.util.Locale;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.stream.StreamResult;
-import org.jboss.jdocbook.Options;
+import org.jboss.jdocbook.Log;
+import org.jboss.jdocbook.render.PublishingSource;
import org.jboss.jdocbook.render.Renderer;
+import org.jboss.jdocbook.render.RenderingEnvironment;
import org.jboss.jdocbook.render.RenderingException;
import org.jboss.jdocbook.render.format.FormatPlan;
import org.jboss.jdocbook.util.FileUtils;
-import org.jboss.jdocbook.util.ResourceHelper;
+import org.jboss.jdocbook.util.LocaleUtils;
+import org.jboss.jdocbook.util.ConsoleRedirectionHandler;
import org.jboss.jdocbook.xslt.XSLTException;
+import org.xml.sax.EntityResolver;
/**
* The basic implementation of the {@link Renderer} contract.
@@ -47,29 +52,63 @@
* @author Steve Ebersole
*/
public class BasicRenderer implements Renderer {
- protected final Options options;
+ protected final RenderingEnvironment environment;
+ protected final EntityResolver entityResolver;
+ protected final FormatPlan formatPlan;
+
/**
* Construct a renderer instance using the given <tt>options</tt>.
*
- * @param options The options.
+ * @param environment execution environment
+ * @param entityResolver The entity resolver to use.
+ * @param formatPlan The formating plan/options
*/
- public BasicRenderer(Options options) {
- this.options = options;
+ public BasicRenderer(RenderingEnvironment environment, EntityResolver entityResolver, FormatPlan formatPlan) {
+ this.environment = environment;
+ this.entityResolver = entityResolver;
+ this.formatPlan = formatPlan;
}
- /**
- * {@inheritDoc}
- */
- public File getAttachableBundle(File source) {
- // todo : we need to figure out how we are going to handle attachments...
- return null;
+ protected Log getLog() {
+ return environment.log();
}
+ public void render() throws RenderingException, XSLTException {
+ for ( PublishingSource source : environment.getPublishingSources( true ) ) {
+ final String lang = stringify( source.getLocale() );
+ getLog().trace( "Starting generation " + lang );
+
+ // determine the source file from which to render
+ File sourceFile = environment.getProfilingConfiguration().isEnabled()
+ ? source.resolveProfiledDocumentFile()
+ : source.resolveDocumentFile();
+ if ( !sourceFile.exists() ) {
+ getLog().info( "Source document [" + sourceFile.getAbsolutePath() + "] did not exist; skipping" );
+ continue;
+ }
+
+ final File publishingDirectory = source.resolvePublishingDirectory();
+ if ( ! publishingDirectory.exists() ) {
+ boolean created = publishingDirectory.mkdirs();
+ if ( !created ) {
+ getLog().info( "Unable to create publishing directory {}", publishingDirectory.getAbsolutePath() );
+ }
+ }
+
+ getLog().info( "Processing " + lang + " -> " + formatPlan.getName() );
+ render( sourceFile, formatPlan, publishingDirectory, environment.getStagingDirectory(), source );
+ }
+ }
+
+ private String stringify(Locale locale) {
+ return LocaleUtils.render( locale, environment.getOptions().getLocaleSeparator() );
+ }
+
/**
* {@inheritDoc}
*/
- public void render(File sourceFile, FormatPlan formatPlan, File renderingDirectory, File stagingDirectory) throws RenderingException, XSLTException {
+ public void render(File sourceFile, FormatPlan formatPlan, File renderingDirectory, File stagingDirectory, PublishingSource source) throws RenderingException, XSLTException {
File targetDirectory = new File( renderingDirectory, formatPlan.getName() );
if ( ! targetDirectory.exists() ) {
FileUtils.mkdir( targetDirectory.getAbsolutePath() );
@@ -102,14 +141,14 @@
if ( targetFile.exists() ) {
boolean deleted = targetFile.delete();
if ( !deleted ) {
- options.getLog().info( "Unable to delete existing target file " + targetFile.getAbsolutePath() );
+ getLog().info( "Unable to delete existing target file " + targetFile.getAbsolutePath() );
}
}
if ( !targetFile.exists() ) {
try {
boolean created = targetFile.createNewFile();
if ( !created ) {
- options.getLog().info( "Unable to create target file [{}]", targetFile.getAbsolutePath() );
+ getLog().info( "Unable to create target file [{}]", targetFile.getAbsolutePath() );
}
}
catch ( IOException e ) {
@@ -117,39 +156,58 @@
}
}
- performRendering( sourceFile, formatPlan, stagingDirectory, targetFile );
+ performRendering( sourceFile, formatPlan, stagingDirectory, targetFile , source );
}
- private void performRendering(File sourceFile, FormatPlan formatPlan, File stagingDirectory, File targetFile) {
+ private void performRendering(File sourceFile, FormatPlan formatPlan, File stagingDirectory, File targetFile, PublishingSource source) {
Transformer transformer = buildTransformer( targetFile, formatPlan, stagingDirectory );
- Source transformationSource = buildSource( sourceFile );
- Result transformationResult = buildResult( targetFile );
+ String lang = LocaleUtils.render( source.getLocale(), environment.getOptions().getLocaleSeparator() );
+ transformer.setParameter( "l10n.gentext.language", lang );
+
+ ConsoleRedirectionHandler console = new ConsoleRedirectionHandler( determineConsoleRedirectFile( source, formatPlan ) );
+ console.start();
+
try {
- // todo redirect stdout to file? fop is very very verbose here...
- transformer.transform( transformationSource, transformationResult );
+ Source transformationSource = buildSource( sourceFile );
+ Result transformationResult = buildResult( targetFile );
+
+ try {
+ transformer.transform( transformationSource, transformationResult );
+ }
+ catch ( TransformerException e ) {
+ throw new XSLTException( "error rendering [" + e.getMessageAndLocation() + "] on " + sourceFile.getName(), e );
+ }
+ finally {
+ releaseResult( transformationResult );
+ }
}
- catch ( TransformerException e ) {
- throw new XSLTException( "error rendering [" + e.getMessageAndLocation() + "] on " + sourceFile.getName(), e );
- }
finally {
- releaseResult( transformationResult );
+ console.stop();
}
}
+ private File determineConsoleRedirectFile(PublishingSource source, FormatPlan formatPlan) {
+ String fileName = "console-"
+ + stringify( source.getLocale() ) + "-"
+ + formatPlan.getName()
+ + ".log";
+ return new File( new File( environment.getWorkDirectory(), "log" ), fileName );
+ }
+
private String deduceTargetFileName(File source, FormatPlan formatPlan) {
return formatPlan.getTargetNamingStrategy().determineTargetFileName( source );
}
protected Transformer buildTransformer(File targetFile, FormatPlan formatPlan, File stagingDirectory) throws RenderingException, XSLTException {
- final URL transformationStylesheet = ResourceHelper.requireResource( formatPlan.getStylesheetResource() );
- Transformer transformer = options.getTransformerBuilder().buildTransformer( formatPlan, transformationStylesheet );
+ final URL transformationStylesheet = environment.getResourceHelper().requireResource( formatPlan.getStylesheetResource() );
+ Transformer transformer = environment.getTransformerBuilder().buildTransformer( formatPlan, transformationStylesheet );
if ( formatPlan.isImagePathSettingRequired() ) {
try {
- String imgSrcPath = new File( stagingDirectory, "images" ).toURL().toString();
+ String imgSrcPath = new File( stagingDirectory, "images" ).toURI().toURL().toString();
if ( !imgSrcPath.endsWith( "/" ) ) {
imgSrcPath += '/';
}
- options.getLog().trace( "setting 'img.src.path' xslt parameter [" + imgSrcPath + "]" );
+ getLog().trace( "setting 'img.src.path' xslt parameter [" + imgSrcPath + "]" );
transformer.setParameter( "img.src.path", imgSrcPath );
}
catch ( MalformedURLException e ) {
@@ -157,7 +215,7 @@
}
}
- transformer.setParameter( "keep.relative.image.uris", options.isUseRelativeImageUris() ? "1" : "0" );
+ transformer.setParameter( "keep.relative.image.uris", environment.getOptions().isUseRelativeImageUris() ? "1" : "0" );
transformer.setParameter( "base.dir", targetFile.getParent() + File.separator );
transformer.setParameter( "manifest.in.base.dir", "1" );
@@ -169,8 +227,8 @@
return transformer;
}
- private Source buildSource(File sourceFile) throws RenderingException {
- return FileUtils.createSAXSource( sourceFile, options.getCatalogResolver(), options.isXincludeSupported() );
+ protected Source buildSource(File sourceFile) throws RenderingException {
+ return FileUtils.createSAXSource( sourceFile, entityResolver, environment.getOptions().isXincludeSupported() );
}
protected Result buildResult(File targetFile) throws RenderingException, XSLTException {
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/PDFRenderer.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/PDFRenderer.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/PDFRenderer.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -20,25 +20,18 @@
* Free Software Foundation, Inc.
* 51 Franklin Street, Fifth Floor
* Boston, MA 02110-1301 USA
- *
*/
package org.jboss.jdocbook.render.impl;
-import java.io.BufferedOutputStream;
import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
import javax.xml.transform.Result;
-import javax.xml.transform.sax.SAXResult;
-import org.apache.fop.apps.FOUserAgent;
-import org.apache.fop.apps.Fop;
-import org.apache.fop.apps.FopFactory;
-import org.apache.fop.apps.MimeConstants;
-
-import org.jboss.jdocbook.Options;
+import org.jboss.jdocbook.render.RenderingEnvironment;
import org.jboss.jdocbook.render.RenderingException;
+import org.jboss.jdocbook.render.format.FormatPlan;
+import org.jboss.jdocbook.render.impl.fop.ResultImpl;
+import org.jboss.jdocbook.render.impl.fop.XslFoGeneratorImpl;
+import org.xml.sax.EntityResolver;
/**
* Implementation of the {@link org.jboss.jdocbook.render.Renderer} contract specifically for dealing with PDF generation.
@@ -46,48 +39,20 @@
* @author Steve Ebersole
*/
public class PDFRenderer extends BasicRenderer {
- public PDFRenderer(Options options) {
- super( options );
+ public PDFRenderer(RenderingEnvironment environment, EntityResolver entityResolver, FormatPlan formatPlan) {
+ super( environment, entityResolver, formatPlan );
}
protected Result buildResult(File targetFile) throws RenderingException {
- return new ResultImpl( targetFile );
+ return new ResultImpl( targetFile, environment );
}
protected void releaseResult(Result transformationResult) {
( ( ResultImpl ) transformationResult ).release();
}
- private class ResultImpl extends SAXResult {
- private OutputStream outputStream;
-
- public ResultImpl(File targetFile) throws RenderingException {
- try {
- FopFactory fopFactory = FopFactory.newInstance();
-
- outputStream = new BufferedOutputStream( new FileOutputStream( targetFile ) );
-
- FOUserAgent fopUserAgent = fopFactory.newFOUserAgent();
- fopUserAgent.setProducer( "jDocBook Plugin for Maven" );
-
- Fop fop = fopFactory.newFop( MimeConstants.MIME_PDF, fopUserAgent, outputStream );
- setHandler( fop.getDefaultHandler() );
- }
- catch ( Throwable t ) {
- throw new RenderingException( "error building transformation result [" + targetFile.getAbsolutePath() + "]", t );
- }
- }
-
- private void release() {
- if ( outputStream == null ) {
- return;
- }
- try {
- outputStream.flush();
- outputStream.close();
- }
- catch ( IOException ignore ) {
- }
- }
+ public XslFoGenerator buildXslFoGenerator() {
+ return new XslFoGeneratorImpl( environment, formatPlan );
}
+
}
Deleted: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/RendererFactory.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/RendererFactory.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/RendererFactory.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -1,56 +0,0 @@
-/*
- * jDocBook, processing of DocBook sources as a Maven plugin
- *
- * Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
- * indicated by the @author tags or express copyright attribution
- * statements applied by the authors. All third-party contributions are
- * distributed under license by Red Hat Middleware LLC.
- *
- * This copyrighted material is made available to anyone wishing to use, modify,
- * copy, or redistribute it subject to the terms and conditions of the GNU
- * Lesser General Public License, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this distribution; if not, write to:
- * Free Software Foundation, Inc.
- * 51 Franklin Street, Fifth Floor
- * Boston, MA 02110-1301 USA
- */
-package org.jboss.jdocbook.render.impl;
-
-import org.jboss.jdocbook.Options;
-import org.jboss.jdocbook.render.format.StandardDocBookFormatDescriptors;
-import org.jboss.jdocbook.render.Renderer;
-
-/**
- * A factory for building {@link Renderer} instances.
- *
- * @author Steve Ebersole
- */
-public class RendererFactory {
- private final Options options;
-
- public RendererFactory(Options options) {
- this.options = options;
- }
-
- /**
- * Build an appropriate renderer for the given <tt>formatName</tt>
- *
- * @param formatName The name of the formatting in which we want to perform rendering.
- * @return The renderer.
- */
- public Renderer buildRenderer(String formatName) {
- if ( formatName.equals( StandardDocBookFormatDescriptors.PDF.getName() ) ) {
- return new PDFRenderer( options );
- }
- else {
- return new BasicRenderer( options );
- }
- }
-}
Added: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/XslFoGenerator.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/XslFoGenerator.java (rev 0)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/XslFoGenerator.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -0,0 +1,36 @@
+/*
+ * jDocBook, processing of DocBook sources as a Maven plugin
+ *
+ * Copyright (c) 2009, Red Hat Middleware LLC or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors. All third-party contributions are
+ * distributed under license by Red Hat Middleware LLC.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301 USA
+ */
+package org.jboss.jdocbook.render.impl;
+
+import org.jboss.jdocbook.xslt.XSLTException;
+import org.jboss.jdocbook.render.RenderingException;
+
+/**
+ * TODO : javadoc
+*
+* @author Steve Ebersole
+*/
+public interface XslFoGenerator {
+ public void generateXslFo() throws RenderingException, XSLTException;
+}
Added: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/fop/FopConfigHelper.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/fop/FopConfigHelper.java (rev 0)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/fop/FopConfigHelper.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -0,0 +1,272 @@
+/*
+ * jDocBook, processing of DocBook sources as a Maven plugin
+ *
+ * Copyright (c) 2009, Red Hat Middleware LLC or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors. All third-party contributions are
+ * distributed under license by Red Hat Middleware LLC.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301 USA
+ */
+package org.jboss.jdocbook.render.impl.fop;
+
+import java.util.List;
+import java.util.ArrayList;
+import java.io.File;
+import java.io.IOException;
+import java.io.FileOutputStream;
+import java.io.BufferedOutputStream;
+import java.io.FileNotFoundException;
+import java.net.URL;
+import java.net.MalformedURLException;
+
+import org.apache.fop.fonts.FontCache;
+import org.apache.fop.fonts.EmbedFontInfo;
+import org.apache.fop.fonts.FontTriplet;
+import org.apache.fop.fonts.FontResolver;
+import org.apache.fop.fonts.FontSetup;
+import org.apache.fop.fonts.autodetect.FontInfoFinder;
+import org.apache.avalon.framework.configuration.DefaultConfiguration;
+import org.apache.avalon.framework.configuration.ConfigurationUtil;
+import org.jboss.jdocbook.render.RenderingEnvironment;
+import org.jboss.jdocbook.JDocBookProcessException;
+import org.jdom.output.XMLOutputter;
+import org.jdom.output.Format;
+import org.jdom.input.DOMBuilder;
+
+/**
+ * Delegate to help manage building a FOP user-config
+ *
+ * @author Steve Ebersole
+ */
+public class FopConfigHelper {
+ /**
+ * {@link FontCache} persistent cache file path, relative to jDocBook work directory.
+ */
+ public static final String FONT_CACHE_FILE = "fop/fop-fonts.cache";
+
+ private static FopConfigHelper INSTANCE;
+
+ public static DefaultConfiguration getFopConfiguration(RenderingEnvironment environment) {
+ if ( INSTANCE == null ) {
+ environment.log().info( "creating FOP user-config DOM" );
+ INSTANCE = new FopConfigHelper( environment );
+ }
+ return INSTANCE.fopConfiguration;
+ }
+
+ private RenderingEnvironment environment;
+ private DefaultConfiguration fopConfiguration;
+
+ public FopConfigHelper(RenderingEnvironment environment) {
+ this.environment = environment;
+ this.fopConfiguration = buildFopConfiguration();
+ }
+
+ private DefaultConfiguration buildFopConfiguration() {
+ DefaultConfiguration fopUserConfiguration = new DefaultConfiguration( "fop" );
+ fopUserConfiguration.setAttribute( "version", "1.0" );
+
+ DefaultConfiguration strictConfig = new DefaultConfiguration( "strict-configuration" );
+ strictConfig.setValue( true );
+ fopUserConfiguration.addChild( strictConfig );
+
+ DefaultConfiguration renderersConfig = new DefaultConfiguration( "renderers" );
+ fopUserConfiguration.addChild( renderersConfig );
+
+ DefaultConfiguration pdfRendererConfig = new DefaultConfiguration( "renderer" );
+ pdfRendererConfig.setAttribute( "mime", "application/pdf" );
+ renderersConfig.addChild( pdfRendererConfig );
+
+ pdfRendererConfig.addChild( buildFontsConfig() );
+
+ dumpUserConfigToFile( fopUserConfiguration );
+
+ return fopUserConfiguration;
+ }
+
+ @SuppressWarnings({ "unchecked" })
+ private DefaultConfiguration buildFontsConfig() {
+ DefaultConfiguration fontsConfig = new DefaultConfiguration( "fonts" );
+
+// did not work for me :(
+// if ( environment.getFontDirectories() != null ) {
+// for ( File fontDirectory : environment.getFontDirectories() ) {
+// DefaultConfiguration fontDirectoryElement = new DefaultConfiguration( "directory" );
+// fontDirectoryElement.setValue( fontDirectory.getAbsolutePath() );
+// fontsConfig.addChild( fontDirectoryElement );
+// }
+// }
+
+ // this code is mostly copied from
+ // http://dev.plutext.org/trac/docx4j/browser/trunk/docx4j/src/main/java/org/docx4j/convert/out/pdf/viaXSLFO/Conversion.java
+ //
+ // Thanks to Jason Harrop from the fop-user list (and who wrote that code) for pointing it out
+ for ( EmbedFontInfo embedFontInfo : locateEmbedFontInfos() ) {
+ DefaultConfiguration fontConfig = new DefaultConfiguration( "font" );
+ fontsConfig.addChild( fontConfig );
+ fontConfig.setAttribute( "embed-url", embedFontInfo.getEmbedFile() );
+ if ( embedFontInfo.getSubFontName() != null ) {
+ fontConfig.setAttribute( "sub-font", embedFontInfo.getSubFontName() );
+ }
+
+ FontTriplet triplet = ( FontTriplet ) embedFontInfo.getFontTriplets().get( 0 );
+
+ fontConfig.addChild(
+ generateFontTripletConfig(
+ triplet.getName(),
+ triplet.getStyle(),
+ triplet.getWeight()
+ )
+ );
+ fontConfig.addChild(
+ generateFontTripletConfig(
+ triplet.getName(),
+ "normal",
+ "bold"
+ )
+ );
+ fontConfig.addChild(
+ generateFontTripletConfig(
+ triplet.getName(),
+ "italic",
+ "bold"
+ )
+ );
+ fontConfig.addChild(
+ generateFontTripletConfig(
+ triplet.getName(),
+ "italic",
+ "normal"
+ )
+ );
+ }
+
+ if ( environment.getOptions().isAutoDetectFontsEnabled() ) {
+ DefaultConfiguration autoDetect = new DefaultConfiguration( "auto-detect" );
+ fontsConfig.addChild( autoDetect );
+ }
+
+ return fontsConfig;
+ }
+
+ private List<EmbedFontInfo> locateEmbedFontInfos() {
+ List<EmbedFontInfo> infoList = new ArrayList<EmbedFontInfo>();
+ if ( environment.getFontDirectories() != null ) {
+ FontCache fontCache = environment.getOptions().isUseFopFontCache()
+ ? FontCache.loadFrom( new File( getFopWorkDirectory(), "fop-font.cache" ) )
+ : new FontCache();
+ FontResolver fontResolver = FontSetup.createMinimalFontResolver();
+ FontInfoFinder fontInfoFinder = new FontInfoFinder();
+ for ( File fontDirectory : environment.getFontDirectories() ) {
+ for ( File fontFile : fontDirectory.listFiles() ) {
+ EmbedFontInfo[] infos = fontInfoFinder.find( toURL( fontFile ), fontResolver, fontCache );
+ if ( infos == null || infos.length == 0 ) {
+ continue;
+ }
+ for ( EmbedFontInfo info : infos ) {
+ if ( info.getEmbedFile() != null ) {
+ infoList.add( info );
+ }
+ }
+ }
+ }
+ }
+
+ return infoList;
+ }
+
+ private URL toURL(File file) {
+ try {
+ return file.toURI().toURL();
+ }
+ catch ( MalformedURLException ignore ) {
+ }
+ return null;
+ }
+
+ private DefaultConfiguration generateFontTripletConfig(String name, String style, int weight) {
+ return generateFontTripletConfig(
+ name,
+ style,
+ weight >= 700 ? "bold" : "normal"
+ );
+ }
+
+ private DefaultConfiguration generateFontTripletConfig(String name, String style, String weight) {
+ DefaultConfiguration tripletConfig = new DefaultConfiguration( "font-triplet" );
+ tripletConfig.setAttribute( "name", name );
+ tripletConfig.setAttribute( "style", style );
+ tripletConfig.setAttribute( "weight", weight );
+
+ return tripletConfig;
+ }
+
+ private File fopWorkDirectory;
+
+ private File getFopWorkDirectory() {
+ if ( fopWorkDirectory == null ) {
+ final File dir = new File( environment.getWorkDirectory(), "fop" );
+ if ( dir.exists() ) {
+ fopWorkDirectory = dir;
+ }
+ else {
+ boolean created = dir.mkdirs();
+ if ( created ) {
+ fopWorkDirectory = dir;
+ }
+ else {
+ environment.log().info( "Problem creating fop work directory" );
+ }
+ }
+ }
+ return fopWorkDirectory;
+ }
+
+ private void dumpUserConfigToFile(DefaultConfiguration fopUserConfiguration) {
+ File dumpFile = new File( getFopWorkDirectory(), "generated-user-config.xml" );
+
+ if ( ! dumpFile.exists() ) {
+ try {
+ //noinspection ResultOfMethodCallIgnored
+ dumpFile.createNewFile();
+ }
+ catch ( IOException e ) {
+ environment.log().error( "Unable to dump generated FOP user config", e );
+ }
+ }
+
+ try {
+ BufferedOutputStream outputStream = new BufferedOutputStream(
+ new FileOutputStream( dumpFile )
+ );
+
+ XMLOutputter outputter = new XMLOutputter( Format.getCompactFormat().setIndent( " " ) );
+ outputter.output(
+ new DOMBuilder().build( ConfigurationUtil.toElement( fopUserConfiguration ) ),
+ outputStream
+ );
+ }
+ catch ( FileNotFoundException e ) {
+ // should never ever happen, see checks above..
+ throw new JDocBookProcessException( "unable to open file for writing generated FOP user-config", e );
+ }
+ catch ( IOException e ) {
+ environment.log().info( "Unable to write generated FOP user-config to file", e );
+ }
+
+ }
+}
Added: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/fop/ResultImpl.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/fop/ResultImpl.java (rev 0)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/fop/ResultImpl.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -0,0 +1,77 @@
+/*
+ * jDocBook, processing of DocBook sources as a Maven plugin
+ *
+ * Copyright (c) 2009, Red Hat Middleware LLC or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors. All third-party contributions are
+ * distributed under license by Red Hat Middleware LLC.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301 USA
+ */
+package org.jboss.jdocbook.render.impl.fop;
+
+import java.io.OutputStream;
+import java.io.File;
+import java.io.BufferedOutputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import javax.xml.transform.sax.SAXResult;
+
+import org.jboss.jdocbook.render.RenderingException;
+import org.jboss.jdocbook.render.RenderingEnvironment;
+import org.apache.fop.apps.FopFactory;
+import org.apache.fop.apps.FOUserAgent;
+import org.apache.fop.apps.Fop;
+import org.apache.fop.apps.MimeConstants;
+
+/**
+ * {@link SAXResult} object used to pipe PDF XSLT events through to FOP for PDF generation.
+*
+* @author Steve Ebersole
+*/
+public class ResultImpl extends SAXResult {
+ private OutputStream outputStream;
+
+ public ResultImpl(File targetFile, RenderingEnvironment environment) throws RenderingException {
+ try {
+ outputStream = new BufferedOutputStream( new FileOutputStream( targetFile ) );
+
+ FopFactory fopFactory = FopFactory.newInstance();
+ fopFactory.setUserConfig( FopConfigHelper.getFopConfiguration( environment ) );
+
+ FOUserAgent fopUserAgent = fopFactory.newFOUserAgent();
+ fopUserAgent.setProducer( "jDocBook Plugin for Maven" );
+
+ Fop fop = fopFactory.newFop( MimeConstants.MIME_PDF, fopUserAgent, outputStream );
+ this.setHandler( fop.getDefaultHandler() );
+ }
+ catch ( Throwable t ) {
+ throw new RenderingException( "error building transformation result [" + targetFile.getAbsolutePath() + "]", t );
+ }
+ }
+
+ public void release() {
+ if ( outputStream == null ) {
+ return;
+ }
+ try {
+ outputStream.flush();
+ outputStream.close();
+ }
+ catch ( IOException ignore ) {
+ }
+ }
+}
Added: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/fop/XslFoGeneratorImpl.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/fop/XslFoGeneratorImpl.java (rev 0)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/fop/XslFoGeneratorImpl.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -0,0 +1,145 @@
+/*
+ * jDocBook, processing of DocBook sources as a Maven plugin
+ *
+ * Copyright (c) 2009, Red Hat Middleware LLC or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors. All third-party contributions are
+ * distributed under license by Red Hat Middleware LLC.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301 USA
+ */
+package org.jboss.jdocbook.render.impl.fop;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.FileOutputStream;
+import java.io.FileNotFoundException;
+import java.net.URL;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.Source;
+import javax.xml.transform.Result;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.stream.StreamSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.jboss.jdocbook.render.impl.XslFoGenerator;
+import org.jboss.jdocbook.render.RenderingException;
+import org.jboss.jdocbook.render.PublishingSource;
+import org.jboss.jdocbook.render.RenderingEnvironment;
+import org.jboss.jdocbook.render.format.StandardDocBookFormatDescriptors;
+import org.jboss.jdocbook.render.format.FormatPlan;
+import org.jboss.jdocbook.xslt.XSLTException;
+import org.jboss.jdocbook.util.FileUtils;
+import org.jboss.jdocbook.util.LocaleUtils;
+
+/**
+ * Delegate for creating an intermediate XSL-FO from the docbook source(s).
+ * This plugin uses the more efficient SAX-based PDF generation approach,
+ * so this output format is completely unecessary; however, it is sometimes
+ * very helpful in debugging xml->pdf issues, especially when engaging the FOP
+ * team (they will almost always want to see your FO file).
+ *
+ * @author Steve Ebersole
+ */
+public class XslFoGeneratorImpl implements XslFoGenerator {
+ private final RenderingEnvironment environment;
+ private final FormatPlan formatPlan;
+
+ public XslFoGeneratorImpl(RenderingEnvironment environment, FormatPlan formatPlan) {
+ this.environment = environment;
+ this.formatPlan = formatPlan;
+ }
+
+ public void generateXslFo() throws RenderingException, XSLTException {
+ final Transformer transformer = buildXslFoTransformer();
+
+ for ( PublishingSource source : environment.getPublishingSources( true ) ) {
+ final String sourceFileBasename = FileUtils.basename( source.resolveDocumentFile().getAbsolutePath() );
+ final File fo = new File( source.resolveXslFoDirectory(), sourceFileBasename+".fo" );
+
+ String lang = LocaleUtils.render( source.getLocale(), environment.getOptions().getLocaleSeparator() );
+ transformer.setParameter( "l10n.gentext.language", lang );
+
+ boolean createFile;
+ if ( ! fo.getParentFile().exists() ) {
+ boolean created = fo.getParentFile().mkdirs();
+ if ( ! created ) {
+ throw new RenderingException( "Unable to create FO file directory" );
+ }
+ createFile = true;
+ }
+ else {
+ createFile = ! fo.exists();
+ }
+ if ( createFile ) {
+ try {
+ boolean created = fo.createNewFile();
+ if ( ! created ) {
+ environment.log().info( "Filesystem indicated problem creating FO file {}", fo );
+ }
+ }
+ catch ( IOException e ) {
+ throw new RenderingException( "Unable to create FO file " + fo.toString() );
+ }
+ }
+
+
+ try {
+ final OutputStream out = new FileOutputStream( fo );
+ try {
+ File sourceFile = source.resolveDocumentFile();
+ Source sourceStream = new StreamSource( sourceFile );
+ Result resultStream = new StreamResult( out );
+
+ try {
+ transformer.transform( sourceStream, resultStream );
+ }
+ catch ( TransformerException e ) {
+ throw new RenderingException( "Unable to apply FO transformation", e );
+ }
+ }
+ finally {
+ try {
+ out.close();
+ }
+ catch ( IOException e ) {
+ environment.log().info( "Unable to close output stream {}", fo );
+ }
+ }
+ }
+ catch ( FileNotFoundException e ) {
+ throw new RenderingException( "Unable to open output stream to FO file", e );
+ }
+
+
+ }
+ }
+
+ private Transformer buildXslFoTransformer() {
+ final URL transformationStylesheet;
+ if ( formatPlan.getStylesheetResource() == null ) {
+ transformationStylesheet = environment.getResourceHelper()
+ .requireResource( StandardDocBookFormatDescriptors.PDF.getStylesheetResource() );
+ }
+ else {
+ transformationStylesheet = environment.getResourceHelper()
+ .requireResource( formatPlan.getStylesheetResource() );
+ }
+
+ return environment.getTransformerBuilder().buildTransformer( formatPlan, transformationStylesheet );
+ }
+}
Added: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/util/ConsoleRedirectionHandler.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/util/ConsoleRedirectionHandler.java (rev 0)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/util/ConsoleRedirectionHandler.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -0,0 +1,96 @@
+/*
+ * jDocBook, processing of DocBook sources as a Maven plugin
+ *
+ * Copyright (c) 2009, Red Hat Middleware LLC or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors. All third-party contributions are
+ * distributed under license by Red Hat Middleware LLC.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301 USA
+ */
+package org.jboss.jdocbook.util;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.FileNotFoundException;
+import java.io.PrintStream;
+
+import org.jboss.jdocbook.JDocBookProcessException;
+
+/**
+ * Handles redirection of <tt>sysout</tt> and <tt>syserr</tt>. The initial
+ * impl handles redirection specifically to a file.
+ *
+ * @author Steve Ebersole
+ */
+public class ConsoleRedirectionHandler {
+ private final File redirectionFile;
+
+ private PrintStream redirectionStream;
+ private PrintStream sysout;
+ private PrintStream syserr;
+
+ public ConsoleRedirectionHandler(File redirectionFile) {
+ this.redirectionFile = redirectionFile;
+ }
+
+ public void start() {
+ System.out.println( "redirecting output to file [" + redirectionFile.getAbsolutePath() + "]" );
+ if ( !redirectionFile.exists() ) {
+ //noinspection ResultOfMethodCallIgnored
+ redirectionFile.getParentFile().mkdirs();
+ try {
+ //noinspection ResultOfMethodCallIgnored
+ redirectionFile.createNewFile();
+ }
+ catch ( IOException e ) {
+ throw new JDocBookProcessException(
+ "Unable to create console redirection file [" + redirectionFile.getAbsolutePath() + "]",
+ e
+ );
+ }
+ }
+ try {
+ redirectionStream = new PrintStream( new FileOutputStream( redirectionFile ) );
+ }
+ catch ( FileNotFoundException e ) {
+ // should never ever happen, see above...
+ throw new JDocBookProcessException( "Unable to open console redirect file for output", e );
+ }
+
+ sysout = System.out;
+ syserr = System.err;
+ System.setOut( redirectionStream );
+ System.setErr( redirectionStream );
+ }
+
+ public void stop() {
+ System.setOut( sysout );
+ System.setErr( syserr );
+
+ redirectionStream.flush();
+ redirectionStream.close();
+ }
+
+ public PrintStream sysout() {
+ return sysout;
+ }
+
+ public PrintStream syserr() {
+ return syserr;
+ }
+}
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/util/FileUtils.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/util/FileUtils.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/util/FileUtils.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -66,9 +66,13 @@
* @param file The file from which to generate a SAXSource
* @param resolver An entity resolver to apply to the file reader.
* @param xincludeAware Should we handle XIncludes?
+ *
* @return An appropriate SAXSource
*/
- public static SAXSource createSAXSource(File file, EntityResolver resolver, boolean xincludeAware) {
+ public static SAXSource createSAXSource(
+ File file,
+ EntityResolver resolver,
+ boolean xincludeAware) {
try {
SAXParserFactory factory = new SAXParserFactoryImpl();
factory.setXIncludeAware( xincludeAware );
@@ -81,7 +85,7 @@
try {
InputSource source = new InputSource( new BufferedInputStream( new FileInputStream( file ) ) );
- source.setSystemId( file.toURL().toString() );
+ source.setSystemId( file.toURI().toURL().toString() );
return new SAXSource( reader, source );
}
catch ( FileNotFoundException e ) {
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/util/ResourceHelper.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/util/ResourceHelper.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/util/ResourceHelper.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -25,7 +25,11 @@
import java.net.URL;
import java.net.MalformedURLException;
+import java.net.URLClassLoader;
+import org.jboss.jdocbook.Environment;
+import org.jboss.jdocbook.JDocBookProcessException;
+
/**
* Simple helpers for locating and handling classpath and file URL resource
* lookups.
@@ -33,6 +37,39 @@
* @author Steve Ebersole
*/
public class ResourceHelper {
+ private final ClassLoader combinedClassLoader;
+
+ public ResourceHelper(Environment environment) {
+ this.combinedClassLoader = new URLClassLoader(
+ extractClasspathUrls( environment ),
+ Thread.currentThread().getContextClassLoader()
+ );
+ }
+
+ private URL[] extractClasspathUrls(Environment environment) {
+ final URL[] styleUrls = environment.getClasspathUriResolverBaseUrls();
+ final URL[] combined;
+
+ if ( environment.getStagingDirectory() != null ) {
+ combined = new URL[ styleUrls.length + 1 ];
+ try {
+ combined[0] = environment.getStagingDirectory().toURI().toURL();
+ }
+ catch ( MalformedURLException e ) {
+ throw new JDocBookProcessException( "Unable to resolve staging dir to URL", e );
+ }
+ System.arraycopy( styleUrls, 0, combined, 1, styleUrls.length );
+ }
+ else {
+ combined = styleUrls;
+ }
+ return combined;
+ }
+
+ public ClassLoader getCombinedClassLoader() {
+ return combinedClassLoader;
+ }
+
/**
* Locate said resource, throwing an exception if it could not be found.
*
@@ -40,7 +77,7 @@
* @return The resource's URL.
* @throws IllegalArgumentException If the resource could not be found.
*/
- public static URL requireResource(String name) {
+ public URL requireResource(String name) {
URL resource = locateResource( name );
if ( resource == null ) {
throw new IllegalArgumentException( "could not locate resource [" + name + "]" );
@@ -54,7 +91,7 @@
* @param name The resource name.
* @return The resource's URL.
*/
- public static URL locateResource(String name) {
+ public URL locateResource(String name) {
if ( name.startsWith( "classpath:" ) ) {
return locateClassPathResource( name.substring( 10 ) );
}
@@ -72,18 +109,17 @@
}
}
- private static URL locateClassPathResource(String name) {
+ private URL locateClassPathResource(String name) {
while ( name.startsWith( "/" ) ) {
name = name.substring( 1 );
}
- ClassLoader loader = Thread.currentThread().getContextClassLoader();
- if ( loader == null ) {
- loader = ResourceHelper.class.getClassLoader();
- }
- URL result = loader.getResource( name );
+
+ URL result = combinedClassLoader.getResource( name );
if ( result == null ) {
- result = loader.getResource( "/" + name );
+ result = combinedClassLoader.getResource( "/" + name );
}
+
return result;
}
+
}
\ No newline at end of file
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/util/TransformerType.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/util/TransformerType.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/util/TransformerType.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -24,7 +24,10 @@
package org.jboss.jdocbook.util;
import javax.xml.transform.sax.SAXTransformerFactory;
+import javax.xml.transform.TransformerException;
+import org.xml.sax.Attributes;
+
/**
* Enumeration of supported XSLT transformers.
*
@@ -74,10 +77,46 @@
}
public SAXTransformerFactory buildSAXTransformerFactory() {
- return new com.icl.saxon.TransformerFactoryImpl();
+ com.icl.saxon.TransformerFactoryImpl factoryImpl = new com.icl.saxon.TransformerFactoryImpl();
+ factoryImpl.setAttribute( "http://icl.com/saxon/feature/messageEmitterClass", SaxonXslMessageEmitter.class.getName() );
+ return factoryImpl;
}
}
+ public static class SaxonXslMessageEmitter extends com.icl.saxon.output.Emitter {
+ private StringBuffer buffer;
+ public void startDocument() throws TransformerException {
+ if ( buffer != null ) {
+ System.out.println( "Unexpected call sequence on SaxonXslMessageEmitter; discarding [" + buffer.toString() + "]" );
+ }
+ buffer = new StringBuffer();
+ }
+
+ public void endDocument() throws TransformerException {
+ System.out.println( "[STYLESHEET MESSAGE] " + buffer.toString() );
+ buffer.setLength( 0 );
+ buffer = null;
+ }
+
+ public void startElement(int i, Attributes attributes, int[] ints, int i1) throws TransformerException {
+ }
+
+ public void endElement(int i) throws TransformerException {
+ }
+
+ public void characters(char[] chars, int start, int end) throws TransformerException {
+ for ( int i = start; i < end; i++ ) {
+ buffer.append( chars[i] );
+ }
+ }
+
+ public void processingInstruction(String s, String s1) throws TransformerException {
+ }
+
+ public void comment(char[] chars, int i, int i1) throws TransformerException {
+ }
+ }
+
public static class XalanTransformerType extends TransformerType {
public XalanTransformerType() {
super( "xalan" );
Added: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/util/XIncludeFallbackResolver.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/util/XIncludeFallbackResolver.java (rev 0)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/util/XIncludeFallbackResolver.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -0,0 +1,103 @@
+/*
+ * jDocBook, processing of DocBook sources as a Maven plugin
+ *
+ * Copyright (c) 2009, Red Hat Middleware LLC or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors. All third-party contributions are
+ * distributed under license by Red Hat Middleware LLC.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301 USA
+ */
+package org.jboss.jdocbook.util;
+
+import java.io.IOException;
+import java.net.URL;
+import java.net.MalformedURLException;
+import java.net.URLConnection;
+
+import org.xml.sax.EntityResolver;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+
+/**
+ * EntityResolver implementation for providing <a href="https://fedorahosted.org/publican/">publican</a> style
+ * fallback resolution of <a href="http://www.w3.org/TR/xinclude/">XIncludes</a> without the content authors having to
+ * manually add the tedious nested <samp><xi:fallback/></samp> entries.
+ *
+ * @author Steve Ebersole
+ */
+public class XIncludeFallbackResolver implements EntityResolver {
+ private final EntityResolver mainResolver;
+ private final String baseSourceDirectoryURI;
+ private final String baseFallbackURLPath;
+
+ private final int baseSourceDirectoryURILength;
+
+ public XIncludeFallbackResolver(EntityResolver mainResolver, String baseSourceDirectoryPath, String baseFallbackURLPath) {
+ this.mainResolver = mainResolver;
+
+ this.baseSourceDirectoryURI = "file:" + cleanupBaseSourceDirectoryPath( baseSourceDirectoryPath );
+ this.baseSourceDirectoryURILength = baseSourceDirectoryURI.length();
+
+ this.baseFallbackURLPath = baseFallbackURLPath.endsWith( "/" )
+ ? baseFallbackURLPath
+ : baseFallbackURLPath + "/";
+ }
+
+ private String cleanupBaseSourceDirectoryPath(String path) {
+ if ( ! path.startsWith( "/" ) ) {
+ path = "/" + path;
+ }
+ if ( ! path.endsWith( "/" ) ) {
+ path += "/";
+ }
+ return path;
+ }
+
+ public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException {
+ InputSource resolvedSource = mainResolver.resolveEntity( publicId, systemId );
+ if ( resolvedSource == null ) {
+ resolvedSource = resolveFallback( publicId, systemId );
+ }
+ return resolvedSource;
+ }
+
+ protected InputSource resolveFallback(String publicId, String systemId) {
+ // Not sure this is necessarily truth, but in my experience XInclude entities come through an EntityResolver
+ // such as this with publicId==null and systemId as some file: protocol URI
+ if ( publicId != null || ( systemId == null || ! systemId.startsWith( baseSourceDirectoryURI ) ) ) {
+ return null;
+ }
+
+ String ref = systemId.substring( baseSourceDirectoryURILength );
+ String possibleFallback = baseFallbackURLPath + ref;
+ try {
+ URL url = new URL( possibleFallback );
+ URLConnection urlConnection = url.openConnection();
+ urlConnection.setDoInput( true );
+ urlConnection.setDoOutput( false );
+ urlConnection.connect();
+
+ return new InputSource( urlConnection.getInputStream() );
+ }
+ catch ( MalformedURLException ignore ) {
+ }
+ catch ( IOException ignore ) {
+ }
+
+ return null;
+ }
+}
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/util/XIncludeHelper.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/util/XIncludeHelper.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/util/XIncludeHelper.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -56,26 +56,27 @@
*/
public static Set<File> locateInclusions(File root) {
final Set<File> includes = new TreeSet<File>();
+
+ EntityResolver entityResolver = new EntityResolver() {
+ public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException {
+ if ( publicId == null && systemId != null && systemId.startsWith( "file:/" ) ) {
+ try {
+ includes.add( new File( new URL( systemId ).getFile() ) );
+ }
+ catch ( MalformedURLException e ) {
+ // should never happen...
+ throw new JDocBookProcessException( "Unable to convert reported XInclude href into URL instance [" + systemId + "]" );
+ }
+ }
+ return null;
+ }
+ };
+
try {
SAXParserFactory parserFactory = new SAXParserFactoryImpl();
parserFactory.setXIncludeAware( true );
- EntityResolver resolver = new EntityResolver() {
- public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException {
- if ( publicId == null && systemId != null && systemId.startsWith( "file:/" ) ) {
- try {
- includes.add( new File( new URL( systemId ).getFile() ) );
- }
- catch ( MalformedURLException e ) {
- // should never happen...
- throw new JDocBookProcessException( "Unable to convert reported XInclude href into URL instance [" + systemId + "]" );
- }
- }
- return null;
- }
- };
-
- Source transformationSource = FileUtils.createSAXSource( root, resolver, true );
+ Source transformationSource = FileUtils.createSAXSource( root, entityResolver, true );
Result transformationResult = new StreamResult( new NoOpWriter() );
javax.xml.transform.TransformerFactory transformerFactory = new com.icl.saxon.TransformerFactoryImpl();
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/xslt/TransformerBuilder.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/xslt/TransformerBuilder.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/xslt/TransformerBuilder.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -27,11 +27,13 @@
import java.net.URL;
import java.util.Map;
import java.util.Properties;
+import java.util.HashMap;
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.Templates;
import javax.xml.transform.stream.StreamSource;
import com.icl.saxon.Controller;
@@ -44,6 +46,7 @@
import org.jboss.jdocbook.xslt.resolve.RelativeJarUriResolver;
import org.jboss.jdocbook.xslt.resolve.ResolverChain;
import org.jboss.jdocbook.xslt.resolve.VersionResolver;
+import org.jboss.jdocbook.Environment;
import org.jboss.jdocbook.Options;
/**
@@ -53,12 +56,20 @@
* @author Steve Ebersole
*/
public class TransformerBuilder {
- private final Options options;
+ private final Environment environment;
- public TransformerBuilder(Options options) {
- this.options = options;
+ public TransformerBuilder(Environment environment) {
+ this.environment = environment;
}
+ private Options options() {
+ return environment.getOptions();
+ }
+
+ private ResourceHelper resourceHelper() {
+ return environment.getResourceHelper();
+ }
+
public Transformer buildStandardTransformer(URL xslt) {
URIResolver uriResolver = buildStandardUriResolver();
return buildTransformer( xslt, uriResolver );
@@ -66,41 +77,52 @@
public Transformer buildStandardTransformer(String xsltResource) {
URIResolver uriResolver = buildStandardUriResolver();
- return buildTransformer( ResourceHelper.requireResource( xsltResource ), uriResolver );
+ return buildTransformer( resourceHelper().requireResource( xsltResource ), uriResolver );
}
public Transformer buildTransformer(FormatPlan formatPlan, URL customStylesheet) throws XSLTException {
URIResolver uriResolver = buildUriResolver( formatPlan );
URL xsltStylesheet = customStylesheet == null
- ? ResourceHelper.requireResource( formatPlan.getStylesheetResource() )
+ ? resourceHelper().requireResource( formatPlan.getStylesheetResource() )
: customStylesheet;
return buildTransformer( xsltStylesheet, uriResolver );
}
+ private HashMap<String, Templates> transformerTemplatesCache = new HashMap<String, Templates>();
+
protected Transformer buildTransformer(URL xslt, URIResolver uriResolver) throws XSLTException {
- javax.xml.transform.TransformerFactory transformerFactory = options.resolveXmlTransformerType().getSAXTransformerFactory();
+ javax.xml.transform.TransformerFactory transformerFactory = options().resolveXmlTransformerType().getSAXTransformerFactory();
transformerFactory.setURIResolver( uriResolver );
+ final String xsltUrlStr = xslt.toExternalForm();
+
Transformer transformer;
try {
- Source source = new StreamSource( xslt.openStream(), xslt.toExternalForm() );
- transformer = transformerFactory.newTransformer( source );
+ Templates transformerTemplates = transformerTemplatesCache.get( xsltUrlStr );
+ if ( transformerTemplates == null ) {
+ Source source = new StreamSource( xslt.openStream(), xsltUrlStr );
+ transformerTemplates = transformerFactory.newTemplates( source );
+ transformerTemplatesCache.put( xsltUrlStr, transformerTemplates );
+ }
+ transformer = transformerTemplates.newTransformer();
+// Source source = new StreamSource( xslt.openStream(), xsltUrlStr );
+// transformer = transformerFactory.newTransformer( source );
}
catch ( IOException e ) {
- throw new XSLTException( "problem opening stylesheet", e );
+ throw new XSLTException( "problem opening stylesheet [" + xsltUrlStr + "]", e );
}
catch ( TransformerConfigurationException e ) {
throw new XSLTException( "unable to build transformer [" + e.getLocationAsString() + "] : " + e.getMessage(), e );
}
- configureTransformer( transformer, uriResolver, options.getTransformerParameters() );
+ configureTransformer( transformer, uriResolver, options().getTransformerParameters() );
return transformer;
}
public void configureTransformer(Transformer transformer, FormatPlan formatPlan) {
- configureTransformer( transformer, buildUriResolver( formatPlan ), options.getTransformerParameters() );
+ configureTransformer( transformer, buildUriResolver( formatPlan ), options().getTransformerParameters() );
}
public static void configureTransformer(Transformer transformer, URIResolver uriResolver, Properties transformerParameters) {
@@ -138,18 +160,18 @@
}
public ResolverChain buildUriResolver(String formatName, String docBookstyleSheet) throws XSLTException {
- ResolverChain resolverChain = new ResolverChain( new ExplicitUrnResolver( formatName, docBookstyleSheet ) );
+ ResolverChain resolverChain = new ResolverChain( new ExplicitUrnResolver( environment, formatName, docBookstyleSheet ) );
applyStandardResolvers( resolverChain );
return resolverChain;
}
private void applyStandardResolvers(ResolverChain resolverChain) {
- resolverChain.addResolver( new CurrentVersionResolver() );
- if ( options.getDocbookVersion() != null ) {
- resolverChain.addResolver( new VersionResolver( options.getDocbookVersion() ) );
+ resolverChain.addResolver( new CurrentVersionResolver( environment ) );
+ if ( options().getDocbookVersion() != null ) {
+ resolverChain.addResolver( new VersionResolver( environment, options().getDocbookVersion() ) );
}
resolverChain.addResolver( new RelativeJarUriResolver() );
- resolverChain.addResolver( new ClasspathResolver() );
- resolverChain.addResolver( options.getCatalogResolver() );
+ resolverChain.addResolver( new ClasspathResolver( resourceHelper().getCombinedClassLoader() ) );
+ resolverChain.addResolver( environment.getCatalogResolver() );
}
}
\ No newline at end of file
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/xslt/resolve/BasicUrnResolver.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/xslt/resolve/BasicUrnResolver.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/xslt/resolve/BasicUrnResolver.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -27,6 +27,8 @@
import javax.xml.transform.Source;
import javax.xml.transform.TransformerException;
+import org.jboss.jdocbook.Environment;
+
/**
* Basic support for URIResolvers which map a URN unto a single replacement
* {@link javax.xml.transform.Source}.
@@ -34,6 +36,7 @@
* @author Steve Ebersole
*/
public class BasicUrnResolver implements URIResolver {
+ private final Environment environment;
private final String urn;
private final Source source;
@@ -41,10 +44,12 @@
* Constructs a {@link URIResolver} which maps occurences of the given <tt>urn</tt> onto the given
* <tt>source</tt>
*
+ * @param environment The execution environment
* @param urn The urn to be replaced.
* @param source The value to return instead of the urn.
*/
- public BasicUrnResolver(String urn, Source source) {
+ public BasicUrnResolver(Environment environment, String urn, Source source) {
+ this.environment = environment;
this.urn = urn;
this.source = source;
}
@@ -62,4 +67,8 @@
public String toString() {
return super.toString() + " [URN:" + urn + "]";
}
+
+ protected Environment getEnvironment() {
+ return environment;
+ }
}
\ No newline at end of file
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/xslt/resolve/ClasspathResolver.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/xslt/resolve/ClasspathResolver.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/xslt/resolve/ClasspathResolver.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -34,34 +34,42 @@
/**
*
* Resolves classpath references from the given classloader using classpath:/
- * as the protocol handler
+ * as the protocol scheme
*
* @author Pete Muir
+ * @author Steve Ebersole
*/
public class ClasspathResolver implements URIResolver {
+ public static final String SCHEME = "classpath:";
+
private final ClassLoader classLoader;
public ClasspathResolver(ClassLoader classLoader) {
this.classLoader = classLoader;
}
- public ClasspathResolver() {
- this( Thread.currentThread().getContextClassLoader() );
- }
-
public Source resolve(String href, String base) throws TransformerException {
// href would need to start with classpath:
- if ( !href.startsWith( "classpath:" ) ) {
+ if ( !href.startsWith( SCHEME ) ) {
return null;
}
try {
- URL url = classLoader.getResource( href.substring(10) );
- return new StreamSource( url.openStream(), url.toExternalForm() );
+ String urlStr = href.substring( SCHEME.length() );
+ URL url = classLoader.getResource( urlStr );
+
+ if ( url == null && urlStr.startsWith( "/" ) ) {
+ url = classLoader.getResource( urlStr.substring( 1 ) );
+ }
+
+ if ( url != null ) {
+ return new StreamSource( url.openStream(), url.toExternalForm() );
+ }
}
- catch ( Throwable t ) {
- return null;
+ catch ( Throwable ignore ) {
}
+
+ throw new TransformerException( "Unable to resolve requested classpath URL [" + href + "]" );
}
}
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/xslt/resolve/CurrentVersionResolver.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/xslt/resolve/CurrentVersionResolver.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/xslt/resolve/CurrentVersionResolver.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -23,6 +23,8 @@
*/
package org.jboss.jdocbook.xslt.resolve;
+import org.jboss.jdocbook.Environment;
+
/**
* Map hrefs starting with <tt>http://docbook.sourceforge.net/release/xsl/current/</tt>
* to classpath resource lookups.
@@ -32,8 +34,10 @@
public class CurrentVersionResolver extends VersionResolver {
/**
* Constructs a new CurrentVersionResolver instance.
+ *
+ * @param environment The execution environment
*/
- public CurrentVersionResolver() {
- super( "current" );
+ public CurrentVersionResolver(Environment environment) {
+ super( environment, "current" );
}
}
\ No newline at end of file
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/xslt/resolve/ExplicitUrnResolver.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/xslt/resolve/ExplicitUrnResolver.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/xslt/resolve/ExplicitUrnResolver.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -29,7 +29,7 @@
import javax.xml.transform.stream.StreamSource;
import org.jboss.jdocbook.xslt.XSLTException;
-import org.jboss.jdocbook.util.ResourceHelper;
+import org.jboss.jdocbook.Environment;
/**
@@ -41,13 +41,13 @@
public class ExplicitUrnResolver extends BasicUrnResolver {
private final String name;
- public ExplicitUrnResolver(String name, String stylesheetResource) throws XSLTException {
- super( "urn:docbook:stylesheet", createSource( name, stylesheetResource ) );
+ public ExplicitUrnResolver(Environment environment, String name, String stylesheetResource) throws XSLTException {
+ super( environment, "urn:docbook:stylesheet", createSource( environment, name, stylesheetResource ) );
this.name = name;
}
- private static Source createSource(String name, String stylesheetResource) throws XSLTException {
- URL stylesheet = ResourceHelper.requireResource( stylesheetResource );
+ private static Source createSource(Environment environment, String name, String stylesheetResource) throws XSLTException {
+ URL stylesheet = environment.getResourceHelper().requireResource( stylesheetResource );
try {
return new StreamSource( stylesheet.openStream(), stylesheet.toExternalForm() );
}
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/xslt/resolve/VersionResolver.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/xslt/resolve/VersionResolver.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/xslt/resolve/VersionResolver.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -30,7 +30,7 @@
import javax.xml.transform.URIResolver;
import javax.xml.transform.stream.StreamSource;
-import org.jboss.jdocbook.util.ResourceHelper;
+import org.jboss.jdocbook.Environment;
/**
* Maps docbook-version based URIs to local classpath lookups. These URIs are in the form
@@ -41,15 +41,18 @@
public class VersionResolver implements URIResolver {
public static final String BASE_HREF = "http://docbook.sourceforge.net/release/xsl/";
+ private Environment environment;
private final String version;
private final String versionHref;
/**
* Constructs a VersionResolver instance using the given <tt>version</tt>.
*
+ * @param environment The execution environment
* @param version The version.
*/
- public VersionResolver(String version) {
+ public VersionResolver(Environment environment, String version) {
+ this.environment = environment;
this.version = version;
this.versionHref = BASE_HREF + version;
}
@@ -70,7 +73,7 @@
private Source resolve(String href) {
String resource = href.substring( versionHref.length() );
try {
- URL resourceURL = ResourceHelper.requireResource( resource );
+ URL resourceURL = environment.getResourceHelper().requireResource( resource );
return new StreamSource( resourceURL.openStream(), resourceURL.toExternalForm() );
}
catch ( IllegalArgumentException e ) {
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/AbstractDocBookMojo.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/AbstractDocBookMojo.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/AbstractDocBookMojo.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -21,35 +21,58 @@
* 51 Franklin Street, Fifth Floor
* Boston, MA 02110-1301 USA
*/
-
package org.jboss.maven.plugins.jdocbook;
import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
import java.text.MessageFormat;
import java.util.ArrayList;
-import java.util.Collection;
+import java.util.Collections;
import java.util.List;
import java.util.Locale;
import java.util.Set;
import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.AbstractArtifactResolutionException;
+import org.apache.maven.artifact.resolver.ArtifactCollector;
+import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.artifact.resolver.ArtifactResolver;
+import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.Resource;
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.apache.maven.project.MavenProjectHelper;
-import org.apache.maven.execution.MavenSession;
+import org.apache.maven.settings.Proxy;
import org.apache.maven.settings.Settings;
-import org.apache.maven.settings.Proxy;
+import org.apache.maven.shared.dependency.tree.DependencyNode;
+import org.apache.maven.shared.dependency.tree.DependencyTreeResolutionListener;
+import org.apache.xml.resolver.CatalogManager;
+import org.apache.xml.resolver.tools.CatalogResolver;
import org.codehaus.plexus.archiver.manager.ArchiverManager;
import org.jboss.jdocbook.JDocBookProcessException;
import org.jboss.jdocbook.Log;
+import org.jboss.jdocbook.i18n.Factory;
+import org.jboss.jdocbook.i18n.I18nEnvironment;
+import org.jboss.jdocbook.i18n.I18nSource;
+import org.jboss.jdocbook.i18n.MasterTranslationDescriptor;
+import org.jboss.jdocbook.render.PublishingSource;
+import org.jboss.jdocbook.render.RenderingEnvironment;
import org.jboss.jdocbook.render.RenderingException;
import org.jboss.jdocbook.render.format.FormatPlan;
+import org.jboss.jdocbook.render.format.StandardDocBookFormatDescriptor;
import org.jboss.jdocbook.render.format.StandardDocBookFormatDescriptors;
import org.jboss.jdocbook.util.LocaleUtils;
+import org.jboss.jdocbook.util.ResourceHelper;
+import org.jboss.jdocbook.xslt.TransformerBuilder;
import org.jboss.jdocbook.xslt.XSLTException;
+import org.jboss.jdocbook.xslt.catalog.ExplicitCatalogManager;
+import org.jboss.jdocbook.xslt.catalog.ImplicitCatalogManager;
+import org.jboss.maven.util.logging.PlexusToMavenPluginLoggingBridge;
/**
* Basic support for the various DocBook mojos in this packaging plugin.
@@ -57,7 +80,7 @@
*
* @author Steve Ebersole
*/
-public abstract class AbstractDocBookMojo extends AbstractMojo {
+public abstract class AbstractDocBookMojo extends AbstractMojo implements RenderingEnvironment, I18nEnvironment {
public static final String PLUGIN_NAME = "jdocbook";
/**
@@ -70,6 +93,16 @@
protected MavenProject project;
/**
+ * 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 : The representation of the maven execution.
*
* @parameter expression="${session}"
@@ -87,27 +120,34 @@
*/
protected Settings settings;
- /**
- * INTERNAL : The artifacts associated with the dependencies defined as part
- * of the project to which we are being attached.
- *
- * @parameter expression="${project.artifacts}"
+ /**
+ * INTERNAL : The artifact repository to use.
+ *
+ * @parameter expression="${localRepository}"
* @required
* @readonly
- */
- protected Set projectArtifacts;
+ */
+ protected ArtifactRepository localRepository;
- /**
- * 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}"
+ /**
+ * INTERNAL : The artifact metadata source to use.
+ *
+ * @component
* @required
* @readonly
- */
- protected List pluginArtifacts;
+ */
+ protected ArtifactMetadataSource artifactMetadataSource;
/**
+ * INTERNAL : The artifact collector to use.
+ *
+ * @component
+ * @required
+ * @readonly
+ */
+ protected ArtifactCollector artifactCollector;
+
+ /**
* INTERNAL : used to get reference to environemtn Archiver/UnArchiver.
*
* @parameter expression="${component.org.codehaus.plexus.archiver.manager.ArchiverManager}"
@@ -117,13 +157,13 @@
protected ArchiverManager archiverManager;
/**
- * INTERNAL : used during packaging to attach produced artifacts
+ * INTERNAL : Artifact resolver, needed to download dependencies
*
- * @parameter expression="${component.org.apache.maven.project.MavenProjectHelper}"
- * @required
- * @readonly
- */
- protected MavenProjectHelper projectHelper;
+ * @component role="org.apache.maven.artifact.resolver.ArtifactResolver"
+ * @required
+ * @readonly
+ */
+ protected ArtifactResolver artifactResolver;
/**
* The name of the document (relative to sourceDirectory) which is the
@@ -205,6 +245,13 @@
protected boolean attach = true;
/**
+ * Profiling configuration
+ *
+ * @parameter
+ */
+ protected Profiling profiling = new Profiling();
+
+ /**
* Configurable options
*
* @parameter
@@ -231,22 +278,6 @@
protected String masterTranslation;
/**
- * The path (relative to the sourceDirectory) to the directory containing the master sources. By default the
- * master-translation's locale (en-US) will be used if such a directory exists <b>if translations are specified</b>.
- * Users can explicitly specify such a relative path here.
- *
- * @parameter default-value=""
- */
- protected String relativeMasterTranslationPath;
-
- /**
- * The directory for POT translations files.
- *
- * @parameter expression="${basedir}/src/main/docbook/pot"
- */
- protected File potDirectory;
-
- /**
* The locales of all non-master translations.
*
* @parameter
@@ -264,23 +295,28 @@
private File resolvedMasterSourceDirectory;
- protected boolean excludeIngoredTranslationsFromPublishSources() {
- return false;
+ protected final Factory i18nProcesserFactory = new Factory( this );
+
+ public Factory getI18nProcesserFactory() {
+ return i18nProcesserFactory;
}
- protected boolean excludeIngoredTranslationsFromI18nSources() {
- return false;
+ protected final MavenLogBridge loggingBridge = new MavenLogBridge();
+
+ private FormatPlan[] formatPlans;
+
+ public FormatPlan[] getFormatPlans() {
+ return formatPlans;
}
/**
* The override method to perform the actual processing of the
* mojo.
- *
- * @param formatPlans The format plans
+ *
* @throws RenderingException Indicates problem performing rendering
* @throws XSLTException Indicates problem building or executing XSLT transformer
*/
- protected void process(FormatPlan[] formatPlans) throws JDocBookProcessException {
+ protected void process() throws JDocBookProcessException {
}
private void doExecuteWithProxy(Proxy proxy) throws JDocBookProcessException {
@@ -332,15 +368,16 @@
}
protected void doExecute() throws JDocBookProcessException {
- process( determineFormatPlans() );
+ process();
}
public final void execute() throws MojoExecutionException, MojoFailureException {
if ( options == null ) {
options = new Options();
}
- options.setLog( new MavenLogBridge() );
+ formatPlans = determineFormatPlans();
+
if ( translationBaseDirectory == null ) {
translationBaseDirectory = sourceDirectory;
}
@@ -349,18 +386,9 @@
translations = new String[0];
}
-
- if ( relativeMasterTranslationPath == null || "".equals( relativeMasterTranslationPath ) ) {
- // see if we have a directory named according to the master translation within the sourceDorectory...
- File test = new File( sourceDirectory, masterTranslation );
- if ( test.exists() ) {
- relativeMasterTranslationPath = masterTranslation;
- }
- }
-
resolvedMasterSourceDirectory = sourceDirectory;
- if ( relativeMasterTranslationPath != null && !"".equals( relativeMasterTranslationPath ) ) {
- resolvedMasterSourceDirectory = new File( resolvedMasterSourceDirectory, relativeMasterTranslationPath );
+ if ( masterTranslation != null && !"".equals( masterTranslation ) ) {
+ resolvedMasterSourceDirectory = new File( resolvedMasterSourceDirectory, masterTranslation );
}
try {
@@ -377,12 +405,40 @@
catch ( RenderingException e ) {
throw new MojoExecutionException( "Rendering problem", e );
}
+ catch ( JDocBookProcessException e ) {
+ throw new MojoExecutionException( "Unexpected problem", e );
+ }
}
private FormatPlan[] determineFormatPlans() {
+ final String requestedFormat = getRequestedFormat();
+ return requestedFormat != null ? resolveRestrictedFormatPlans( requestedFormat ) : resolveUnrestrictedFormatPlans();
+ }
+
+ private FormatPlan[] resolveRestrictedFormatPlans(String requestedFormat) {
+ FormatPlan[] plans = new FormatPlan[1];
+ for ( Format format : formats ) {
+ if ( requestedFormat.equals( format.getFormatName() ) ) {
+ plans[0] = buildFormatPlan( format );
+ }
+ }
+ if ( plans[0] == null ) {
+ plans = new FormatPlan[0];
+ }
+ return plans;
+ }
+
+ private FormatPlan buildFormatPlan(Format format) {
+ return new FormatPlan(
+ format,
+ StandardDocBookFormatDescriptors.getDescriptor( format.getFormatName() )
+ );
+ }
+
+ private FormatPlan[] resolveUnrestrictedFormatPlans() {
FormatPlan[] plans = new FormatPlan[ formats.length ];
for ( int i = 0; i < formats.length; i++ ) {
- plans[i] = new FormatPlan( formats[i], StandardDocBookFormatDescriptors.getDescriptor( formats[i].getFormatName() ) );
+ plans[i] = buildFormatPlan( formats[i] );
}
return plans;
}
@@ -390,7 +446,7 @@
protected String getRequestedFormat() {
String requestedFormat = session.getExecutionProperties().getProperty( "jdocbook.format" );
if ( requestedFormat != null ) {
- getLog().info( "requested processing limited to [" + requestedFormat + "] format" );
+ getLog().debug( "requested processing limited to [" + requestedFormat + "] format" );
}
return requestedFormat;
}
@@ -399,22 +455,151 @@
String requestedLocaleStr = session.getExecutionProperties().getProperty( "jdocbook.lang" );
Locale requestedLocale = requestedLocaleStr == null ? null : parseLocale( requestedLocaleStr );
if ( requestedLocale != null ) {
- getLog().info( "requested processing limited to [" + stringify( requestedLocale ) + "] lang" ) ;
+ getLog().debug( "requested processing limited to [" + stringify( requestedLocale ) + "] lang" ) ;
}
return requestedLocale;
}
- protected MasterTranslationDescriptor getMasterTranslationDescriptor() {
- return new MasterTranslationDescriptor( parseLocale( masterTranslation ) );
+ public Log log() {
+ return loggingBridge;
}
- protected List<PublishingSource> getPublishingSources() {
- ArrayList<PublishingSource> descriptors = new ArrayList<PublishingSource>();
- descriptors.add( getMasterTranslationDescriptor() );
+ public Options getOptions() {
+ return options;
+ }
+ private TransformerBuilder transformerBuilder;
+
+ public TransformerBuilder getTransformerBuilder() {
+ if ( transformerBuilder == null ) {
+ transformerBuilder = new TransformerBuilder( this );
+ }
+ return transformerBuilder;
+ }
+
+ private CatalogResolver catalogResolver;
+
+ 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;
+ }
+
+ private URL[] styleArtifactUrls;
+
+ @SuppressWarnings({ "unchecked" })
+ public URL[] getClasspathUriResolverBaseUrls() {
+ if ( styleArtifactUrls == null ) {
+ // Three sources for resolver base urls:
+ List<URL> urlList = new ArrayList<URL>();
+ // 1) staging dir
+ if ( getStagingDirectory() != null ) {
+ try {
+ urlList.add( getStagingDirectory().toURI().toURL() );
+ }
+ catch ( MalformedURLException e ) {
+ getLog().warn( "Uanble to convert staging directory to url" );
+ }
+ }
+ // 2) project dependencies
+ for ( Artifact artifact : (Set<Artifact>) project.getArtifacts() ) {
+ if ( artifact.getFile() != null ) {
+ try {
+ urlList.add( artifact.getFile().toURI().toURL() );
+ }
+ catch ( MalformedURLException e ) {
+ getLog().warn( "Uanble to retrieve artifact url [" + artifact.getId() + "]" );
+ }
+ }
+ }
+ // 3) plugin dependencies (this should be plugin *injected* dependencies)
+ if ( pluginArtifacts != null ) {
+ for ( Artifact artifact : (List<Artifact>) pluginArtifacts ) {
+ if ( artifact.getFile() != null ) {
+ try {
+ urlList.add( artifact.getFile().toURI().toURL() );
+ }
+ catch ( MalformedURLException e ) {
+ getLog().warn( "Uanble to retrieve artifact url [" + artifact.getId() + "]" );
+ }
+ }
+ }
+ }
+ styleArtifactUrls = urlList.toArray( new URL[ urlList.size() ] );
+ }
+ return styleArtifactUrls;
+ }
+
+ private ResourceHelper resourceHelper;
+
+ public ResourceHelper getResourceHelper() {
+ if ( resourceHelper == null ) {
+ resourceHelper = new ResourceHelper( this );
+ }
+ return resourceHelper;
+ }
+
+ public FormatPlan getFormatPlan(StandardDocBookFormatDescriptor format) {
+ for ( FormatPlan plan : formatPlans ) {
+ if ( plan.getName().equals( format.getName() ) ) {
+ return plan;
+ }
+ }
+ return null;
+ }
+
+ public File getStagingDirectory() {
+ return stagingDirectory;
+ }
+
+ public File getWorkDirectory() {
+ return workDirectory;
+ }
+
+ public File[] getFontDirectories() {
+ List<File> directories = new ArrayList<File>();
+
+ if ( fontsDirectory != null && fontsDirectory.exists() ) {
+ directories.add( fontsDirectory );
+ }
+
+ File stagedFontsDirectory = new File( getStagingDirectory(), "fonts" );
+ if ( stagedFontsDirectory.exists() ) {
+ directories.add( stagedFontsDirectory );
+ }
+
+ return directories.toArray( new File[ directories.size() ] );
+ }
+
+ public Profiling getProfilingConfiguration() {
+ return profiling;
+ }
+
+ public File getFontStagingDirectory() {
+ return new File( getStagingDirectory(), "fonts" );
+ }
+
+ public List<PublishingSource> getPublishingSources(boolean excludeIngoredTranslations) {
Locale requestedLocale = getRequestedLocale();
- boolean skipAllTranslations = ignoreTranslations && excludeIngoredTranslationsFromPublishSources();
+ boolean requestedLocaleIsTranslation = requestedLocale != null
+ && ! stringify( requestedLocale ).equals( masterTranslation );
+ boolean skipAllTranslations = ignoreTranslations && excludeIngoredTranslations
+ && !requestedLocaleIsTranslation;
+ ArrayList<PublishingSource> descriptors = new ArrayList<PublishingSource>();
+ MasterTranslationDescriptorImpl masterTranslationImpl = new MasterTranslationDescriptorImpl();
+ if ( requestedLocale == null || requestedLocale.equals( masterTranslationImpl.getLocale() ) ) {
+ descriptors.add( new MasterTranslationDescriptorImpl() );
+ }
+
if ( skipAllTranslations ) {
getLog().info( "Skipping all translations" );
}
@@ -423,24 +608,33 @@
final Locale locale = parseLocale( localeStr );
final boolean skipThisLocale = requestedLocale != null
&& !requestedLocale.equals( locale )
- && excludeIngoredTranslationsFromPublishSources();
+ && excludeIngoredTranslations;
if ( skipThisLocale ) {
- getLog().info( "skipping non-requested lang [" + localeStr + "]" );
+ getLog().debug( "skipping non-requested lang [" + localeStr + "]" );
continue;
}
- descriptors.add( new TranslationDescriptor( locale ) );
+ descriptors.add( new OtherTranslationDescriptorImpl( locale ) );
}
}
return descriptors;
}
- protected List<I18nSource> getI18nSources() {
+ public MasterTranslationDescriptor getMasterTranslationDescriptor() {
+ return new MasterTranslationDescriptorImpl();
+ }
+
+ public List<I18nSource> getI18nSources(boolean excludeIngoredTranslations) {
ArrayList<I18nSource> descriptors = new ArrayList<I18nSource>();
Locale requestedLocale = getRequestedLocale();
- boolean skipAllTranslations = ignoreTranslations && excludeIngoredTranslationsFromI18nSources();
+ boolean requestedLocaleIsTranslation = requestedLocale != null
+ && ! stringify( requestedLocale ).equals( masterTranslation );
+ boolean skipAllTranslations = ignoreTranslations
+ && excludeIngoredTranslations
+ && !requestedLocaleIsTranslation;
+
if ( skipAllTranslations ) {
getLog().info( "Skipping all translations" );
}
@@ -449,65 +643,60 @@
final Locale locale = parseLocale( localeStr );
final boolean skipThisLocale = requestedLocale != null
&& !requestedLocale.equals( locale )
- && excludeIngoredTranslationsFromPublishSources();
+ && excludeIngoredTranslations;
if ( skipThisLocale ) {
- getLog().info( "skipping non-requested lang [" + localeStr + "]" );
+ getLog().debug( "skipping non-requested lang [" + localeStr + "]" );
continue;
}
- descriptors.add( new TranslationDescriptor( locale ) );
+ descriptors.add( new OtherTranslationDescriptorImpl( locale ) );
}
}
return descriptors;
}
- protected static interface ArtifactProcessor {
- public void process(Artifact artifact);
- }
+ private class MasterTranslationDescriptorImpl implements PublishingSource, MasterTranslationDescriptor {
+ public Locale getLocale() {
+ return LocaleUtils.parse( masterTranslation, options.getLocaleSeparator() );
+ }
- protected void processArtifacts(ArtifactProcessor processor) {
- processProjectArtifacts( processor );
- processPluginArtifacts( processor );
- }
+ public File resolveMasterDocument() {
+ return new File( resolvedMasterSourceDirectory, sourceDocumentName );
+ }
- protected void processProjectArtifacts(ArtifactProcessor processor) {
- processArtifacts( processor, projectArtifacts );
- }
+ public File resolvePotDirectory() {
+ return new File( translationBaseDirectory, "pot" );
+ }
- protected void processPluginArtifacts(ArtifactProcessor processor) {
- processArtifacts( processor, pluginArtifacts );
- }
+ public FormatPlan[] getFormatPlans() {
+ return formatPlans;
+ }
- private void processArtifacts(ArtifactProcessor processor, Collection artifacts) {
- for ( Object artifact : artifacts ) {
- processor.process( ( Artifact ) artifact );
+ public File resolveDocumentFile() {
+ return resolveMasterDocument();
}
- }
- protected Locale parseLocale(String locale) {
- return LocaleUtils.parse( locale, options.getLocaleSeparator() );
- }
+ public File resolvePublishingDirectory() {
+ return determinePublishingDirectory( masterTranslation );
+ }
- protected String stringify(Locale locale) {
- return LocaleUtils.render( locale, options.getLocaleSeparator() );
- }
+ public File resolveXslFoDirectory() {
+ return determineXslFoDirectory( masterTranslation );
+ }
- protected static interface PublishingSource {
- public Locale getLocale();
- public File resolveDocumentFile();
- public File resolvePublishingDirectory();
- }
+ public File resolveProfilingDirectory() {
+ return determineProfilingDirectory( masterTranslation );
+ }
- protected static interface I18nSource {
- public Locale getLocale();
- public File resolvePoDirectory();
- public File resolveTranslatedXmlDirectory();
+ public File resolveProfiledDocumentFile() {
+ return new File( resolveProfilingDirectory(), sourceDocumentName );
+ }
}
- protected class MasterTranslationDescriptor implements PublishingSource {
+ private class OtherTranslationDescriptorImpl implements PublishingSource, I18nSource {
private final Locale locale;
- public MasterTranslationDescriptor(Locale locale) {
+ private OtherTranslationDescriptorImpl(Locale locale) {
this.locale = locale;
}
@@ -515,44 +704,142 @@
return locale;
}
+ public FormatPlan[] getFormatPlans() {
+ return formatPlans;
+ }
+
public File resolveDocumentFile() {
- return new File( resolvedMasterSourceDirectory, sourceDocumentName );
+ return new File( determineTranslatedXmlDirectory( stringify( locale ) ), sourceDocumentName );
}
public File resolvePublishingDirectory() {
- return new File( publishDirectory, stringify( locale ) );
+ return determinePublishingDirectory( stringify( locale ) );
}
- }
- protected class TranslationDescriptor implements PublishingSource, I18nSource {
- private final Locale locale;
-
- public TranslationDescriptor(Locale locale) {
- this.locale = locale;
+ public File resolveXslFoDirectory() {
+ return determineXslFoDirectory( stringify( locale ) );
}
- public Locale getLocale() {
- return locale;
+ public File resolveProfilingDirectory() {
+ return determineProfilingDirectory( stringify( locale ) );
}
public File resolvePoDirectory() {
- return new File( translationBaseDirectory, stringify( locale ) );
+ return determineTranslationDirectory( stringify( locale ) );
}
public File resolveTranslatedXmlDirectory() {
- return new File( new File( workDirectory, "xml" ), stringify( locale ) );
+ return determineTranslatedXmlDirectory( stringify( locale ) );
}
- public File resolveDocumentFile() {
- return new File( resolveTranslatedXmlDirectory(), sourceDocumentName );
+ public File resolveProfiledDocumentFile() {
+ return new File( resolveProfilingDirectory(), sourceDocumentName );
}
+ }
- public File resolvePublishingDirectory() {
- return new File( publishDirectory, stringify( locale ) );
+ protected File determinePublishingDirectory(String lang) {
+ return new File( publishDirectory, lang );
+ }
+
+ protected File determineXslFoDirectory(String lang) {
+ return new File( new File( workDirectory, "xsl-fo" ), lang );
+ }
+
+ protected File determineProfilingDirectory(String lang) {
+ return new File( new File( workDirectory, "profile" ), lang );
+ }
+
+ protected File determineTranslationDirectory(String lang) {
+ return new File( translationBaseDirectory, lang );
+ }
+
+ protected File determineTranslatedXmlDirectory(String lang) {
+ return new File( new File( workDirectory, "xml" ), lang );
+ }
+
+
+ @SuppressWarnings({ "unchecked" })
+ protected List<Artifact> collectArtifactsByType(String type, boolean transitivesFirst) {
+ Set dependencyArtifacts = project.getArtifacts();
+ dependencyArtifacts.addAll( pluginArtifacts );
+
+ DependencyTreeResolutionListener listener = new DependencyTreeResolutionListener(
+ new PlexusToMavenPluginLoggingBridge( getLog() )
+ );
+
+ try {
+ artifactCollector.collect(
+ dependencyArtifacts,
+ project.getArtifact(),
+ project.getManagedVersionMap(),
+ localRepository,
+ project.getRemoteArtifactRepositories(),
+ artifactMetadataSource,
+ null,
+ Collections.singletonList( listener )
+ );
}
+ catch ( AbstractArtifactResolutionException e ) {
+ throw new JDocBookProcessException( "Cannot build project dependency tree", e );
+ }
+
+ List<Artifact> artifacts = new ArrayList<Artifact>();
+ processNode( listener.getRootNode(), artifacts, type, transitivesFirst );
+ return artifacts;
}
- private class MavenLogBridge implements Log {
+ @SuppressWarnings({ "unchecked" })
+ private void processNode(DependencyNode node, List<Artifact> artifacts, String type, boolean transitivesFirst) {
+ final Artifact artifact = node.getArtifact();
+ final boolean isProjectArtifact = project.getArtifact().getId().equals( artifact.getId() );
+
+ if ( ! isProjectArtifact ) {
+ resolveArtifact( artifact );
+
+ }
+
+ if ( ! isProjectArtifact && ! transitivesFirst ) {
+ if ( include( node.getArtifact(), type ) ) {
+ artifacts.add( node.getArtifact() );
+ }
+ }
+
+ for ( DependencyNode child : ( List<DependencyNode> ) node.getChildren() ) {
+ processNode( child, artifacts, type, transitivesFirst );
+ }
+
+ if ( !isProjectArtifact && transitivesFirst ) {
+ if ( include( node.getArtifact(), type ) ) {
+ artifacts.add( node.getArtifact() );
+ }
+ }
+ }
+
+ private void resolveArtifact(Artifact artifact) {
+ try {
+ artifactResolver.resolve( artifact, project.getRemoteArtifactRepositories(), localRepository );
+ }
+ catch ( ArtifactResolutionException e ) {
+ throw new JDocBookProcessException( "Unable to resolve artifact [" + artifact.getId() + "]", e );
+ }
+ catch ( ArtifactNotFoundException e ) {
+ throw new JDocBookProcessException( "Unable to locate artifact [" + artifact.getId() + "]", e );
+ }
+ }
+
+ private boolean include(Artifact artifact, String matchingType) {
+ return matchingType.equals( artifact.getType() );
+ }
+
+ protected Locale parseLocale(String locale) {
+ return LocaleUtils.parse( locale, options.getLocaleSeparator() );
+ }
+
+ protected String stringify(Locale locale) {
+ return LocaleUtils.render( locale, options.getLocaleSeparator() );
+ }
+
+ protected class MavenLogBridge implements Log {
public void trace(String message) {
getLog().debug( message );
}
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/CleanPoMojo.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/CleanPoMojo.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/CleanPoMojo.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -29,6 +29,7 @@
import java.util.Locale;
import org.jboss.jdocbook.JDocBookProcessException;
+import org.jboss.jdocbook.i18n.I18nSource;
import org.codehaus.plexus.util.FileUtils;
/**
@@ -42,7 +43,7 @@
public class CleanPoMojo extends AbstractDocBookMojo {
protected void doExecute() throws JDocBookProcessException {
Locale requestedLocale = getRequestedLocale();
- for ( I18nSource source : getI18nSources() ) {
+ for ( I18nSource source : getI18nSources( true ) ) {
if ( requestedLocale != null && !requestedLocale.equals( source.getLocale() ) ) {
continue;
}
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/CleanPotMojo.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/CleanPotMojo.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/CleanPotMojo.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -25,6 +25,7 @@
package org.jboss.maven.plugins.jdocbook;
import java.io.IOException;
+import java.io.File;
import org.codehaus.plexus.util.FileUtils;
import org.jboss.jdocbook.JDocBookProcessException;
@@ -39,6 +40,7 @@
*/
public class CleanPotMojo extends AbstractDocBookMojo {
protected void doExecute() throws JDocBookProcessException {
+ final File potDirectory = getMasterTranslationDescriptor().resolvePotDirectory();
if ( potDirectory.exists() ) {
try {
FileUtils.cleanDirectory( potDirectory );
Added: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/GenerateXslFoMojo.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/GenerateXslFoMojo.java (rev 0)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/GenerateXslFoMojo.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -0,0 +1,51 @@
+/*
+ * jDocBook, processing of DocBook sources as a Maven plugin
+ *
+ * Copyright (c) 2009, Red Hat Middleware LLC or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors. All third-party contributions are
+ * distributed under license by Red Hat Middleware LLC.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301 USA
+ */
+package org.jboss.maven.plugins.jdocbook;
+
+import org.jboss.jdocbook.JDocBookProcessException;
+import org.jboss.jdocbook.render.format.FormatPlan;
+import org.jboss.jdocbook.render.format.StandardDocBookFormatDescriptors;
+import org.jboss.jdocbook.render.RendererFactory;
+import org.xml.sax.EntityResolver;
+
+/**
+ * Mojo to create an intermediate XSL-FO from the docbook source(s).
+ *
+ * @see org.jboss.jdocbook.render.impl.fop.XslFoGeneratorImpl for details.
+ *
+ * @goal xslfo
+ * @requiresDependencyResolution
+ *
+ * @author Steve Ebersole
+ */
+public class GenerateXslFoMojo extends AbstractDocBookMojo {
+ private final RendererFactory rendererFactory = new RendererFactory( this );
+
+ @Override
+ protected void process() throws JDocBookProcessException {
+ final EntityResolver entityResolver = getCatalogResolver();
+ final FormatPlan pdfFormatPlan = getFormatPlan( StandardDocBookFormatDescriptors.PDF );
+ rendererFactory.buildXslFoGenerator( pdfFormatPlan, entityResolver ).generateXslFo();
+ }
+}
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/GenerationMojo.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/GenerationMojo.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/GenerationMojo.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -23,16 +23,17 @@
*/
package org.jboss.maven.plugins.jdocbook;
-import java.io.File;
import java.util.List;
+import java.util.Set;
+import java.util.ArrayList;
import org.apache.maven.artifact.Artifact;
import org.jboss.jdocbook.profile.ProfilerFactory;
import org.jboss.jdocbook.render.RenderingException;
import org.jboss.jdocbook.render.format.FormatPlan;
-import org.jboss.jdocbook.render.impl.RendererFactory;
-import org.jboss.jdocbook.util.DocBookProfilingStrategy;
+import org.jboss.jdocbook.render.RendererFactory;
import org.jboss.jdocbook.xslt.XSLTException;
+import org.xml.sax.EntityResolver;
/**
* This mojo's responsibility within the plugin/packaging is actually performing
@@ -46,86 +47,69 @@
* @author Steve Ebersole
*/
public class GenerationMojo extends AbstractDocBookMojo {
- @Override
- protected boolean excludeIngoredTranslationsFromPublishSources() {
- return true;
- }
+ /**
+ * 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;
- @Override
- protected boolean excludeIngoredTranslationsFromI18nSources() {
- return true;
- }
+ /**
+ * 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;
+ private final ProfilerFactory profilerFactory = new ProfilerFactory( this );
+ private final RendererFactory rendererFactory = new RendererFactory( this );
+
+ @SuppressWarnings({ "unchecked" })
@Override
- protected void process(FormatPlan[] plans) throws XSLTException, RenderingException {
+ protected void process() throws XSLTException, RenderingException {
if ( !sourceDirectory.exists() ) {
getLog().info( "sourceDirectory [" + sourceDirectory.getAbsolutePath() + "] did not exist" );
return;
}
+ if ( options.getDocbookVersion() == null ) {
+ List<Artifact> artifacts = new ArrayList<Artifact>();
+ artifacts.addAll( projectArtifacts );
+ artifacts.addAll( pluginArtifacts );
+
+ for ( Artifact artifact : artifacts ) {
+ if ( "net.sf.docbook".equals( artifact.getGroupId() ) &&
+ "docbook".equals( artifact.getArtifactId() ) ) {
+ getLog().debug( "Found docbook version : " + artifact.getVersion() );
+ if ( options.getDocbookVersion() != null ) {
+ getLog().warn( "found multiple docbook versions" );
+ }
+ options.setDocbookVersion( artifact.getVersion() );
+ }
+ }
+ }
+
if ( !workDirectory.exists() ) {
boolean created = workDirectory.mkdirs();
if ( !created ) {
- options.getLog().info( "Unable to create work directory {}", workDirectory.getAbsolutePath() );
+ loggingBridge.info( "Unable to create work directory {}", workDirectory.getAbsolutePath() );
}
}
- if ( options.getDocbookVersion() == null ) {
- processArtifacts(
- new ArtifactProcessor() {
- public void process(Artifact artifact) {
- if ( "net.sf.docbook".equals( artifact.getGroupId() ) &&
- "docbook".equals( artifact.getArtifactId() ) ) {
- getLog().debug( "Found docbook version : " + artifact.getVersion() );
- if ( options.getDocbookVersion() != null ) {
- getLog().warn( "found multiple docbook versions" );
- }
- options.setDocbookVersion( artifact.getVersion() );
- }
- }
- }
- );
+ if ( profiling.isEnabled() ) {
+ profilerFactory.buildProfiler().applyProfiling();
}
- RendererFactory rendererFactory = new RendererFactory( options );
- String requestedFormat = getRequestedFormat();
+ final EntityResolver entityResolver = getCatalogResolver();
- List<PublishingSource> sources = getPublishingSources();
- for ( PublishingSource source : sources ) {
- options.getLog().info( "Starting generation " + stringify( source.getLocale() ) );
- File sourceFile = source.resolveDocumentFile();
- if ( !sourceFile.exists() ) {
- getLog().info( "Source document [" + sourceFile.getAbsolutePath() + "] did not exist; skipping" );
- continue;
- }
-
- File publishingDirectory = source.resolvePublishingDirectory();
- if ( ! publishingDirectory.exists() ) {
- boolean created = publishingDirectory.mkdirs();
- if ( !created ) {
- options.getLog().info( "Unable to create publishing directory {}", publishingDirectory.getAbsolutePath() );
- }
- }
-
- final String lang = stringify( source.getLocale() );
- options.getTransformerParameters().setProperty( "l10n.gentext.language", lang );
- options.getTransformerParameters().setProperty( "profile.lang", lang );
-
- boolean hasBeenProfiled = false;
- for ( FormatPlan plan : plans ) {
- options.getLog().info( "Processing " + lang + " -> " + plan.getName() );
- if ( requestedFormat != null && !requestedFormat.equals( plan.getName() ) ) {
- getLog().info( "skipping non-requested format [" + plan.getName() + "]" );
- continue;
- }
- if ( plan.getProfiling() == DocBookProfilingStrategy.TWO_PASS && !hasBeenProfiled ) {
- hasBeenProfiled = true;
- File profileOutputDir = new File( new File( workDirectory, "profile" ), lang );
- sourceFile = new ProfilerFactory( profileOutputDir, options ).buildProfiler().applyProfiling( sourceFile );
- }
- rendererFactory.buildRenderer( plan.getName() ).render( sourceFile, plan, publishingDirectory, stagingDirectory );
- }
+ for ( FormatPlan formatPlan : getFormatPlans() ) {
+ rendererFactory.buildRenderer( formatPlan, entityResolver ).render();
}
}
-
}
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/PackageMojo.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/PackageMojo.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/PackageMojo.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -30,6 +30,7 @@
import org.codehaus.plexus.archiver.ArchiverException;
import org.codehaus.plexus.archiver.jar.JarArchiver;
import org.jboss.jdocbook.render.RenderingException;
+import org.jboss.jdocbook.render.PublishingSource;
import org.jboss.jdocbook.render.format.FormatPlan;
import org.jboss.jdocbook.xslt.XSLTException;
@@ -51,22 +52,18 @@
* {@inheritDoc}
*/
@Override
- protected void process(FormatPlan[] formatPlans) throws RenderingException, XSLTException {
+ protected void process() throws RenderingException, XSLTException {
File projectArtifactFile = new File( project.getBuild().getOutputDirectory(), project.getBuild().getFinalName() + ".war" );
JarArchiver archiver = new JarArchiver();
archiver.setDestFile( projectArtifactFile );
-// RendererFactory rendererFactory = new RendererFactory( options );
try {
- for ( PublishingSource source : getPublishingSources() ) {
- for ( FormatPlan formatPlan : formatPlans ) {
+ for ( PublishingSource source : getPublishingSources( true ) ) {
+ for ( FormatPlan formatPlan : getFormatPlans() ) {
archiver.addDirectory(
new File( source.resolvePublishingDirectory(), formatPlan.getName() ),
formatPlan.getName() + "/"
);
-// if ( attach ) {
-// File bundle = rendererFactory.buildRenderer( formatPlan.getName() ).getAttachableBundle( )
-// }
}
}
archiver.createArchive();
Added: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/Profiling.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/Profiling.java (rev 0)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/Profiling.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -0,0 +1,68 @@
+/*
+ * jDocBook, processing of DocBook sources as a Maven plugin
+ *
+ * Copyright (c) 2009, Red Hat Middleware LLC or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors. All third-party contributions are
+ * distributed under license by Red Hat Middleware LLC.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301 USA
+ */
+package org.jboss.maven.plugins.jdocbook;
+
+/**
+ * TODO : javadoc
+ *
+ * @author Steve Ebersole
+ */
+public class Profiling {
+ private boolean enabled;
+ private String attributeName;
+ private String attributeValue;
+
+ public Profiling() {
+ }
+
+ public Profiling(String attributeName, String attributeValue) {
+ this.enabled = true;
+ this.attributeName = attributeName;
+ this.attributeValue = attributeValue;
+ }
+
+ public boolean isEnabled() {
+ return enabled;
+ }
+
+ public void setEnabled(boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ public String getAttributeName() {
+ return attributeName;
+ }
+
+ public void setAttributeName(String attributeName) {
+ this.attributeName = attributeName;
+ }
+
+ public String getAttributeValue() {
+ return attributeValue;
+ }
+
+ public void setAttributeValue(String attributeValue) {
+ this.attributeValue = attributeValue;
+ }
+}
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/ResourceMojo.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/ResourceMojo.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/ResourceMojo.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -21,20 +21,21 @@
* 51 Franklin Street, Fifth Floor
* Boston, MA 02110-1301 USA
*/
-
package org.jboss.maven.plugins.jdocbook;
import java.io.File;
import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
+import java.io.InputStream;
+import java.util.Arrays;
import org.apache.maven.artifact.Artifact;
+import org.codehaus.plexus.archiver.ArchiveFileFilter;
+import org.codehaus.plexus.archiver.ArchiveFilterException;
import org.codehaus.plexus.archiver.ArchiverException;
+import org.codehaus.plexus.archiver.FilterEnabled;
import org.codehaus.plexus.archiver.UnArchiver;
import org.codehaus.plexus.archiver.manager.NoSuchArchiverException;
import org.jboss.jdocbook.render.RenderingException;
-import org.jboss.jdocbook.render.format.FormatPlan;
import org.jboss.jdocbook.xslt.XSLTException;
import org.jboss.maven.shared.resource.ResourceDelegate;
@@ -47,57 +48,50 @@
*
* @goal resources
* @phase process-resources
- * @requiresDependencyResolution
+ * @requiresDependencyResolution compile
*
* @author Steve Ebersole
*/
public class ResourceMojo extends AbstractDocBookMojo {
- protected void process(FormatPlan[] formattings) throws RenderingException, XSLTException {
- // allow project local style artifacts to override imported ones...
- processDependencySupportArtifacts( collectDocBookStyleDependentArtifacts() );
- processProjectResources();
- }
- // project local resources ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- private void processProjectResources() throws RenderingException {
- if ( imageResource != null ) {
- new ResourceDelegate( project, new File( stagingDirectory, "images" ), getLog() ).process( imageResource );
- }
- if ( cssResource != null ) {
- new ResourceDelegate( project, new File( stagingDirectory, "css" ), getLog() ).process( cssResource );
- }
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected void process() throws RenderingException, XSLTException {
+ stageStyleSupportArtifacts();
+ stageProjectResources();
}
- // dependency support resources ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ // style resources ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- private List<Artifact> collectDocBookStyleDependentArtifacts() {
- final ArrayList<Artifact> rtn = new ArrayList<Artifact>();
- processArtifacts(
- new ArtifactProcessor() {
- public void process(Artifact artifact) {
- if ( "jdocbook-style".equals( artifact.getType() ) ) {
- rtn.add( artifact );
- }
- }
- }
- );
- return rtn;
- }
+ private final ArchiveFileFilter[] styleEntryFilters = new ArchiveFileFilter[] {
+ new MetaInfExclusionFilter(),
+ };
- private void processDependencySupportArtifacts(List<Artifact> artifacts) throws RenderingException {
- for ( Artifact artifact : artifacts ) {
- processDependencySupportArtifact( artifact.getFile(), stagingDirectory );
+ private void stageStyleSupportArtifacts() {
+ for ( Artifact artifact : collectArtifactsByType( "jdocbook-style", true ) ) {
+ getLog().debug( "processing support artifact : " + artifact.getId() );
+ unpackSupportArtifact( artifact.getFile(), stagingDirectory, styleEntryFilters );
}
}
- protected void processDependencySupportArtifact(File file, File target) throws RenderingException {
- getLog().info( "unpacking dependency resource [" + file.getAbsolutePath() + "] to staging-dir [" + target.getAbsolutePath() + "]" );
+ protected void unpackSupportArtifact(File file, File target, ArchiveFileFilter[] entryFilters) throws RenderingException {
+ getLog().debug( "unpacking support artifact [" + file.getAbsolutePath() + "] to directory [" + target.getAbsolutePath() + "]" );
try {
- target.mkdirs();
+ if ( ! target.exists() ) {
+ boolean created = target.mkdirs();
+ if ( ! created ) {
+ getLog().warn( "File-system reported problem creating directory " + target.getAbsolutePath() );
+ }
+ }
UnArchiver unArchiver = archiverManager.getUnArchiver( "jar" );
+ if ( FilterEnabled.class.isInstance( unArchiver ) ) {
+ // try to save some disk space...
+ ( ( FilterEnabled ) unArchiver ).setArchiveFilters( Arrays.asList( entryFilters ) );
+ }
unArchiver.setSourceFile( file );
unArchiver.setDestDirectory( target );
unArchiver.extract();
@@ -112,4 +106,27 @@
throw new RenderingException( "Error unpacking file [" + file + "] to [" + target + "]", e );
}
}
+
+
+ // project local resources ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ private void stageProjectResources() throws RenderingException {
+ if ( imageResource != null ) {
+ new ResourceDelegate( project, new File( stagingDirectory, "images" ), getLog() ).process( imageResource );
+ }
+ if ( cssResource != null ) {
+ new ResourceDelegate( project, new File( stagingDirectory, "css" ), getLog() ).process( cssResource );
+ }
+ }
+
+
+ // ArchiveFileFilter impls ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ private static class MetaInfExclusionFilter implements ArchiveFileFilter {
+ public boolean include(InputStream dataStream, String entryName) throws ArchiveFilterException {
+ // exclude all META-INF entries.
+ return ! entryName.toUpperCase().startsWith( "META-INF/" );
+ }
+ }
+
}
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/TranslationMojo.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/TranslationMojo.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/TranslationMojo.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -24,7 +24,6 @@
package org.jboss.maven.plugins.jdocbook;
import org.jboss.jdocbook.JDocBookProcessException;
-import org.jboss.jdocbook.i18n.Factory;
/**
* Responsible for translating the DocBook source based on the translator's PO files.
@@ -36,26 +35,7 @@
*/
public class TranslationMojo extends AbstractDocBookMojo {
@Override
- protected boolean excludeIngoredTranslationsFromPublishSources() {
- return true;
- }
-
- @Override
- protected boolean excludeIngoredTranslationsFromI18nSources() {
- return true;
- }
-
- @Override
protected void doExecute() throws JDocBookProcessException {
- MasterTranslationDescriptor masterTranslationDescriptor = getMasterTranslationDescriptor();
- for ( I18nSource source : getI18nSources() ) {
- getLog().info( "Processing translation [" + stringify( source.getLocale() ) + "]" );
- Factory.getTranslationBuilder().buildTranslation(
- masterTranslationDescriptor.resolveDocumentFile(),
- source.resolvePoDirectory(),
- source.resolveTranslatedXmlDirectory(),
- options
- );
- }
+ getI18nProcesserFactory().getTranslationBuilder().buildTranslations();
}
}
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/UpdatePoMojo.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/UpdatePoMojo.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/UpdatePoMojo.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -21,14 +21,9 @@
* 51 Franklin Street, Fifth Floor
* Boston, MA 02110-1301 USA
*/
-
package org.jboss.maven.plugins.jdocbook;
-import java.util.List;
-import java.util.Locale;
-
import org.jboss.jdocbook.JDocBookProcessException;
-import org.jboss.jdocbook.i18n.Factory;
/**
* UpdatePoMojo implementationslatable strings from the master translation source into the POT files.
@@ -40,14 +35,6 @@
*/
public class UpdatePoMojo extends AbstractDocBookMojo {
protected void doExecute() throws JDocBookProcessException {
- Locale translationLocale = getRequestedLocale();
- List<I18nSource> sources = getI18nSources();
- for ( I18nSource source : sources ) {
- if ( translationLocale == null || translationLocale.equals( source.getLocale() ) ) {
- getLog().info( "Updating PO file [" + stringify( source.getLocale() ) + "]" );
- Factory.getPoSynchronizer()
- .synchronizePo( potDirectory, source.resolvePoDirectory(), source.getLocale(), options );
- }
- }
+ getI18nProcesserFactory().getPoSynchronizer().synchronizePoFiles();
}
}
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/UpdatePotMojo.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/UpdatePotMojo.java 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/UpdatePotMojo.java 2009-06-17 15:10:29 UTC (rev 26993)
@@ -24,9 +24,8 @@
package org.jboss.maven.plugins.jdocbook;
import org.jboss.jdocbook.JDocBookProcessException;
-import org.jboss.jdocbook.i18n.Factory;
+import org.jboss.jdocbook.i18n.I18nEnvironment;
-
/**
* Manages pushing translatable strings from the master translation source into the POT files.
*
@@ -35,9 +34,8 @@
*
* @author Steve Ebersole
*/
-public class UpdatePotMojo extends AbstractDocBookMojo {
+public class UpdatePotMojo extends AbstractDocBookMojo implements I18nEnvironment {
protected void doExecute() throws JDocBookProcessException {
- MasterTranslationDescriptor master = getMasterTranslationDescriptor();
- Factory.getPotSynchronizer().synchronizePot( master.resolveDocumentFile(), potDirectory, options );
+ getI18nProcesserFactory().getPotSynchronizer().synchronizePot();
}
}
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/resources/META-INF/plexus/components.xml
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/resources/META-INF/plexus/components.xml 2009-06-17 13:10:56 UTC (rev 26992)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/resources/META-INF/plexus/components.xml 2009-06-17 15:10:29 UTC (rev 26993)
@@ -28,7 +28,6 @@
<components>
<!-- Defines the lifecycle associated with the 'jdocbook' packaging -->
-
<component>
<role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
<role-hint>jdocbook</role-hint>
More information about the jboss-svn-commits
mailing list