From 6253a592d96a34cd3a3d3ea29bf9018e4a3dc762 Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Thu, 22 Oct 2015 14:54:29 -0700 Subject: [PATCH] added optional support for apis, supoprtingFiles --- .../io/swagger/codegen/DefaultGenerator.java | 133 ++++++++++++------ 1 file changed, 92 insertions(+), 41 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java index f72d1acaa2a8..b1b7dd4e0465 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java @@ -51,21 +51,52 @@ public class DefaultGenerator extends AbstractGenerator implements Generator { @Override public List generate() { - boolean generateApis = true; - boolean generateModels = true; - boolean generateSupportingFiles = true; + Boolean generateApis = null; + Boolean generateModels = null; + Boolean generateSupportingFiles = null; Set modelsToGenerate = null; + Set apisToGenerate = null; + Set supportingFilesToGenerate = null; // allows generating only models by specifying a CSV of models to generate, or empty for all if(System.getProperty("models") != null) { - generateApis = false; - generateSupportingFiles = false; String modelNames = System.getProperty("models"); if(!modelNames.isEmpty()) { + generateModels = true; modelsToGenerate = new HashSet(Arrays.asList(modelNames.split(","))); } } + if(System.getProperty("apis") != null) { + String apiNames = System.getProperty("apis"); + if(!apiNames.isEmpty()) { + generateApis = true; + apisToGenerate = new HashSet(Arrays.asList(apiNames.split(","))); + } + } + if(System.getProperty("supportingFiles") != null) { + String supportingFiles = System.getProperty("supportingFiles"); + if(!supportingFiles.isEmpty()) { + generateSupportingFiles = true; + supportingFilesToGenerate = new HashSet(Arrays.asList(supportingFiles.split(","))); + } + } + + if(generateApis == null && apisToGenerate == null && supportingFilesToGenerate == null) { + // no specifics are set, generate everything + generateApis = true; generateModels = true; generateSupportingFiles = true; + } + else { + if(generateApis == null) { + generateApis = false; + } + if(generateModels == null) { + generateModels = false; + } + if(generateSupportingFiles == null) { + generateSupportingFiles = false; + } + } if (swagger == null || config == null) { throw new RuntimeException("missing swagger input or config!"); @@ -206,6 +237,15 @@ public class DefaultGenerator extends AbstractGenerator implements Generator { // apis Map> paths = processPaths(swagger.getPaths()); if(generateApis) { + if(apisToGenerate != null) { + Map> updatedPaths = new TreeMap>(); + for(String m : paths.keySet()) { + if(apisToGenerate.contains(m)) { + updatedPaths.put(m, paths.get(m)); + } + } + paths = updatedPaths; + } for (String tag : paths.keySet()) { try { List ops = paths.get(tag); @@ -318,46 +358,57 @@ public class DefaultGenerator extends AbstractGenerator implements Generator { String templateFile = getFullTemplateFile(config, support.templateFile); - if (templateFile.endsWith("mustache")) { - String template = readTemplate(templateFile); - Template tmpl = Mustache.compiler() - .withLoader(new Mustache.TemplateLoader() { - @Override - public Reader getTemplate(String name) { - return getTemplateReader(config.templateDir() + File.separator + name + ".mustache"); - } - }) - .defaultValue("") - .compile(template); - - writeToFile(outputFilename, tmpl.execute(bundle)); - files.add(new File(outputFilename)); - } else { - InputStream in = null; - - try { - in = new FileInputStream(templateFile); - } catch (Exception e) { - // continue + boolean shouldGenerate = true; + if(supportingFilesToGenerate != null) { + if(supportingFilesToGenerate.contains(support.destinationFilename)) { + shouldGenerate = true; } - if (in == null) { - in = this.getClass().getClassLoader().getResourceAsStream(getCPResourcePath(templateFile)); + else { + shouldGenerate = false; } - File outputFile = new File(outputFilename); - OutputStream out = new FileOutputStream(outputFile, false); - if (in != null && out != null) { - System.out.println("writing file " + outputFile); - IOUtils.copy(in, out); + } + if(shouldGenerate) { + if (templateFile.endsWith("mustache")) { + String template = readTemplate(templateFile); + Template tmpl = Mustache.compiler() + .withLoader(new Mustache.TemplateLoader() { + @Override + public Reader getTemplate(String name) { + return getTemplateReader(config.templateDir() + File.separator + name + ".mustache"); + } + }) + .defaultValue("") + .compile(template); + + writeToFile(outputFilename, tmpl.execute(bundle)); + files.add(new File(outputFilename)); } else { - if (in == null) { - System.out.println("can't open " + templateFile + " for input"); - } - if (out == null) { - System.out.println("can't open " + outputFile + " for output"); - } - } + InputStream in = null; - files.add(outputFile); + try { + in = new FileInputStream(templateFile); + } catch (Exception e) { + // continue + } + if (in == null) { + in = this.getClass().getClassLoader().getResourceAsStream(getCPResourcePath(templateFile)); + } + File outputFile = new File(outputFilename); + OutputStream out = new FileOutputStream(outputFile, false); + if (in != null && out != null) { + System.out.println("writing file " + outputFile); + IOUtils.copy(in, out); + } else { + if (in == null) { + System.out.println("can't open " + templateFile + " for input"); + } + if (out == null) { + System.out.println("can't open " + outputFile + " for output"); + } + } + + files.add(outputFile); + } } } catch (Exception e) { throw new RuntimeException("Could not generate supporting file '" + support + "'", e);