Styling update, added dependency dependency to pom, and added resolver class.
This commit is contained in:
8
pom.xml
8
pom.xml
@@ -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>
|
||||||
|
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
@@ -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);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user