[jboss-svn-commits] JBL Code SVN: r19751 - in labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/xslt: resolve and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Apr 29 02:03:36 EDT 2008


Author: steve.ebersole at jboss.com
Date: 2008-04-29 02:03:36 -0400 (Tue, 29 Apr 2008)
New Revision: 19751

Added:
   labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/xslt/resolve/ClasspathResolver.java
Modified:
   labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/xslt/TransformerBuilder.java
Log:
MPJDOCBOOK-8 : classpath:/ style URI resolution

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	2008-04-29 05:58:10 UTC (rev 19750)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/xslt/TransformerBuilder.java	2008-04-29 06:03:36 UTC (rev 19751)
@@ -30,6 +30,7 @@
 import org.jboss.jdocbook.render.format.FormatPlan;
 import org.jboss.jdocbook.util.NoOpWriter;
 import org.jboss.jdocbook.util.ResourceHelper;
+import org.jboss.jdocbook.xslt.resolve.ClasspathResolver;
 import org.jboss.jdocbook.xslt.resolve.CurrentVersionResolver;
 import org.jboss.jdocbook.xslt.resolve.ExplicitUrnResolver;
 import org.jboss.jdocbook.xslt.resolve.RelativeJarUriResolver;
@@ -140,6 +141,7 @@
 			resolverChain.addResolver( new VersionResolver( options.getDocbookVersion() ) );
 		}
 		resolverChain.addResolver( new RelativeJarUriResolver() );
+		resolverChain.addResolver( new ClasspathResolver() );
 		resolverChain.addResolver( options.getCatalogResolver() );
 	}
 }
\ No newline at end of file

Added: 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	                        (rev 0)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jdocbook-plugin/src/main/java/org/jboss/jdocbook/xslt/resolve/ClasspathResolver.java	2008-04-29 06:03:36 UTC (rev 19751)
@@ -0,0 +1,67 @@
+/*
+ * 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.xslt.resolve;
+
+import java.net.URL;
+
+import javax.xml.transform.Source;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.URIResolver;
+import javax.xml.transform.stream.StreamSource;
+
+/**
+ * 
+ * Resolves classpath references from the given classloader using classpath:/
+ * as the protocol handler
+ * 
+ * @author Pete Muir
+ */
+public class ClasspathResolver implements URIResolver {
+	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:" ) ) {
+			return null;
+		}
+		
+		try {
+			URL url = classLoader.getResource( href.substring(10) );
+			return new StreamSource( url.openStream(), url.toExternalForm() );
+		}
+		catch ( Throwable t ) {
+			return null;
+		}
+	}
+
+}




More information about the jboss-svn-commits mailing list