Styling update, added dependency dependency to pom, and added resolver class.

This commit is contained in:
Seth
2011-10-27 10:52:10 -05:00
committed by dcramer
parent b49956e0ca
commit 27e4486390
3 changed files with 130 additions and 83 deletions

View File

@@ -125,9 +125,15 @@
<groupId>com.rackspace.cloud.api</groupId> <groupId>com.rackspace.cloud.api</groupId>
<artifactId>glossary</artifactId> <artifactId>glossary</artifactId>
<version>1.0.0-SNAPSHOT</version> <version>1.0.0-SNAPSHOT</version>
<scope>runtime</scope>
</dependency> </dependency>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.3</version>
</dependency>
<dependency> <dependency>
<groupId>junit</groupId> <groupId>junit</groupId>
<artifactId>junit</artifactId> <artifactId>junit</artifactId>

View File

@@ -0,0 +1,43 @@
package com.rackspace.cloud.api.docs;
import javax.xml.transform.Source;
import javax.xml.transform.TransformerException;
import javax.xml.transform.URIResolver;
import javax.xml.transform.stream.StreamSource;
import java.io.IOException;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* User: sbrayman
* Date: 10/19/11
*/
public class ResourceResolver implements URIResolver {
private URIResolver originalResolver;
private String type;
private String exampleIri = "mvn://com.rackspace.cloud.api:glossary/glossary.xml";
public ResourceResolver(URIResolver original, String type) {
this.originalResolver = original;
this.type = type;
}
public Source resolve(String href, String base) throws TransformerException {
String filePath = exampleIri;
URL url = this.getClass().getResource(filePath);
if (url != null) {
try {
return new StreamSource(url.openStream(), url.toExternalForm());
} catch (IOException ioe) {
throw new TransformerException("Can't resolve glossary link: " + href + "->" + filePath + ". Glossary missing in classpath?", ioe);
}
}
System.err.println("This failed to match. " + href);
return originalResolver.resolve(href, base);
}
}

View File

