Skip to content

Commit 426cc6b

Browse files
committed
better enums and dependency update
1 parent 027ff93 commit 426cc6b

File tree

33 files changed

+1469
-403
lines changed

33 files changed

+1469
-403
lines changed

modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SpringCodegen.java

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -291,34 +291,15 @@ public void setSingleContentTypes(boolean singleContentTypes) {
291291
public void setJava8(boolean java8) { this.java8 = java8; }
292292

293293
public void setAsync(boolean async) { this.async = async; }
294-
295-
@Override
296-
public Map<String, Object> postProcessModels(Map<String, Object> objs) {
297-
// remove the import of "Object" to avoid compilation error
298-
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports");
299-
Iterator<Map<String, String>> iterator = imports.iterator();
300-
while (iterator.hasNext()) {
301-
String _import = iterator.next().get("import");
302-
if (_import.endsWith(".Object")) iterator.remove();
303-
}
304-
List<Object> models = (List<Object>) objs.get("models");
305-
for (Object _mo : models) {
306-
Map<String, Object> mo = (Map<String, Object>) _mo;
307-
CodegenModel cm = (CodegenModel) mo.get("model");
308-
for (CodegenProperty var : cm.vars) {
309-
// handle default value for enum, e.g. available => StatusEnum.available
310-
if (var.isEnum && var.defaultValue != null && !"null".equals(var.defaultValue)) {
311-
var.defaultValue = var.datatypeWithEnum + "." + var.defaultValue;
312-
}
313-
}
314-
}
315-
return objs;
316-
}
317294

318295
@Override
319296
public void postProcessModelProperty(CodegenModel model, CodegenProperty property) {
320297
super.postProcessModelProperty(model, property);
321298

299+
if("null".equals(property.example)) {
300+
property.example = null;
301+
}
302+
322303
//Add imports for Jackson
323304
if(!BooleanUtils.toBoolean(model.isEnum)) {
324305
model.imports.add("JsonProperty");
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
2+
public enum {{{datatypeWithEnum}}} {
3+
{{#allowableValues}}{{#enumVars}}{{{name}}}({{{value}}}){{^-last}},
4+
{{/-last}}{{#-last}};{{/-last}}{{/enumVars}}{{/allowableValues}}
5+
6+
private String value;
7+
8+
{{{datatypeWithEnum}}}(String value) {
9+
this.value = value;
10+
}
11+
12+
@Override
13+
@JsonValue
14+
public String toString() {
15+
return value;
16+
}
17+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
public enum {{classname}} {
2+
{{#allowableValues}}{{.}}{{^-last}}, {{/-last}}{{/allowableValues}}
3+
}

modules/swagger-codegen/src/main/resources/JavaSpring/libraries/spring-boot/pom.mustache

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,15 @@
66
<name>{{artifactId}}</name>
77
<version>{{artifactVersion}}</version>
88
<properties>
9-
<springfox-version>2.4.0</springfox-version>
10-
{{#java8}}
11-
<maven.compiler.source>1.8</maven.compiler.source>
12-
<maven.compiler.target>1.8</maven.compiler.target>
13-
{{/java8}}
9+
<java.version>{{#java8}}1.8{{/java8}}{{^java8}}1.7{{/java8}}</java.version>
10+
<maven.compiler.source>${java.version}</maven.compiler.source>
11+
<maven.compiler.target>${java.version}</maven.compiler.target>
12+
<springfox-version>2.5.0</springfox-version>
1413
</properties>
1514
<parent>
1615
<groupId>org.springframework.boot</groupId>
1716
<artifactId>spring-boot-starter-parent</artifactId>
18-
<version>1.3.3.RELEASE</version>
17+
<version>1.3.5.RELEASE</version>
1918
</parent>
2019
<build>
2120
<sourceDirectory>src/main/java</sourceDirectory>
Lines changed: 4 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,77 +1,16 @@
11
package {{package}};
22

3+
import java.util.Objects;
34
{{#imports}}import {{import}};
45
{{/imports}}
56

6-
import io.swagger.annotations.*;
7-
import com.fasterxml.jackson.annotation.JsonProperty;
8-
9-
import java.util.Objects;
7+
{{#serializableModel}}import java.io.Serializable;{{/serializableModel}}
108
{{#models}}
11-
129
{{#model}}{{#description}}
1310
/**
1411
* {{description}}
1512
**/{{/description}}
16-
{{>generatedAnnotation}}
17-
@ApiModel(description = "{{{description}}}")
18-
public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {
19-
{{#vars}}{{#isEnum}}
20-
public enum {{datatypeWithEnum}} {
21-
{{#allowableValues}}{{#values}} {{.}}, {{/values}}{{/allowableValues}}
22-
};
23-
{{/isEnum}}{{#items}}{{#isEnum}}
24-
public enum {{datatypeWithEnum}} {
25-
{{#allowableValues}}{{#values}} {{.}}, {{/values}}{{/allowableValues}}
26-
};
27-
{{/isEnum}}{{/items}}
28-
private {{{datatypeWithEnum}}} {{name}} = {{{defaultValue}}};{{/vars}}
29-
30-
{{#vars}}
31-
/**{{#description}}
32-
* {{{description}}}{{/description}}{{#minimum}}
33-
* minimum: {{minimum}}{{/minimum}}{{#maximum}}
34-
* maximum: {{maximum}}{{/maximum}}
35-
**/
36-
@ApiModelProperty({{#required}}required = {{required}}, {{/required}}value = "{{{description}}}")
37-
@JsonProperty("{{baseName}}")
38-
public {{{datatypeWithEnum}}} {{getter}}() {
39-
return {{name}};
40-
}
41-
public void {{setter}}({{{datatypeWithEnum}}} {{name}}) {
42-
this.{{name}} = {{name}};
43-
}
44-
45-
{{/vars}}
46-
47-
@Override
48-
public boolean equals(Object o) {
49-
if (this == o) {
50-
return true;
51-
}
52-
if (o == null || getClass() != o.getClass()) {
53-
return false;
54-
}
55-
{{classname}} {{classVarName}} = ({{classname}}) o;{{#hasVars}}
56-
return {{#vars}}Objects.equals({{name}}, {{classVarName}}.{{name}}){{#hasMore}} &&
57-
{{/hasMore}}{{^hasMore}};{{/hasMore}}{{/vars}}{{/hasVars}}{{^hasVars}}
58-
return true;{{/hasVars}}
59-
}
60-
61-
@Override
62-
public int hashCode() {
63-
return Objects.hash({{#vars}}{{name}}{{#hasMore}}, {{/hasMore}}{{/vars}});
64-
}
65-
66-
@Override
67-
public String toString() {
68-
StringBuilder sb = new StringBuilder();
69-
sb.append("class {{classname}} {\n");
70-
{{#parent}}sb.append(" " + super.toString()).append("\n");{{/parent}}
71-
{{#vars}}sb.append(" {{name}}: ").append({{name}}).append("\n");
72-
{{/vars}}sb.append("}\n");
73-
return sb.toString();
74-
}
75-
}
13+
{{#isEnum}}{{>enumOuterClass}}{{/isEnum}}
14+
{{^isEnum}}{{>pojo}}{{/isEnum}}
7615
{{/model}}
7716
{{/models}}
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
{{#description}}@ApiModel(description = "{{{description}}}"){{/description}}
2+
{{>generatedAnnotation}}
3+
public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#serializableModel}}implements Serializable{{/serializableModel}} {
4+
{{#vars}}{{#isEnum}}
5+
6+
{{>enumClass}}{{/isEnum}}{{#items.isEnum}}{{#items}}
7+
8+
{{>enumClass}}{{/items}}{{/items.isEnum}}
9+
private {{{datatypeWithEnum}}} {{name}} = {{{defaultValue}}};{{/vars}}
10+
11+
{{#vars}}
12+
/**{{#description}}
13+
* {{{description}}}{{/description}}{{#minimum}}
14+
* minimum: {{minimum}}{{/minimum}}{{#maximum}}
15+
* maximum: {{maximum}}{{/maximum}}
16+
**/
17+
public {{classname}} {{name}}({{{datatypeWithEnum}}} {{name}}) {
18+
this.{{name}} = {{name}};
19+
return this;
20+
}
21+
22+
{{#vendorExtensions.extraAnnotation}}{{vendorExtensions.extraAnnotation}}{{/vendorExtensions.extraAnnotation}}
23+
@ApiModelProperty({{#example}}example = "{{example}}", {{/example}}{{#required}}required = {{required}}, {{/required}}value = "{{{description}}}")
24+
@JsonProperty("{{baseName}}")
25+
public {{{datatypeWithEnum}}} {{getter}}() {
26+
return {{name}};
27+
}
28+
public void {{setter}}({{{datatypeWithEnum}}} {{name}}) {
29+
this.{{name}} = {{name}};
30+
}
31+
32+
{{/vars}}
33+
34+
@Override
35+
public boolean equals(Object o) {
36+
if (this == o) {
37+
return true;
38+
}
39+
if (o == null || getClass() != o.getClass()) {
40+
return false;
41+
}
42+
{{classname}} {{classVarName}} = ({{classname}}) o;{{#hasVars}}
43+
return {{#vars}}Objects.equals({{name}}, {{classVarName}}.{{name}}){{#hasMore}} &&
44+
{{/hasMore}}{{^hasMore}};{{/hasMore}}{{/vars}}{{/hasVars}}{{^hasVars}}
45+
return true;{{/hasVars}}
46+
}
47+
48+
@Override
49+
public int hashCode() {
50+
return Objects.hash({{#vars}}{{name}}{{#hasMore}}, {{/hasMore}}{{/vars}});
51+
}
52+
53+
@Override
54+
public String toString() {
55+
StringBuilder sb = new StringBuilder();
56+
sb.append("class {{classname}} {\n");
57+
{{#parent}}sb.append(" ").append(toIndentedString(super.toString())).append("\n");{{/parent}}
58+
{{#vars}}sb.append(" {{name}}: ").append(toIndentedString({{name}})).append("\n");
59+
{{/vars}}sb.append("}");
60+
return sb.toString();
61+
}
62+
63+
/**
64+
* Convert the given object to string with each line indented by 4 spaces
65+
* (except the first line).
66+
*/
67+
private String toIndentedString(Object o) {
68+
if (o == null) {
69+
return "null";
70+
}
71+
return o.toString().replace("\n", "\n ");
72+
}
73+
}

samples/client/petstore/spring-stubs/pom.xml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,15 @@
66
<name>swagger-spring-server</name>
77
<version>1.0.0</version>
88
<properties>
9-
<springfox-version>2.4.0</springfox-version>
9+
<java.version>1.7</java.version>
10+
<maven.compiler.source>${java.version}</maven.compiler.source>
11+
<maven.compiler.target>${java.version}</maven.compiler.target>
12+
<springfox-version>2.5.0</springfox-version>
1013
</properties>
1114
<parent>
1215
<groupId>org.springframework.boot</groupId>
1316
<artifactId>spring-boot-starter-parent</artifactId>
14-
<version>1.3.3.RELEASE</version>
17+
<version>1.3.5.RELEASE</version>
1518
</parent>
1619
<build>
1720
<sourceDirectory>src/main/java</sourceDirectory>

samples/client/petstore/spring-stubs/src/main/java/io/swagger/model/Category.java

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,28 @@
11
package io.swagger.model;
22

3+
import java.util.Objects;
4+
import com.fasterxml.jackson.annotation.JsonProperty;
35
import io.swagger.annotations.ApiModel;
46
import io.swagger.annotations.ApiModelProperty;
57

6-
import io.swagger.annotations.*;
7-
import com.fasterxml.jackson.annotation.JsonProperty;
88

9-
import java.util.Objects;
109

1110

1211

13-
@ApiModel(description = "")
14-
public class Category {
12+
13+
public class Category {
1514

1615
private Long id = null;
1716
private String name = null;
1817

1918
/**
2019
**/
20+
public Category id(Long id) {
21+
this.id = id;
22+
return this;
23+
}
24+
25+
2126
@ApiModelProperty(value = "")
2227
@JsonProperty("id")
2328
public Long getId() {
@@ -29,6 +34,12 @@ public void setId(Long id) {
2934

3035
/**
3136
**/
37+
public Category name(String name) {
38+
this.name = name;
39+
return this;
40+
}
41+
42+
3243
@ApiModelProperty(value = "")
3344
@JsonProperty("name")
3445
public String getName() {
@@ -58,13 +69,25 @@ public int hashCode() {
5869
}
5970

6071
@Override
61-
public String toString() {
72+
public String toString() {
6273
StringBuilder sb = new StringBuilder();
6374
sb.append("class Category {\n");
6475

65-
sb.append(" id: ").append(id).append("\n");
66-
sb.append(" name: ").append(name).append("\n");
67-
sb.append("}\n");
76+
sb.append(" id: ").append(toIndentedString(id)).append("\n");
77+
sb.append(" name: ").append(toIndentedString(name)).append("\n");
78+
sb.append("}");
6879
return sb.toString();
6980
}
81+
82+
/**
83+
* Convert the given object to string with each line indented by 4 spaces
84+
* (except the first line).
85+
*/
86+
private String toIndentedString(Object o) {
87+
if (o == null) {
88+
return "null";
89+
}
90+
return o.toString().replace("\n", "\n ");
91+
}
7092
}
93+

0 commit comments

Comments
 (0)