Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -626,19 +626,30 @@ private String calculateModelKey(String type, String ref) {
}
}

/**
* this method splits the specified property by commas, trims any results for spaces and
* newlines, and returns them as a Set of Strings. the method will return an empty
* set if the specified property has not been set or is an empty string.
*/
private Set<String> getPropertyAsSet(String propertyName) {
String propertyRaw = GlobalSettings.getProperty(propertyName);
if (propertyRaw == null || propertyRaw.isEmpty()) {
return Collections.emptySet();
}

return Arrays.stream(propertyRaw.split(","))
.map(String::trim)
.collect(Collectors.toSet());
}

private Set<String> modelKeys() {
final Map<String, Schema> schemas = ModelUtils.getSchemas(this.openAPI);
if (schemas == null) {
LOGGER.warn("Skipping generation of models because specification document has no schemas.");
return Collections.emptySet();
}

String modelNames = GlobalSettings.getProperty("models");
Set<String> modelsToGenerate = null;
if (modelNames != null && !modelNames.isEmpty()) {
modelsToGenerate = new HashSet<>(Arrays.asList(modelNames.split(",")));
}

Set<String> modelsToGenerate = getPropertyAsSet(CodegenConstants.MODELS);
Set<String> modelKeys = schemas.keySet();
if (modelsToGenerate != null && !modelsToGenerate.isEmpty()) {
Set<String> updatedKeys = new HashSet<>();
Expand All @@ -661,11 +672,7 @@ void generateApis(List<File> files, List<OperationsMap> allOperations, List<Mode
return;
}
Map<String, List<CodegenOperation>> paths = processPaths(this.openAPI.getPaths());
Set<String> apisToGenerate = null;
String apiNames = GlobalSettings.getProperty(CodegenConstants.APIS);
if (apiNames != null && !apiNames.isEmpty()) {
apisToGenerate = new HashSet<>(Arrays.asList(apiNames.split(",")));
}
Set<String> apisToGenerate = getPropertyAsSet(CodegenConstants.APIS);
if (apisToGenerate != null && !apisToGenerate.isEmpty()) {
Map<String, List<CodegenOperation>> updatedPaths = new TreeMap<>();
for (String m : paths.keySet()) {
Expand Down Expand Up @@ -827,11 +834,7 @@ void generateWebhooks(List<File> files, List<WebhooksMap> allWebhooks, List<Mode
return;
}
Map<String, List<CodegenOperation>> webhooks = processWebhooks(this.openAPI.getWebhooks());
Set<String> webhooksToGenerate = null;
String webhookNames = GlobalSettings.getProperty(CodegenConstants.WEBHOOKS);
if (webhookNames != null && !webhookNames.isEmpty()) {
webhooksToGenerate = new HashSet<>(Arrays.asList(webhookNames.split(",")));
}
Set<String> webhooksToGenerate = getPropertyAsSet(CodegenConstants.WEBHOOKS);
if (webhooksToGenerate != null && !webhooksToGenerate.isEmpty()) {
Map<String, List<CodegenOperation>> Webhooks = new TreeMap<>();
for (String m : webhooks.keySet()) {
Expand Down Expand Up @@ -1064,12 +1067,7 @@ private void generateSupportingFiles(List<File> files, Map<String, Object> bundl
return;
}

Set<String> supportingFilesToGenerate = null;
String supportingFiles = GlobalSettings.getProperty(CodegenConstants.SUPPORTING_FILES);
if (supportingFiles != null && !supportingFiles.isEmpty()) {
supportingFilesToGenerate = new HashSet<>(Arrays.asList(supportingFiles.split(",")));
}

Set<String> supportingFilesToGenerate = getPropertyAsSet(CodegenConstants.SUPPORTING_FILES);
for (SupportingFile support : config.supportingFiles()) {
try {
String outputFolder = config.outputFolder();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -809,11 +809,11 @@ private ClientOptInput createOptInputIssue(String issueNumber, Path target) {
public void testGenerateRecursiveDependentModelsBackwardCompatibilityIssue18444() throws IOException {
Path target = Files.createTempDirectory("test");
File output = target.toFile();
String oldModelsProp = GlobalSettings.getProperty("models");
String oldModelsProp = GlobalSettings.getProperty(CodegenConstants.MODELS);

try {
DefaultGenerator generator = generatorGenerateRecursiveDependentModelsBackwardCompatibility("false");
GlobalSettings.setProperty("models", "RQ1,RS1");
GlobalSettings.setProperty(CodegenConstants.MODELS, "RQ1,RS1");
ClientOptInput clientOptInput = createOptInputIssue18444(target);
List<File> files = generator.opts(clientOptInput).generate();
Assert.assertEquals(files.size(), 17);
Expand Down Expand Up @@ -853,9 +853,9 @@ public void testGenerateRecursiveDependentModelsBackwardCompatibilityIssue18444(
} finally {
output.deleteOnExit();
if (oldModelsProp != null) {
GlobalSettings.setProperty("models", oldModelsProp);
GlobalSettings.setProperty(CodegenConstants.MODELS, oldModelsProp);
} else {
GlobalSettings.clearProperty("models");
GlobalSettings.clearProperty(CodegenConstants.MODELS);
}
}
}
Expand All @@ -864,11 +864,11 @@ public void testGenerateRecursiveDependentModelsBackwardCompatibilityIssue18444(
public void testGenerateRecursiveDependentModelsIssue18444() throws IOException {
Path target = Files.createTempDirectory("test");
File output = target.toFile();
String oldModelsProp = GlobalSettings.getProperty("models");
String oldModelsProp = GlobalSettings.getProperty(CodegenConstants.MODELS);

try {
DefaultGenerator generator = generatorGenerateRecursiveDependentModelsBackwardCompatibility("true");
GlobalSettings.setProperty("models", "RQ1,RS1");
GlobalSettings.setProperty(CodegenConstants.MODELS, "RQ1,RS1");
ClientOptInput clientOptInput = createOptInputIssue18444(target);
List<File> files = generator.opts(clientOptInput).generate();
Assert.assertEquals(files.size(), 21);
Expand Down Expand Up @@ -908,9 +908,9 @@ public void testGenerateRecursiveDependentModelsIssue18444() throws IOException
} finally {
output.deleteOnExit();
if (oldModelsProp != null) {
GlobalSettings.setProperty("models", oldModelsProp);
GlobalSettings.setProperty(CodegenConstants.MODELS, oldModelsProp);
} else {
GlobalSettings.clearProperty("models");
GlobalSettings.clearProperty(CodegenConstants.MODELS);
}
}
}
Expand All @@ -919,11 +919,11 @@ public void testGenerateRecursiveDependentModelsIssue18444() throws IOException
public void testGenerateRecursiveDependentModelsIssue19220() throws IOException {
Path target = Files.createTempDirectory("test");
File output = target.toFile();
String oldModelsProp = GlobalSettings.getProperty("models");
String oldModelsProp = GlobalSettings.getProperty(CodegenConstants.MODELS);

try {
DefaultGenerator generator = generatorGenerateRecursiveDependentModelsBackwardCompatibility("true");
GlobalSettings.setProperty("models", "RQ1,RS1");
GlobalSettings.setProperty(CodegenConstants.MODELS, "RQ1,RS1");
ClientOptInput clientOptInput = createOptInputIssue19220(target);
List<File> files = generator.opts(clientOptInput).generate();
Assert.assertEquals(files.size(), 21);
Expand Down Expand Up @@ -963,11 +963,84 @@ public void testGenerateRecursiveDependentModelsIssue19220() throws IOException
} finally {
output.deleteOnExit();
if (oldModelsProp != null) {
GlobalSettings.setProperty("models", oldModelsProp);
GlobalSettings.setProperty(CodegenConstants.MODELS, oldModelsProp);
} else {
GlobalSettings.clearProperty("models");
GlobalSettings.clearProperty(CodegenConstants.MODELS);
}
}
}

@Test
public void testGenerateMultiLinePropertiesIssue19628() throws IOException {
Path target = Files.createTempDirectory("test");
File output = target.toFile();
String multiLineSeparator = ",\n ";
try {
final CodegenConfigurator configurator = new CodegenConfigurator()
.setGeneratorName("java")
.setInputSpec("src/test/resources/3_1/java/petstore.yaml")
.setOutputDir(target.toAbsolutePath().toString());

final ClientOptInput clientOptInput = configurator.toClientOptInput();
DefaultGenerator generator = new DefaultGenerator(true);

generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true");
generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false");
generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false");
generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true");
generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "true");
generator.setGeneratorPropertyDefault(CodegenConstants.API_DOCS, "false");
generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false");
generator.setGeneratorPropertyDefault(CodegenConstants.API_TESTS, "false");

List<String> supportingFilesToGenerate = Arrays.asList(
"pom.xml",
".travis.yml",
".gitignore",
"git_push.sh"
);
GlobalSettings.setProperty(CodegenConstants.SUPPORTING_FILES, String.join(multiLineSeparator, supportingFilesToGenerate));

List<String> apisToGenerate = Arrays.asList(
"Pet",
"User"
);
GlobalSettings.setProperty(CodegenConstants.APIS, String.join(multiLineSeparator, apisToGenerate));

List<String> modelsToGenerate = Arrays.asList(
"Category",
"Pet",
"Tag",
"User"
);
GlobalSettings.setProperty(CodegenConstants.MODELS, String.join(multiLineSeparator, modelsToGenerate));

List<File> files = generator.opts(clientOptInput).generate();

Assert.assertEquals(
files.size(),
// version file + files specified by properties
1 + supportingFilesToGenerate.size() + modelsToGenerate.size() + apisToGenerate.size()
);

TestUtils.ensureContainsFile(files, output, ".openapi-generator/VERSION");
for(String supportingFile : supportingFilesToGenerate) {
TestUtils.ensureContainsFile(files, output, supportingFile);
}

for(String apiFile : apisToGenerate) {
String filename = "src/main/java/org/openapitools/client/api/" + apiFile + "Api.java";
TestUtils.ensureContainsFile(files, output, filename);
}

for(String modelFile : modelsToGenerate) {
String filename = "src/main/java/org/openapitools/client/model/" + modelFile + ".java";
TestUtils.ensureContainsFile(files, output, filename);
}
} finally {
GlobalSettings.reset();
output.deleteOnExit();
}

}
}
Loading