@@ -19,19 +19,25 @@ import javax.xml.transform.stream.StreamResult;
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import javax.xml.transform.dom.DOMSource; import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamResult;
import org.xml.sax.EntityResolver; import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource; import org.xml.sax.InputSource;
import org.xml.sax.SAXException; import org.xml.sax.SAXException;
import java.io.StringReader; import java.io.StringReader;
import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoExecutionException;
import com.agilejava.docbkx.maven.AbstractWebhelpMojo; import com.agilejava.docbkx.maven.AbstractWebhelpMojo;
import com.agilejava.docbkx.maven.TransformerBuilder; import com.agilejava.docbkx.maven.TransformerBuilder;
import javax.xml.transform.URIResolver; import javax.xml.transform.URIResolver;
import com.rackspace.cloud.api.docs.DocBookResolver; import com.rackspace.cloud.api.docs.DocBookResolver;
import com.agilejava.docbkx.maven.Parameter; import com.agilejava.docbkx.maven.Parameter;
@@ -59,7 +65,7 @@ public abstract class WebHelpMojo extends AbstractWebhelpMojo {
/** /**
* Controls whether output is colorized based on revisionflag attributes. * Controls whether output is colorized based on revisionflag attributes.
* *
* @parameter expression="${generate-webhelp.show.changebars}" * @parameter expression="${generate-webhelp.show.changebars}"
*/ */
private String showChangebars; private String showChangebars;
@@ -76,7 +82,7 @@ public abstract class WebHelpMojo extends AbstractWebhelpMojo {
* @parameter expression="${generate-webhelp.use.version.for.disqus}" default-value="0" * @parameter expression="${generate-webhelp.use.version.for.disqus}" default-value="0"
*/ */
private String useVersionForDisqus; private String useVersionForDisqus;
/** /**
* Controls whether the disqus identifier is used. * Controls whether the disqus identifier is used.
* *
@@ -99,7 +105,7 @@ public abstract class WebHelpMojo extends AbstractWebhelpMojo {
private String enableDisqus; private String enableDisqus;
/** /**
* A parameter used by the Disqus comments. * A parameter used by the Disqus comments.
* *
* @parameter expression="${generate-webhelp.disqus.shortname}" default-value="" * @parameter expression="${generate-webhelp.disqus.shortname}" default-value=""
*/ */
@@ -148,7 +154,7 @@ public abstract class WebHelpMojo extends AbstractWebhelpMojo {
private String trimWadlUriCount; private String trimWadlUriCount;
/** /**
* Controls how the path to the wadl is calculated. If 0 or not set, then * Controls how the path to the wadl is calculated. If 0 or not set, then
* The xslts look for the normalized wadl in /generated-resources/xml/xslt/. * The xslts look for the normalized wadl in /generated-resources/xml/xslt/.
* Otherwise, in /generated-resources/xml/xslt/path/to/docbook-src, e.g. * Otherwise, in /generated-resources/xml/xslt/path/to/docbook-src, e.g.
* /generated-resources/xml/xslt/src/docbkx/foo.wadl * /generated-resources/xml/xslt/src/docbkx/foo.wadl
@@ -172,15 +178,15 @@ public abstract class WebHelpMojo extends AbstractWebhelpMojo {
*/ */
private String socialIcons; private String socialIcons;
/** /**
* DOCUMENT ME! * DOCUMENT ME!
* *
* @param transformer DOCUMENT ME! * @param transformer DOCUMENT ME!
* @param sourceFilename DOCUMENT ME! * @param sourceFilename DOCUMENT ME!
* @param targetFile DOCUMENT ME! * @param targetFile DOCUMENT ME!
*/ */
public void adjustTransformer(Transformer transformer, String sourceFilename, File targetFile) { public void adjustTransformer(Transformer transformer, String sourceFilename, File targetFile) {
super.adjustTransformer(transformer, sourceFilename, targetFile); super.adjustTransformer(transformer, sourceFilename, targetFile);
if(glossaryUri != null){ if(glossaryUri != null){
transformer.setParameter("glossary.uri", glossaryUri); transformer.setParameter("glossary.uri", glossaryUri);
@@ -195,24 +201,24 @@ public abstract class WebHelpMojo extends AbstractWebhelpMojo {
transformer.setParameter("use.disqus.id", useDisqusId); transformer.setParameter("use.disqus.id", useDisqusId);
} }
if(useVersionForDisqus != null){ if (useVersionForDisqus != null) {
transformer.setParameter("use.version.for.disqus", useVersionForDisqus); transformer.setParameter("use.version.for.disqus", useVersionForDisqus);
} }
transformer.setParameter("project.build.directory", projectBuildDirectory); transformer.setParameter("project.build.directory", projectBuildDirectory);
transformer.setParameter("branding", branding); transformer.setParameter("branding", branding);
transformer.setParameter("enable.disqus", enableDisqus); transformer.setParameter("enable.disqus", enableDisqus);
if(disqusShortname != null){ if (disqusShortname != null) {
transformer.setParameter("disqus.shortname", disqusShortname); transformer.setParameter("disqus.shortname", disqusShortname);
} }
if(enableGoogleAnalytics != null){ if (enableGoogleAnalytics != null) {
transformer.setParameter("enable.google.analytics",enableGoogleAnalytics); transformer.setParameter("enable.google.analytics", enableGoogleAnalytics);
} }
if(googleAnalyticsId != null){ if (googleAnalyticsId != null) {
transformer.setParameter("google.analytics.id",googleAnalyticsId); transformer.setParameter("google.analytics.id", googleAnalyticsId);
} }
if(pdfUrl != null){ if (pdfUrl != null) {
transformer.setParameter("pdf.url",pdfUrl); transformer.setParameter("pdf.url", pdfUrl);
} }
if(canonicalUrlBase != null){ if(canonicalUrlBase != null){
transformer.setParameter("canonical.url.base",canonicalUrlBase); transformer.setParameter("canonical.url.base",canonicalUrlBase);
@@ -239,35 +245,35 @@ public abstract class WebHelpMojo extends AbstractWebhelpMojo {
transformer.setParameter("source.directory",sourceDirectory); transformer.setParameter("source.directory",sourceDirectory);
transformer.setParameter("compute.wadl.path.from.docbook.path",computeWadlPathFromDocbookPath); transformer.setParameter("compute.wadl.path.from.docbook.path",computeWadlPathFromDocbookPath);
} }
protected TransformerBuilder createTransformerBuilder(URIResolver resolver) { protected TransformerBuilder createTransformerBuilder(URIResolver resolver) {
return super.createTransformerBuilder (new DocBookResolver (resolver, getType())); return super.createTransformerBuilder(new DocBookResolver(resolver, getType()));
} }
//Note for this to work, you need to have the customization layer in place. //Note for this to work, you need to have the customization layer in place.
protected String getNonDefaultStylesheetLocation() { protected String getNonDefaultStylesheetLocation() {
return "cloud/webhelp/profile-webhelp.xsl"; return "cloud/webhelp/profile-webhelp.xsl";
} }
public void postProcessResult(File result) throws MojoExecutionException {
super.postProcessResult(result);
copyTemplate(result);
transformFeed(result); public void postProcessResult(File result) throws MojoExecutionException {
super.postProcessResult(result);
copyTemplate(result);
transformFeed(result);
} }
protected void copyTemplate(File result) throws MojoExecutionException { protected void copyTemplate(File result) throws MojoExecutionException {
final File targetDirectory = result.getParentFile(); final File targetDirectory = result.getParentFile();
com.rackspace.cloud.api.docs.FileUtils.extractJaredDirectory("content",WebHelpMojo.class,targetDirectory); com.rackspace.cloud.api.docs.FileUtils.extractJaredDirectory("content", WebHelpMojo.class, targetDirectory);
com.rackspace.cloud.api.docs.FileUtils.extractJaredDirectory("common",WebHelpMojo.class,targetDirectory); com.rackspace.cloud.api.docs.FileUtils.extractJaredDirectory("common", WebHelpMojo.class, targetDirectory);
com.agilejava.docbkx.maven.FileUtils.copyFile(new File(targetDirectory,"common/images/favicon-" + branding + ".ico"), new File(targetDirectory,"favicon.ico")); com.agilejava.docbkx.maven.FileUtils.copyFile(new File(targetDirectory, "common/images/favicon-" + branding + ".ico"), new File(targetDirectory, "favicon.ico"));
com.agilejava.docbkx.maven.FileUtils.copyFile(new File(targetDirectory,"common/css/positioning-" + branding + ".css"), new File(targetDirectory,"common/css/positioning.css")); com.agilejava.docbkx.maven.FileUtils.copyFile(new File(targetDirectory, "common/css/positioning-" + branding + ".css"), new File(targetDirectory, "common/css/positioning.css"));
com.agilejava.docbkx.maven.FileUtils.copyFile(new File(targetDirectory,"common/main-" + branding + ".js"), new File(targetDirectory,"common/main.js")); com.agilejava.docbkx.maven.FileUtils.copyFile(new File(targetDirectory, "common/main-" + branding + ".js"), new File(targetDirectory, "common/main.js"));
} }
@@ -281,51 +287,43 @@ public abstract class WebHelpMojo extends AbstractWebhelpMojo {
} }
ClassLoader classLoader = Thread.currentThread() ClassLoader classLoader = Thread.currentThread()
.getContextClassLoader(); .getContextClassLoader();
TransformerFactory factory = TransformerFactory.newInstance(); TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(new StreamSource(classLoader.getResourceAsStream(COPY_XSL))); Transformer transformer = factory.newTransformer(new StreamSource(classLoader.getResourceAsStream(COPY_XSL)));
DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance(); atomFeedClean = new File(result.getParentFile(), "atom.xml");
dbfactory.setValidating(false);
DocumentBuilder builder = dbfactory.newDocumentBuilder();
builder.setEntityResolver(new EntityResolver() {
@Override
public InputSource resolveEntity(String publicId, String systemId)
throws SAXException, IOException {
return new InputSource(new StringReader(""));
}
});
DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
dbfactory.setValidating(false);
DocumentBuilder builder = dbfactory.newDocumentBuilder();
builder.setEntityResolver(new EntityResolver() {
@Override
public InputSource resolveEntity(String publicId, String systemId)
throws SAXException, IOException {
return new InputSource(new StringReader(""));
}
});
Document xmlDocument = builder.parse(atomFeed); atomFeed = new File(result.getParentFile(), "atom-doctype.xml");
DOMSource source = new DOMSource(xmlDocument); Document xmlDocument = builder.parse(atomFeed);
DOMSource source = new DOMSource(xmlDocument);
transformer.transform (source, new StreamResult(atomFeedClean)); transformer.transform(source, new StreamResult(atomFeedClean));
atomFeed.deleteOnExit(); atomFeed.deleteOnExit();
} catch (TransformerConfigurationException e) {
throw new MojoExecutionException("Failed to load JAXP configuration", e);
} catch (javax.xml.parsers.ParserConfigurationException e) {
throw new MojoExecutionException("Failed to configure parser", e);
} catch (org.xml.sax.SAXException e) {
throw new MojoExecutionException("Sax exception", e);
} catch (java.io.IOException e) {
throw new MojoExecutionException("IO Exception", e);
} catch (TransformerException e) {
throw new MojoExecutionException("Failed to transform to atom feed", e);
} }
catch (TransformerConfigurationException e)
{
throw new MojoExecutionException("Failed to load JAXP configuration", e);
}
catch (javax.xml.parsers.ParserConfigurationException e)
{
throw new MojoExecutionException("Failed to configure parser", e);
}
catch (org.xml.sax.SAXException e)
{
throw new MojoExecutionException("Sax exception", e);
}
catch(java.io.IOException e)
{
throw new MojoExecutionException("IO Exception", e);
}
catch (TransformerException e)
{
throw new MojoExecutionException("Failed to transform to atom feed", e);
}
} }