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>
<artifactId>glossary</artifactId>
<version>1.0.0-SNAPSHOT</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<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.DocumentBuilderFactory;
import org.w3c.dom.Document;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import java.io.StringReader;
import org.apache.maven.plugin.MojoExecutionException;
import com.agilejava.docbkx.maven.AbstractWebhelpMojo;
import com.agilejava.docbkx.maven.TransformerBuilder;
import javax.xml.transform.URIResolver;
import com.rackspace.cloud.api.docs.DocBookResolver;
import com.agilejava.docbkx.maven.Parameter;
@@ -172,15 +178,15 @@ public abstract class WebHelpMojo extends AbstractWebhelpMojo {
*/
private String socialIcons;
/**
* DOCUMENT ME!
*
* @param transformer DOCUMENT ME!
* @param sourceFilename DOCUMENT ME!
* @param targetFile DOCUMENT ME!
*/
public void adjustTransformer(Transformer transformer, String sourceFilename, File targetFile) {
super.adjustTransformer(transformer, sourceFilename, targetFile);
/**
* DOCUMENT ME!
*
* @param transformer DOCUMENT ME!
* @param sourceFilename DOCUMENT ME!
* @param targetFile DOCUMENT ME!
*/
public void adjustTransformer(Transformer transformer, String sourceFilename, File targetFile) {
super.adjustTransformer(transformer, sourceFilename, targetFile);
if(glossaryUri != null){
transformer.setParameter("glossary.uri", glossaryUri);
@@ -195,24 +201,24 @@ public abstract class WebHelpMojo extends AbstractWebhelpMojo {
transformer.setParameter("use.disqus.id", useDisqusId);
}
if(useVersionForDisqus != null){
transformer.setParameter("use.version.for.disqus", useVersionForDisqus);
}
transformer.setParameter("project.build.directory", projectBuildDirectory);
transformer.setParameter("branding", branding);
transformer.setParameter("enable.disqus", enableDisqus);
if(disqusShortname != null){
transformer.setParameter("disqus.shortname", disqusShortname);
}
if(enableGoogleAnalytics != null){
transformer.setParameter("enable.google.analytics",enableGoogleAnalytics);
}
if(googleAnalyticsId != null){
transformer.setParameter("google.analytics.id",googleAnalyticsId);
}
if(pdfUrl != null){
transformer.setParameter("pdf.url",pdfUrl);
}
if (useVersionForDisqus != null) {
transformer.setParameter("use.version.for.disqus", useVersionForDisqus);
}
transformer.setParameter("project.build.directory", projectBuildDirectory);
transformer.setParameter("branding", branding);
transformer.setParameter("enable.disqus", enableDisqus);
if (disqusShortname != null) {
transformer.setParameter("disqus.shortname", disqusShortname);
}
if (enableGoogleAnalytics != null) {
transformer.setParameter("enable.google.analytics", enableGoogleAnalytics);
}
if (googleAnalyticsId != null) {
transformer.setParameter("google.analytics.id", googleAnalyticsId);
}
if (pdfUrl != null) {
transformer.setParameter("pdf.url", pdfUrl);
}
if(canonicalUrlBase != null){
transformer.setParameter("canonical.url.base",canonicalUrlBase);
@@ -239,35 +245,35 @@ public abstract class WebHelpMojo extends AbstractWebhelpMojo {
transformer.setParameter("source.directory",sourceDirectory);
transformer.setParameter("compute.wadl.path.from.docbook.path",computeWadlPathFromDocbookPath);
}
}
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.
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);
super.postProcessResult(result);
copyTemplate(result);
copyTemplate(result);
transformFeed(result);
transformFeed(result);
}
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("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/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.rackspace.cloud.api.docs.FileUtils.extractJaredDirectory("content", 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/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"));
}
@@ -281,51 +287,43 @@ public abstract class WebHelpMojo extends AbstractWebhelpMojo {
}
ClassLoader classLoader = Thread.currentThread()
.getContextClassLoader();
.getContextClassLoader();
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(new StreamSource(classLoader.getResourceAsStream(COPY_XSL)));
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(""));
}
});
atomFeedClean = new File(result.getParentFile(), "atom.xml");
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);
DOMSource source = new DOMSource(xmlDocument);
atomFeed = new File(result.getParentFile(), "atom-doctype.xml");
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);
}
}