From 05e1d02341cef73813735a1928be53174034c65e Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Tue, 30 Sep 2014 06:06:01 -0700 Subject: [PATCH] added custom class loading for configurations --- .../com/wordnik/swagger/codegen/Codegen.java | 12 +++++++++++ .../swagger/codegen/DefaultGenerator.java | 21 +++++++++++++++---- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/wordnik/swagger/codegen/Codegen.java b/src/main/java/com/wordnik/swagger/codegen/Codegen.java index eee6208f1e9..aafa9a85397 100644 --- a/src/main/java/com/wordnik/swagger/codegen/Codegen.java +++ b/src/main/java/com/wordnik/swagger/codegen/Codegen.java @@ -71,6 +71,18 @@ public class Codegen extends DefaultGenerator { return new JaxRSServerCodegen(); else if("static".equals(name)) return new StaticDocCodegen(); + else if(name.indexOf(".") > 0) { + // see if it's a class + try { + System.out.println("loading class " + name); + Class customClass = Class.forName(name); + System.out.println("loaded"); + return (CodegenConfig)customClass.newInstance(); + } + catch (Exception e) { + throw new RuntimeException("can't load class " + name); + } + } else throw new RuntimeException("unsupported client type"); } diff --git a/src/main/java/com/wordnik/swagger/codegen/DefaultGenerator.java b/src/main/java/com/wordnik/swagger/codegen/DefaultGenerator.java index 6772421abf3..c739dbed7bf 100644 --- a/src/main/java/com/wordnik/swagger/codegen/DefaultGenerator.java +++ b/src/main/java/com/wordnik/swagger/codegen/DefaultGenerator.java @@ -100,8 +100,8 @@ public class DefaultGenerator implements Generator { Map apis = new HashMap(); apis.put("apis", allOperations); - bundle.put("apiInfo", apis); + for(SupportingFile support : config.supportingFiles()) { String outputFolder = config.outputFolder(); if(support.folder != null && !"".equals(support.folder)) @@ -137,7 +137,6 @@ public class DefaultGenerator implements Generator { } public Map> processPaths(Map paths) { - // group by tag, create a Default grouping if none Map> ops = new HashMap>(); List tags = null; @@ -164,13 +163,27 @@ public class DefaultGenerator implements Generator { for(String tag : tags) { CodegenOperation co = config.fromOperation(resourcePath, httpMethod, operation); co.tags = new ArrayList(); - co.tags.add(tag); + co.tags.add(sanitizeTag(tag)); - config.addOperationToGroup(tag, resourcePath, operation, co, operations); + config.addOperationToGroup(sanitizeTag(tag), resourcePath, operation, co, operations); } } } + protected String sanitizeTag(String tag) { + // remove spaces and make strong case + String [] parts = tag.split(" "); + StringBuffer buf = new StringBuffer(); + for(String part: parts) { + if(!"".equals(part)) { + buf.append(Character.toUpperCase(part.charAt(0))); + if(part.length() > 1) + buf.append(part.substring(1)); + } + } + return buf.toString().replaceAll("[^a-zA-Z ]", ""); + } + public File writeToFile(String filename, String contents) throws IOException { System.out.println("writing file " + filename); File output = new File(filename);