From fe00a63ed08008b6dcd7e7eb651242144d7c096b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Bresson?= Date: Sat, 21 Apr 2018 17:26:54 +0200 Subject: [PATCH] Remove deprecated classes (#177) * Remove: - org.openapitools.codegen.Codegen - org.openapitools.codegen.MetaGenerator * Renaming: - DynamicSwaggerConfig > DynamicConfig - SwaggerResource > CodegenResource --- .../codegen/online/Bootstrap.java | 2 +- ...cSwaggerConfig.java => DynamicConfig.java} | 6 +- .../codegen/online/http/Generator.java | 2 +- ...ggerResource.java => CodegenResource.java} | 7 +- .../org/openapitools/codegen/Codegen.java | 166 --------------- .../codegen/CodegenConfigLoader.java | 15 +- .../openapitools/codegen/MetaGenerator.java | 192 ------------------ 7 files changed, 21 insertions(+), 369 deletions(-) rename modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/{DynamicSwaggerConfig.java => DynamicConfig.java} (94%) rename modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/resource/{SwaggerResource.java => CodegenResource.java} (98%) delete mode 100644 modules/openapi-generator/src/main/java/org/openapitools/codegen/Codegen.java delete mode 100644 modules/openapi-generator/src/main/java/org/openapitools/codegen/MetaGenerator.java diff --git a/modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/Bootstrap.java b/modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/Bootstrap.java index 9f52e73096d9..db0db66a8f87 100644 --- a/modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/Bootstrap.java +++ b/modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/Bootstrap.java @@ -27,7 +27,7 @@ public class Bootstrap extends HttpServlet { @Override public void init(ServletConfig config) throws ServletException { - DynamicSwaggerConfig bc = new DynamicSwaggerConfig(); + DynamicConfig bc = new DynamicConfig(); bc.setBasePath("/api"); bc.setTitle("OpenAPI Generator"); bc.setDescription("This is an online OpenAPI generator. You can find out more " diff --git a/modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/DynamicSwaggerConfig.java b/modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/DynamicConfig.java similarity index 94% rename from modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/DynamicSwaggerConfig.java rename to modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/DynamicConfig.java index 0aac6577a68e..e26eb9c1baba 100644 --- a/modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/DynamicSwaggerConfig.java +++ b/modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/DynamicConfig.java @@ -1,7 +1,7 @@ package org.openapitools.codegen.online; -import org.openapitools.codegen.Codegen; import org.openapitools.codegen.CodegenConfig; +import org.openapitools.codegen.CodegenConfigLoader; import org.openapitools.codegen.CodegenType; import io.swagger.jaxrs.config.BeanConfig; import io.swagger.models.Operation; @@ -14,12 +14,12 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -public class DynamicSwaggerConfig extends BeanConfig { +public class DynamicConfig extends BeanConfig { static List clients = new ArrayList(); static List servers = new ArrayList(); static { - List extensions = Codegen.getExtensions(); + List extensions = CodegenConfigLoader.getAll(); for (CodegenConfig config : extensions) { if (config.getTag().equals(CodegenType.CLIENT) || config.getTag().equals(CodegenType.DOCUMENTATION)) { diff --git a/modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/http/Generator.java b/modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/http/Generator.java index 8bb551f7129a..2263c3f9f5d7 100644 --- a/modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/http/Generator.java +++ b/modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/http/Generator.java @@ -135,7 +135,7 @@ public class Generator { clientOptInput.setConfig(codegenConfig); try { - List files = new Codegen().opts(clientOptInput).generate(); + List files = new DefaultGenerator().opts(clientOptInput).generate(); if (files.size() > 0) { List filesToAdd = new ArrayList(); LOGGER.debug("adding to " + outputFolder); diff --git a/modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/resource/SwaggerResource.java b/modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/resource/CodegenResource.java similarity index 98% rename from modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/resource/SwaggerResource.java rename to modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/resource/CodegenResource.java index 0a977afa1602..459f0dbd512a 100644 --- a/modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/resource/SwaggerResource.java +++ b/modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/resource/CodegenResource.java @@ -4,8 +4,8 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.openapitools.codegen.CliOption; -import org.openapitools.codegen.Codegen; import org.openapitools.codegen.CodegenConfig; +import org.openapitools.codegen.CodegenConfigLoader; import org.openapitools.codegen.CodegenType; import org.openapitools.codegen.online.exception.BadRequestException; import org.openapitools.codegen.online.model.Generated; @@ -25,14 +25,13 @@ import java.util.*; @Path("/gen") @Api(value = "/gen", description = "Resource for generating swagger components") -@SuppressWarnings("static-method") -public class SwaggerResource { +public class CodegenResource { static List clients = new ArrayList(); static List servers = new ArrayList(); private static Map fileMap = new HashMap(); static { - List extensions = Codegen.getExtensions(); + List extensions = CodegenConfigLoader.getAll(); for (CodegenConfig config : extensions) { if (config.getTag().equals(CodegenType.CLIENT) || config.getTag().equals(CodegenType.DOCUMENTATION)) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/Codegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/Codegen.java deleted file mode 100644 index 57cdc3fb268c..000000000000 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/Codegen.java +++ /dev/null @@ -1,166 +0,0 @@ -package org.openapitools.codegen; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.ServiceLoader; - -import io.swagger.parser.OpenAPIParser; -import io.swagger.v3.oas.models.OpenAPI; -import org.apache.commons.cli.BasicParser; -import org.apache.commons.cli.CommandLine; -import org.apache.commons.cli.CommandLineParser; -import org.apache.commons.cli.HelpFormatter; -import org.apache.commons.cli.Options; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import config.Config; -import config.ConfigParser; - -/** - * @deprecated use instead {@link org.openapitools.codegen.DefaultGenerator} - * or cli interface from https://github.com/swagger-api/swagger-codegen/pull/547 - */ -@Deprecated -public class Codegen extends DefaultGenerator { - - private static final Logger LOGGER = LoggerFactory.getLogger(Codegen.class); - - static Map configs = new HashMap(); - static String configString; - static String debugInfoOptions = "\nThe following additional debug options are available for all codegen targets:" + - "\n -DdebugSwagger prints the swagger specification as interpreted by the codegen" + - "\n -DdebugModels prints models passed to the template engine" + - "\n -DdebugOperations prints operations passed to the template engine" + - "\n -DdebugSupportingFiles prints additional data passed to the template engine"; - - @SuppressWarnings("deprecation") - public static void main(String[] args) { - - Options options = new Options(); - options.addOption("h", "help", false, "shows this message"); - options.addOption("l", "lang", true, "client language to generate.\nAvailable languages include:\n\t[" + configString + "]"); - options.addOption("o", "output", true, "where to write the generated files"); - options.addOption("i", "input-spec", true, "location of the swagger spec, as URL or file"); - options.addOption("t", "template-dir", true, "folder containing the template files"); - options.addOption("d", "debug-info", false, "prints additional info for debugging"); - options.addOption("a", "auth", true, "adds authorization headers when fetching the swagger definitions remotely. Pass in a URL-encoded string of name:header with a comma separating multiple values"); - options.addOption("c", "config", true, "location of the configuration file"); - - ClientOptInput clientOptInput = new ClientOptInput(); - ClientOpts clientOpts = new ClientOpts(); - OpenAPI openAPI = null; - - CommandLine cmd = null; - try { - CommandLineParser parser = new BasicParser(); - CodegenConfig config = null; - - cmd = parser.parse(options, args); - if (cmd.hasOption("d")) { - usage(options); - System.out.println(debugInfoOptions); - return; - } - if (cmd.hasOption("a")) { - clientOptInput.setAuth(cmd.getOptionValue("a")); - } - if (cmd.hasOption("l")) { - clientOptInput.setConfig(getConfig(cmd.getOptionValue("l"))); - } else { - usage(options); - return; - } - if (cmd.hasOption("o")) { - clientOptInput.getConfig().setOutputDir(cmd.getOptionValue("o")); - } - if (cmd.hasOption("h")) { - if (cmd.hasOption("l")) { - config = getConfig(String.valueOf(cmd.getOptionValue("l"))); - if (config != null) { - options.addOption("h", "help", true, config.getHelp()); - usage(options); - return; - } - } - usage(options); - return; - } - if (cmd.hasOption("i")) { - openAPI = new OpenAPIParser().readLocation(cmd.getOptionValue("i"), clientOptInput.getAuthorizationValues(), null).getOpenAPI(); - } - if (cmd.hasOption("c")) { - String configFile = cmd.getOptionValue("c"); - Config genConfig = ConfigParser.read(configFile); - config = clientOptInput.getConfig(); - if (null != genConfig && null != config) { - for (CliOption langCliOption : config.cliOptions()) { - if (genConfig.hasOption(langCliOption.getOpt())) { - config.additionalProperties().put(langCliOption.getOpt(), genConfig.getOption(langCliOption.getOpt())); - } - } - } - } - if (cmd.hasOption("t")) { - clientOpts.getProperties().put(CodegenConstants.TEMPLATE_DIR, String.valueOf(cmd.getOptionValue("t"))); - } - } catch (Exception e) { - usage(options); - return; - } - try { - clientOptInput - .opts(clientOpts) - .openAPI(openAPI); - new Codegen().opts(clientOptInput).generate(); - } catch (Exception e) { - LOGGER.error(e.getMessage(), e); - } - } - - public static List getExtensions() { - ServiceLoader loader = ServiceLoader.load(CodegenConfig.class); - List output = new ArrayList(); - for (CodegenConfig aLoader : loader) { - output.add(aLoader); - } - return output; - } - - static void usage(Options options) { - HelpFormatter formatter = new HelpFormatter(); - formatter.printHelp("Codegen", options); - } - - public static CodegenConfig getConfig(String name) { - if (configs.containsKey(name)) { - return configs.get(name); - } else { - // see if it's a class - try { - LOGGER.debug("loading class " + name); - Class customClass = Class.forName(name); - LOGGER.debug("loaded"); - return (CodegenConfig) customClass.newInstance(); - } catch (Exception e) { - throw new RuntimeException("can't load class " + name); - } - } - } - - static { - List extensions = getExtensions(); - StringBuilder sb = new StringBuilder(); - - for (CodegenConfig config : extensions) { - if (sb.toString().length() != 0) { - sb.append(", "); - } - sb.append(config.getName()); - configs.put(config.getName(), config); - configString = sb.toString(); - } - } -} diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfigLoader.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfigLoader.java index a1cedc0dd7b7..a367294d0a9d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfigLoader.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfigLoader.java @@ -1,9 +1,11 @@ package org.openapitools.codegen; -import java.util.ServiceLoader; - import static java.util.ServiceLoader.load; +import java.util.ArrayList; +import java.util.List; +import java.util.ServiceLoader; + public class CodegenConfigLoader { /** * Tries to load config class with SPI first, then with class name directly from classpath @@ -31,4 +33,13 @@ public class CodegenConfigLoader { throw new RuntimeException("Can't load config class with name ".concat(name) + " Available:\n" + availableConfigs.toString(), e); } } + + public static List getAll() { + ServiceLoader loader = ServiceLoader.load(CodegenConfig.class); + List output = new ArrayList(); + for (CodegenConfig aLoader : loader) { + output.add(aLoader); + } + return output; + } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/MetaGenerator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/MetaGenerator.java deleted file mode 100644 index f3adf63f0f7b..000000000000 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/MetaGenerator.java +++ /dev/null @@ -1,192 +0,0 @@ -package org.openapitools.codegen; - -import com.samskivert.mustache.Mustache; -import com.samskivert.mustache.Template; -import org.apache.commons.cli.BasicParser; -import org.apache.commons.cli.CommandLine; -import org.apache.commons.cli.CommandLineParser; -import org.apache.commons.cli.HelpFormatter; -import org.apache.commons.cli.Options; -import org.apache.commons.io.FileUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.File; -import java.io.IOException; -import java.io.Reader; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.ServiceLoader; - -/** - * @deprecated use instead {@link org.openapitools.codegen.DefaultGenerator} - * or cli interface from https://github.com/swagger-api/swagger-codegen/pull/547 - */ -@Deprecated -public class MetaGenerator extends AbstractGenerator { - - private static final Logger LOGGER = LoggerFactory.getLogger(MetaGenerator.class); - - static Map configs = new HashMap(); - static String configString; - - public static void main(String[] args) { - new MetaGenerator().generate(args); - } - - public static List getExtensions() { - ServiceLoader loader = ServiceLoader.load(CodegenConfig.class); - List output = new ArrayList(); - for (CodegenConfig config : loader) { - output.add(config); - } - return output; - } - - static void usage(Options options) { - HelpFormatter formatter = new HelpFormatter(); - formatter.printHelp("MetaGenerator. Generator for creating a new template set " + - "and configuration for Codegen. The output will be based on the language you " + - "specify, and includes default templates to include.", options); - } - - public static CodegenConfig getConfig(String name) { - if (configs.containsKey(name)) { - return configs.get(name); - } - return null; - } - - protected void generate(String[] args) { - String outputFolder = null; - String name = null; - String targetPackage = "org.openapitools.codegen"; - final String templateDir = "codegen"; - - Options options = new Options(); - options.addOption("h", "help", false, "shows this message"); - options.addOption("l", "lang", false, "client language to generate.\nAvailable languages include:\n\t[" + configString + "]"); - options.addOption("o", "output", true, "where to write the generated files"); - options.addOption("n", "name", true, "the human-readable name of the generator"); - options.addOption("p", "package", true, "the package to put the main class into (defaults to org.openapitools.codegen"); - - CommandLine cmd = null; - try { - CommandLineParser parser = new BasicParser(); - cmd = parser.parse(options, args); - if (cmd.hasOption("h")) { - usage(options); - return; - } - if (cmd.hasOption("n")) { - name = cmd.getOptionValue("n"); - } else { - System.out.println("name is required"); //FIXME replace by LOGGER - usage(options); - return; - } - if (cmd.hasOption("l")) { - } - if (cmd.hasOption("p")) { - targetPackage = cmd.getOptionValue("p"); - } - if (cmd.hasOption("o")) { - outputFolder = cmd.getOptionValue("o"); - } else { - System.out.println("output folder is required"); // FIXME replace by LOGGER - usage(options); - return; - } - } catch (Exception e) { - usage(options); - return; - } - LOGGER.info("writing to folder " + outputFolder); - File outputFolderLocation = new File(outputFolder); - if (!outputFolderLocation.exists()) { - outputFolderLocation.mkdirs(); - } - File sourceFolder = new File(outputFolder + File.separator + "src/main/java/" + targetPackage.replace('.', File.separatorChar)); - if (!sourceFolder.exists()) { - sourceFolder.mkdirs(); - } - File resourcesFolder = new File(outputFolder + File.separator + "src/main/resources/META-INF/services"); - if (!resourcesFolder.exists()) { - resourcesFolder.mkdirs(); - } - - String mainClass = Character.toUpperCase(name.charAt(0)) + name.substring(1) + "Generator"; - - List supportingFiles = new ArrayList(); - supportingFiles.add(new SupportingFile("pom.mustache", "", "pom.xml")); - supportingFiles.add(new SupportingFile("generatorClass.mustache", - "src/main/java/" + File.separator + targetPackage.replace('.', File.separatorChar), - mainClass + ".java")); - supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")); - supportingFiles.add(new SupportingFile("api.template", "src/main/resources" + File.separator + name, "api.mustache")); - supportingFiles.add(new SupportingFile("model.template", "src/main/resources" + File.separator + name, "model.mustache")); - - supportingFiles.add(new SupportingFile("services.mustache", "src/main/resources/META-INF/services", "org.openapitools.codegen.CodegenConfig")); - - List files = new ArrayList(); - - Map data = new HashMap(); - data.put("generatorPackage", targetPackage); - data.put("generatorClass", mainClass); - data.put("name", name); - data.put("fullyQualifiedGeneratorClass", targetPackage + "." + mainClass); - - for (SupportingFile support : supportingFiles) { - try { - String destinationFolder = outputFolder; - if (support.folder != null && !"".equals(support.folder)) { - destinationFolder += File.separator + support.folder; - } - File of = new File(destinationFolder); - if (!of.isDirectory()) { - of.mkdirs(); - } - String outputFilename = destinationFolder + File.separator + support.destinationFilename; - - if (support.templateFile.endsWith("mustache")) { - String template = readTemplate(templateDir + File.separator + support.templateFile); - Template tmpl = Mustache.compiler() - .withLoader(new Mustache.TemplateLoader() { - @Override - public Reader getTemplate(String name) { - return getTemplateReader(templateDir + File.separator + name + ".mustache"); - } - }) - .defaultValue("") - .compile(template); - - writeToFile(outputFilename, tmpl.execute(data)); - files.add(new File(outputFilename)); - } else { - String template = readTemplate(templateDir + File.separator + support.templateFile); - FileUtils.writeStringToFile(new File(outputFilename), template); - LOGGER.info("copying file to " + outputFilename); - files.add(new File(outputFilename)); - } - } catch (IOException e) { - LOGGER.error(e.getMessage(), e); - } - } - } - - static { - List extensions = getExtensions(); - StringBuilder sb = new StringBuilder(); - - for (CodegenConfig config : extensions) { - if (sb.toString().length() != 0) { - sb.append(", "); - } - sb.append(config.getName()); - configs.put(config.getName(), config); - configString = sb.toString(); - } - } -}