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>
|
||||
<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>
|
||||
|
||||
@@ -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.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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user