Skip to content

Commit

Permalink
start with #5
Browse files Browse the repository at this point in the history
  • Loading branch information
jbellmann committed Jun 26, 2015
1 parent da57864 commit f81d5c6
Show file tree
Hide file tree
Showing 9 changed files with 108 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,8 @@ public interface ConfigurableCodegenConfig {

void setModelPackage(String modelPackage);

boolean is303Supported();

void enable303();

}
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ public class StandaloneCodegenerator {

private boolean skipModelgeneration;

private boolean enable303;

private List<String> excludedModels;

public static CodegeneratorBuilder builder() {
Expand Down Expand Up @@ -96,6 +98,11 @@ public void generate() throws CodegenerationException {
// config
((ConfigurableCodegenConfig) codegenConfig).setApiPackage(apiPackage);
((ConfigurableCodegenConfig) codegenConfig).setModelPackage(modelPackage);
if (((ConfigurableCodegenConfig) codegenConfig).is303Supported()) {
if (enable303) {
((ConfigurableCodegenConfig) codegenConfig).enable303();
}
}
}

clientOptInput.setConfig(codegenConfig);
Expand Down Expand Up @@ -218,6 +225,8 @@ public static class CodegeneratorBuilder {

private boolean skipApigeneration = false;

private boolean enable303 = false;

private List<String> excludedModels = new ArrayList<String>(0);

public CodegeneratorBuilder withApiFilePath(final String pathToApiFile) {
Expand Down Expand Up @@ -270,6 +279,11 @@ public CodegeneratorBuilder skipApigeneration(final boolean skip) {
return this;
}

public CodegeneratorBuilder enable303(final boolean enable303) {
this.enable303 = enable303;
return this;
}

public StandaloneCodegenerator build() {
StandaloneCodegenerator generator = new StandaloneCodegenerator();

Expand All @@ -281,6 +295,7 @@ public StandaloneCodegenerator build() {
generator.skipModelgeneration = this.skipModelgeneration;
generator.excludedModels = this.excludedModels;
generator.skipApigeneration = this.skipApigeneration;
generator.enable303 = this.enable303;

if (this.codeGeneratorLogger != null) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,5 +63,14 @@ public void setApiPackage(final String apiPackage) {
public void setModelPackage(final String modelPackage) {
this.modelPackage = modelPackage;
}

@Override
public boolean is303Supported() {
return false;
}

@Override
public void enable303() { }

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,9 @@ public class CodegenMojo extends AbstractMojo {
@Parameter(defaultValue = "false")
private boolean skipApigeneration = false;

@Parameter(defaultValue = "false")
private boolean enable303 = false;

@Parameter
private ArrayList<String> excludedModels = new ArrayList<String>();

Expand All @@ -86,7 +89,8 @@ public void execute() throws MojoExecutionException, MojoFailureException {
.withLogger(new MojoCodegeneratorLogger(getLog()))
.skipModelgeneration(skipModelgeneration)
.skipApigeneration(skipApigeneration)
.withModelsExcluded(excludedModels).build();
.withModelsExcluded(excludedModels)
.enable303(enable303).build();

try {
generator.generate();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -204,4 +204,13 @@ public void setApiPackage(final String apiPackage) {
public void setModelPackage(final String modelPackage) {
this.modelPackage = modelPackage;
}

@Override
public boolean is303Supported() {
return false;
}

@Override
public void enable303() { }

}
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,16 @@ public SpringInterfacesResponseEntityNoSwaggerAnnotations() {
modelTemplateFiles.put("model.mustache", ".java");
apiTemplateFiles.put("api.mustache", ".java");
}

@Override
public boolean is303Supported() {
return true;
}

@Override
public void enable303() {
modelTemplateFiles.remove("model.mustache");
modelTemplateFiles.put("model303.mustache", ".java");
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package {{package}};

{{#imports}}import {{import}};
{{/imports}}

import com.fasterxml.jackson.annotation.JsonProperty;
{{#models}}

{{#model}}{{#description}}
/**
* {{description}}
**/{{/description}}
public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {
{{#vars}}{{#isEnum}}
public enum {{datatypeWithEnum}} {
{{#allowableValues}}{{#values}} {{.}}, {{/values}}{{/allowableValues}}
};
private {{{datatypeWithEnum}}} {{name}} = {{{defaultValue}}};{{/isEnum}}{{^isEnum}}
{{#required}}@NotNull{{/required}}
private {{{datatype}}} {{name}} = {{{defaultValue}}};{{/isEnum}}{{/vars}}

{{#vars}}
/**{{#description}}
* {{{description}}}{{/description}}{{#minimum}}
* minimum: {{minimum}}{{/minimum}}{{#maximum}}
* maximum: {{maximum}}{{/maximum}}
**/
@JsonProperty("{{name}}")
public {{{datatypeWithEnum}}} {{getter}}() {
return {{name}};
}
public void {{setter}}({{{datatypeWithEnum}}} {{name}}) {
this.{{name}} = {{name}};
}

{{/vars}}

@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("class {{classname}} {\n");
{{#parent}}sb.append(" " + super.toString()).append("\n");{{/parent}}
{{#vars}}sb.append(" {{name}}: ").append({{name}}).append("\n");
{{/vars}}sb.append("}\n");
return sb.toString();
}
}
{{/model}}
{{/models}}
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,8 @@ public void testGenerationFromYamlRepositoryEntityNoSwaggerAnnotations() throws
"springinterfacesResponseEntityNoSwaggerAnnotations")
.withApiPackage("de.zalando.swagger.api")
.withModelPackage("de.zalando.swagger.model")
.writeResultsTo(generateOutputDir()).build();
.writeResultsTo(generateOutputDir()).enable303(true)
.build();

generator.generate();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,9 @@ paths:
$ref: '#/definitions/Vacation'
definitions:
Vacation:
required:
- from
- user
properties:
from:
type: integer
Expand Down

0 comments on commit f81d5c6

Please sign in to comment.