[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