diff --git a/src/main/java/com/rackspace/cloud/api/docs/ApiRefMojo.java b/src/main/java/com/rackspace/cloud/api/docs/ApiRefMojo.java index 9bcfbcd..b92d156 100644 --- a/src/main/java/com/rackspace/cloud/api/docs/ApiRefMojo.java +++ b/src/main/java/com/rackspace/cloud/api/docs/ApiRefMojo.java @@ -68,7 +68,7 @@ public abstract class ApiRefMojo extends AbstractHtmlMojo { String pathToPipelineFile = "classpath:/wadl2html.xpl"; //use "classpath:/path" for this to work Source source = super.createSource(inputFilename, sourceFile, filter); - Map map=new HashMap(); + Map map = new HashMap(); map.put("security", security); map.put("canonicalUrlBase", canonicalUrlBase); diff --git a/src/main/java/com/rackspace/cloud/api/docs/CalabashHelper.java b/src/main/java/com/rackspace/cloud/api/docs/CalabashHelper.java index 3c14ab3..b3b9e9e 100644 --- a/src/main/java/com/rackspace/cloud/api/docs/CalabashHelper.java +++ b/src/main/java/com/rackspace/cloud/api/docs/CalabashHelper.java @@ -10,16 +10,17 @@ import javax.xml.transform.Source; import javax.xml.transform.sax.SAXSource; import java.io.ByteArrayInputStream; +import java.io.File; import java.io.FileNotFoundException; import java.io.InputStream; +import java.net.URI; +import java.net.URL; import java.util.ArrayList; -import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.Set; public class CalabashHelper { - private static Source run(final String pipelineURI, final InputSource inputSource, final Mapmap) throws FileNotFoundException { + private static Source run(final String pipelineURI, final InputSource inputSource, final Map map) throws FileNotFoundException { Pipeline pipeline = new CalabashPipelineBuilder(false, true).build(pipelineURI); // @@ -33,17 +34,30 @@ public class CalabashHelper { if(null!=map){ - Setkeys=map.keySet(); - if(null!=keys){ - - for(Iteratoriter=keys.iterator();iter.hasNext();){ - String aKey=iter.next(); - if(null!=map.get(aKey)){ - strBuff.append(""); - } - } - } + for (Map.Entry entry : map.entrySet()) { + String rawValue; + if (entry.getValue() instanceof File) { + rawValue = ((File)entry.getValue()).toURI().toString(); + } else if (entry.getValue() instanceof URI || entry.getValue() instanceof String) { + rawValue = entry.getValue().toString(); + } else if (entry.getValue() instanceof URL) { + rawValue = ((URL)entry.getValue()).toExternalForm(); + } else if (entry.getValue() != null) { + throw new UnsupportedOperationException(String.format("The map cannot contain values of type %s.", entry.getValue().getClass())); + } else { + // ignore nulls + continue; + } + + strBuff + .append(""); + } } + strBuff.append(""); String params=strBuff.toString(); final InputStream paramsStream = new ByteArrayInputStream(params.getBytes()); @@ -60,7 +74,27 @@ public class CalabashHelper { return sources.get(0); } - public static Source createSource(Source source, String pipelineURI, Map map) + /** + * Creates a {@link Source} for use in a Calabash pipeline. + * + *

The {@code map} values may instances of {@link String}, {@link File}, + * {@link URI}, or {@link URL}.

+ * + *
    + *
  • {@link String}: These are passed to the pipeline unchanged.
  • + *
  • {@link URI}: The results of {@link URI#toString()} is passed to the pipeline.
  • + *
  • {@link File}: These are treated as URIs by calling {@link File#toURI()}.
  • + *
  • {@link URL}: The result of {@link URL#toExternalForm()} is passed to the pipeline.
  • + *
  • {@code null}: This is passed to the pipeline as an empty string.
  • + *
+ * + * @param source + * @param pipelineURI + * @param map + * @return + * @throws MojoExecutionException + */ + public static Source createSource(Source source, String pipelineURI, Map map) throws MojoExecutionException { try { diff --git a/src/main/java/com/rackspace/cloud/api/docs/PDFMojo.java b/src/main/java/com/rackspace/cloud/api/docs/PDFMojo.java index 5531448..461d350 100644 --- a/src/main/java/com/rackspace/cloud/api/docs/PDFMojo.java +++ b/src/main/java/com/rackspace/cloud/api/docs/PDFMojo.java @@ -533,7 +533,7 @@ public abstract class PDFMojo extends AbstractFoMojo { Source source = new SAXSource(filter, inputSource); //Source source = super.createSource(inputFilename, sourceFile, filter); - Map map=new HashMap(); + Map map=new HashMap(); String sysSecurity=System.getProperty("security"); getLog().info("adjustTransformer():sysSecurity="+sysSecurity); if(null!=sysSecurity && !sysSecurity.isEmpty()){ diff --git a/src/main/java/com/rackspace/cloud/api/docs/WebHelpMojo.java b/src/main/java/com/rackspace/cloud/api/docs/WebHelpMojo.java index 2bf70be..03de96e 100644 --- a/src/main/java/com/rackspace/cloud/api/docs/WebHelpMojo.java +++ b/src/main/java/com/rackspace/cloud/api/docs/WebHelpMojo.java @@ -754,7 +754,7 @@ public abstract class WebHelpMojo extends AbstractWebhelpMojo { Source source = new SAXSource(filter, inputSource); //Source source = super.createSource(inputFilename, sourceFile, filter); - Map map=new HashMap(); + Map map = new HashMap(); String sysWebhelpWar=System.getProperty("webhelp.war"); diff --git a/src/main/java/com/rackspace/cloud/api/docs/XhtmlMojo.java b/src/main/java/com/rackspace/cloud/api/docs/XhtmlMojo.java index f7772e1..4b4c0b3 100644 --- a/src/main/java/com/rackspace/cloud/api/docs/XhtmlMojo.java +++ b/src/main/java/com/rackspace/cloud/api/docs/XhtmlMojo.java @@ -292,7 +292,7 @@ public abstract class XhtmlMojo extends AbstractHtmlMojo { String pathToPipelineFile = "classpath:/war.xpl"; //use "classpath:/path" for this to work Source source = super.createSource(inputFilename, sourceFile, filter); - Map map=new HashMap(); + Map map=new HashMap(); map.put("failOnValidationError", failOnValidationError); map.put("transform.dir", transformDir); diff --git a/src/main/java/com/rackspace/cloud/api/docs/builders/PDFBuilder.java b/src/main/java/com/rackspace/cloud/api/docs/builders/PDFBuilder.java index 68fdd2f..0e086a6 100644 --- a/src/main/java/com/rackspace/cloud/api/docs/builders/PDFBuilder.java +++ b/src/main/java/com/rackspace/cloud/api/docs/builders/PDFBuilder.java @@ -167,7 +167,7 @@ public class PDFBuilder { FileUtils.extractJaredDirectory("fonts",PDFBuilder.class,imageParentDirectory); } - public File processSources(Map map) throws MojoExecutionException{ + public File processSources(Map map) throws MojoExecutionException { final String[] included = scanIncludedFiles(); // configure a resolver for catalog files final CatalogManager catalogManager = createCatalogManager(); @@ -1063,7 +1063,7 @@ public class PDFBuilder { return filter; } - protected Source createSource(String inputFilename, File sourceFile, PreprocessingFilter filter, Map map) + protected Source createSource(String inputFilename, File sourceFile, PreprocessingFilter filter, Map map) throws MojoExecutionException { String pathToPipelineFile = "classpath:/pdf.xpl"; //use "classpath:/path" for this to work @@ -1072,7 +1072,7 @@ public class PDFBuilder { final InputSource inputSource = new InputSource(sourceFileNameNormalized); Source source = new SAXSource(filter, inputSource); - Map localMap = new HashMap(map); + Map localMap = new HashMap(map); localMap.put("outputType", "pdf"); //removing webhelp specific settings from map