[jboss-svn-commits] JBL Code SVN: r16174 - in labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss: jdocbook/profile and 4 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Oct 30 16:52:28 EDT 2007
Author: steve.ebersole at jboss.com
Date: 2007-10-30 16:52:28 -0400 (Tue, 30 Oct 2007)
New Revision: 16174
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/profile/ProfilerImpl.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/util/FileUtils.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/maven/plugins/jdocbook/AbstractDocBookMojo.java
Log:
use buffered input to build sax-source used to parse the docbook sources
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 2007-10-30 19:30:14 UTC (rev 16173)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/Options.java 2007-10-30 20:52:28 UTC (rev 16174)
@@ -122,12 +122,7 @@
public TransformerBuilder getTransformerBuilder() {
if ( transformerBuilder == null ) {
- transformerBuilder = new TransformerBuilder(
- resolveXmlTransformerType(),
- getTransformerParameters(),
- getCatalogResolver(),
- getDocbookVersion()
- );
+ transformerBuilder = new TransformerBuilder( this );
}
return transformerBuilder;
}
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 2007-10-30 19:30:14 UTC (rev 16173)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/profile/ProfilerImpl.java 2007-10-30 20:52:28 UTC (rev 16174)
@@ -16,24 +16,17 @@
package org.jboss.jdocbook.profile;
import java.io.File;
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
-import javax.xml.transform.Source;
-import javax.xml.transform.Result;
import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.sax.SAXSource;
-import javax.xml.parsers.SAXParserFactory;
-import javax.xml.parsers.ParserConfigurationException;
import org.jboss.jdocbook.Options;
import org.jboss.jdocbook.render.RenderingException;
-import org.jboss.jdocbook.xslt.XSLTException;
import org.jboss.jdocbook.util.Constants;
-import org.xml.sax.EntityResolver;
-import org.xml.sax.XMLReader;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.apache.xerces.jaxp.SAXParserFactoryImpl;
+import org.jboss.jdocbook.util.FileUtils;
+import org.jboss.jdocbook.xslt.XSLTException;
/**
* Implementation of the {@link Profiler} contract.
@@ -71,34 +64,9 @@
}
private Source buildSource(File sourceFile) throws RenderingException {
- try {
- EntityResolver resolver = options.getCatalogResolver();
- SAXParserFactory factory = createParserFactory();
- XMLReader reader = factory.newSAXParser().getXMLReader();
- reader.setEntityResolver( resolver );
-
- // Disable DTD loading and validation
- reader.setFeature( Constants.DTD_LOADING_FEATURE, false );
- reader.setFeature( Constants.DTD_VALIDATION_FEATURE, false );
-
- // my attempts at buffering the input stream here failed with issues
- // resolving XIncludes... :(
- return new SAXSource( reader, new InputSource( sourceFile.getAbsolutePath() ) );
- }
- catch ( ParserConfigurationException e ) {
- throw new RenderingException( "unable to build SAX Parser", e );
- }
- catch ( SAXException e ) {
- throw new RenderingException( "unable to build SAX Parser", e );
- }
+ return FileUtils.createSAXSource( sourceFile, options.getCatalogResolver(), options.isXincludeSupported() );
}
- protected final SAXParserFactory createParserFactory() {
- SAXParserFactory parserFactory = new SAXParserFactoryImpl();
- parserFactory.setXIncludeAware( options.isXincludeSupported() );
- return parserFactory;
- }
-
protected Result buildResult(File targetFile) throws RenderingException, XSLTException {
return new StreamResult( targetFile );
}
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 2007-10-30 19:30:14 UTC (rev 16173)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/render/impl/BasicRenderer.java 2007-10-30 20:52:28 UTC (rev 16174)
@@ -15,35 +15,23 @@
*/
package org.jboss.jdocbook.render.impl;
-import java.io.BufferedInputStream;
import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParserFactory;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
-import javax.xml.transform.sax.SAXSource;
import javax.xml.transform.stream.StreamResult;
-import org.apache.xerces.jaxp.SAXParserFactoryImpl;
-import org.codehaus.plexus.util.FileUtils;
import org.jboss.jdocbook.Options;
import org.jboss.jdocbook.render.Renderer;
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.Constants;
import org.jboss.jdocbook.xslt.XSLTException;
-import org.xml.sax.EntityResolver;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
/**
* The basic implementation of the {@link Renderer} contract.
@@ -126,7 +114,7 @@
transformer.transform( transformationSource, transformationResult );
}
catch ( TransformerException e ) {
- throw new XSLTException( "error performing translation [" + e.getLocationAsString() + "] : " + e.getMessage(), e );
+ throw new XSLTException( "error performing translation [" + e.getMessageAndLocation() + "]", e );
}
finally {
releaseResult( transformationResult );
@@ -165,33 +153,7 @@
}
private Source buildSource(File sourceFile) throws RenderingException {
- try {
- EntityResolver resolver = options.getCatalogResolver();
- SAXParserFactory factory = createParserFactory();
- XMLReader reader = factory.newSAXParser().getXMLReader();
- reader.setEntityResolver( resolver );
-
- // Disable DTD loading and validation
- reader.setFeature( Constants.DTD_LOADING_FEATURE, false );
- reader.setFeature( Constants.DTD_VALIDATION_FEATURE, false );
-
- return new SAXSource( reader, new InputSource( new BufferedInputStream( new FileInputStream( sourceFile ) ) ) );
- }
- catch ( ParserConfigurationException e ) {
- throw new RenderingException( "unable to build SAX Parser", e );
- }
- catch ( SAXException e ) {
- throw new RenderingException( "unable to build SAX Parser", e );
- }
- catch ( FileNotFoundException e ) {
- throw new RenderingException( "unable to locate source file", e );
- }
- }
-
- protected final SAXParserFactory createParserFactory() {
- SAXParserFactory parserFactory = new SAXParserFactoryImpl();
- parserFactory.setXIncludeAware( options.isXincludeSupported() );
- return parserFactory;
+ return FileUtils.createSAXSource( sourceFile, options.getCatalogResolver(), options.isXincludeSupported() );
}
protected Result buildResult(File targetFile) throws RenderingException, XSLTException {
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 2007-10-30 19:30:14 UTC (rev 16173)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/util/FileUtils.java 2007-10-30 20:52:28 UTC (rev 16174)
@@ -15,9 +15,23 @@
*/
package org.jboss.jdocbook.util;
+import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileFilter;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.net.MalformedURLException;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParserFactory;
+import javax.xml.transform.sax.SAXSource;
+import org.apache.xerces.jaxp.SAXParserFactoryImpl;
+import org.jboss.jdocbook.JDocBookProcessException;
+import org.xml.sax.EntityResolver;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.XMLReader;
+
/**
* Various {@link java.io.File file} and {@link java.io.File directory} related utilities.
*
@@ -37,6 +51,48 @@
};
/**
+ * Create a SAXSource from a given <tt>file</tt>.
+ * <p/>
+ * NOTE: the result <b>is</b> {@link BufferedInputStream buffered}.
+ *
+ * @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) {
+ try {
+ SAXParserFactory factory = new SAXParserFactoryImpl();
+ factory.setXIncludeAware( xincludeAware );
+ XMLReader reader = factory.newSAXParser().getXMLReader();
+ reader.setEntityResolver( resolver );
+
+ // Disable DTD loading and validation
+ reader.setFeature( Constants.DTD_LOADING_FEATURE, false );
+ reader.setFeature( Constants.DTD_VALIDATION_FEATURE, false );
+
+ try {
+ InputSource source = new InputSource( new BufferedInputStream( new FileInputStream( file ) ) );
+ source.setSystemId( file.toURL().toString() );
+ return new SAXSource( reader, source );
+ }
+ catch ( FileNotFoundException e ) {
+ throw new JDocBookProcessException( "unable to locate source file", e );
+ }
+ catch ( MalformedURLException e ) {
+ throw new JDocBookProcessException( "unexpected problem converting file to URL", e );
+ }
+ }
+ catch ( ParserConfigurationException e ) {
+ throw new JDocBookProcessException( "unable to build SAX Parser/Factory [" + e.getMessage() + "]", e );
+ }
+ catch ( SAXException e ) {
+ throw new JDocBookProcessException( "unable to build SAX Parser/Factory [" + e.getMessage() + "]", e );
+ }
+
+ }
+
+ /**
* Determine the 'relativity' of a file in relation to the given basedir. 'relativity', is the relative path
* from the basedir to the file's parent (directory).
* <p/>
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 2007-10-30 19:30:14 UTC (rev 16173)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/util/XIncludeHelper.java 2007-10-30 20:52:28 UTC (rev 16174)
@@ -21,12 +21,10 @@
import java.net.URL;
import java.util.Set;
import java.util.TreeSet;
-import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.TransformerException;
-import javax.xml.transform.sax.SAXSource;
import javax.xml.transform.stream.StreamResult;
import org.apache.xerces.jaxp.SAXParserFactoryImpl;
@@ -34,7 +32,6 @@
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
/**
* A helper for dealing with XIncludes.
@@ -55,7 +52,6 @@
SAXParserFactory parserFactory = new SAXParserFactoryImpl();
parserFactory.setXIncludeAware( true );
- XMLReader reader = parserFactory.newSAXParser().getXMLReader();
EntityResolver resolver = new EntityResolver() {
public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException {
if ( publicId == null && systemId != null && systemId.startsWith( "file:/" ) ) {
@@ -70,23 +66,13 @@
return null;
}
};
- reader.setEntityResolver( resolver );
- // Disable DTD loading and validation
- reader.setFeature( Constants.DTD_LOADING_FEATURE, false );
- reader.setFeature( Constants.DTD_VALIDATION_FEATURE, false );
- Source transformationSource = new SAXSource( reader, new InputSource( FileUtils.resolveFullPathName( root ) ) );
+ Source transformationSource = FileUtils.createSAXSource( root, resolver, true );
Result transformationResult = new StreamResult( new NoOpWriter() );
javax.xml.transform.TransformerFactory transformerFactory = new com.icl.saxon.TransformerFactoryImpl();
transformerFactory.newTransformer().transform( transformationSource, transformationResult );
}
- catch ( SAXException e ) {
- throw new JDocBookProcessException( "Problem processing SAX events", e );
- }
- catch ( ParserConfigurationException e ) {
- throw new JDocBookProcessException( "SAX factory condifiguration problem", e );
- }
catch ( TransformerException e ) {
throw new JDocBookProcessException( "Problem performing 'transformation'", e );
}
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 2007-10-30 19:30:14 UTC (rev 16173)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/xslt/TransformerBuilder.java 2007-10-30 20:52:28 UTC (rev 16174)
@@ -27,16 +27,15 @@
import javax.xml.transform.stream.StreamSource;
import com.icl.saxon.Controller;
-import org.apache.xml.resolver.tools.CatalogResolver;
import org.jboss.jdocbook.render.format.FormatPlan;
import org.jboss.jdocbook.util.NoOpWriter;
import org.jboss.jdocbook.util.ResourceHelper;
-import org.jboss.jdocbook.util.TransformerType;
import org.jboss.jdocbook.xslt.resolve.CurrentVersionResolver;
import org.jboss.jdocbook.xslt.resolve.ExplicitUrnResolver;
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.Options;
/**
* A builder of {@link javax.xml.transform.Transformer} instances, configurable
@@ -45,20 +44,10 @@
* @author Steve Ebersole
*/
public class TransformerBuilder {
- private final TransformerType transformerType;
- private final Properties transformerParameters;
- private final CatalogResolver catalogResolver;
- private final String docbookVersion;
+ private final Options options;
- public TransformerBuilder(
- TransformerType transformerType,
- Properties transformerParameters,
- CatalogResolver catalogResolver,
- String docbookVersion) {
- this.transformerType = transformerType;
- this.transformerParameters = transformerParameters;
- this.catalogResolver = catalogResolver;
- this.docbookVersion = docbookVersion;
+ public TransformerBuilder(Options options) {
+ this.options = options;
}
public Transformer buildStandardTransformer(URL xslt) {
@@ -80,7 +69,7 @@
}
protected Transformer buildTransformer(URL xslt, URIResolver uriResolver) throws XSLTException {
- javax.xml.transform.TransformerFactory transformerFactory = transformerType.getSAXTransformerFactory();
+ javax.xml.transform.TransformerFactory transformerFactory = options.resolveXmlTransformerType().getSAXTransformerFactory();
transformerFactory.setURIResolver( uriResolver );
Transformer transformer;
@@ -92,17 +81,17 @@
throw new XSLTException( "problem opening stylesheet", e );
}
catch ( TransformerConfigurationException e ) {
- throw new XSLTException( "unable to build transformer", e );
+ throw new XSLTException( "unable to build transformer [" + e.getLocationAsString() + "] : " + e.getMessage(), e );
}
- configureTransformer( transformer, uriResolver, transformerParameters );
+ configureTransformer( transformer, uriResolver, options.getTransformerParameters() );
return transformer;
}
public void configureTransformer(Transformer transformer, FormatPlan formatPlan) {
- configureTransformer( transformer, buildUriResolver( formatPlan ), transformerParameters );
+ configureTransformer( transformer, buildUriResolver( formatPlan ), options.getTransformerParameters() );
}
public static void configureTransformer(Transformer transformer, URIResolver uriResolver, Properties transformerParameters) {
@@ -129,24 +118,28 @@
}
}
- public ResolverChain buildUriResolver(FormatPlan formatPlan) throws XSLTException {
- return buildUriResolver( formatPlan.getName(), formatPlan.getCorrespondingDocBookStylesheetResource() );
- }
-
public ResolverChain buildStandardUriResolver() {
ResolverChain resolverChain = new ResolverChain();
- resolverChain.addResolver( new CurrentVersionResolver() );
- if ( docbookVersion != null ) {
- resolverChain.addResolver( new VersionResolver( docbookVersion ) );
- }
- resolverChain.addResolver( new RelativeJarUriResolver() );
- resolverChain.addResolver( catalogResolver );
+ applyStandardResolvers( resolverChain );
return resolverChain;
}
+ public ResolverChain buildUriResolver(FormatPlan formatPlan) throws XSLTException {
+ return buildUriResolver( formatPlan.getName(), formatPlan.getCorrespondingDocBookStylesheetResource() );
+ }
+
public ResolverChain buildUriResolver(String formatName, String docBookstyleSheet) throws XSLTException {
- ResolverChain resolverChain = buildStandardUriResolver();
- resolverChain.addResolver( new ExplicitUrnResolver( formatName, docBookstyleSheet ) );
+ ResolverChain resolverChain = new ResolverChain( new ExplicitUrnResolver( 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 RelativeJarUriResolver() );
+ resolverChain.addResolver( options.getCatalogResolver() );
+ }
}
\ No newline at end of file
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 2007-10-30 19:30:14 UTC (rev 16173)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/maven/plugins/jdocbook/AbstractDocBookMojo.java 2007-10-30 20:52:28 UTC (rev 16174)
@@ -250,7 +250,11 @@
translationBaseDirectory = sourceDirectory;
}
- if ( translations != null && translations.length != 0 ) {
+ if ( translations == null ) {
+ translations = new String[0];
+ }
+
+ if ( translations.length != 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 );
More information about the jboss-svn-commits
mailing list