Skip to content

Commit 41ffc70

Browse files
authored
Merge pull request #3531 from wing328/java_test_enum
[Java] add enum test cases for Jackson, Gson
2 parents 5b4eb96 + d76c7cc commit 41ffc70

File tree

75 files changed

+880
-11
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+880
-11
lines changed

modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -804,10 +804,12 @@ protected void initalizeSpecialCharacterMapping() {
804804
specialCharReplacements.put(":", "Colon");
805805
specialCharReplacements.put(">", "Greater_Than");
806806
specialCharReplacements.put("<", "Less_Than");
807+
specialCharReplacements.put(".", "Period");
808+
specialCharReplacements.put("_", "Underscore");
807809

808810
specialCharReplacements.put("<=", "Less_Than_Or_Equal_To");
809811
specialCharReplacements.put(">=", "Greater_Than_Or_Equal_To");
810-
specialCharReplacements.put("!=", "Greater_Than_Or_Equal_To");
812+
specialCharReplacements.put("!=", "Not_Equal");
811813
}
812814

813815
/**

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

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import java.util.HashSet;
77
import java.util.Iterator;
88
import java.util.List;
9+
import java.util.ListIterator;
910
import java.util.Map;
1011
import java.util.regex.Pattern;
1112

@@ -244,10 +245,14 @@ public void processOpts() {
244245
importMapping.put("ApiModelProperty", "io.swagger.annotations.ApiModelProperty");
245246
importMapping.put("ApiModel", "io.swagger.annotations.ApiModel");
246247
importMapping.put("JsonProperty", "com.fasterxml.jackson.annotation.JsonProperty");
248+
importMapping.put("JsonCreator", "com.fasterxml.jackson.annotation.JsonCreator");
247249
importMapping.put("JsonValue", "com.fasterxml.jackson.annotation.JsonValue");
248250
importMapping.put("SerializedName", "com.google.gson.annotations.SerializedName");
249251
importMapping.put("Objects", "java.util.Objects");
250252
importMapping.put("StringUtil", invokerPackage + ".StringUtil");
253+
// import JsonCreator if JsonProperty is imported
254+
// used later in recursive import in postProcessingModels
255+
importMapping.put("com.fasterxml.jackson.annotation.JsonProperty", "com.fasterxml.jackson.annotation.JsonCreator");
251256

252257
if(additionalProperties.containsKey(DATE_LIBRARY)) {
253258
setDateLibrary(additionalProperties.get("dateLibrary").toString());
@@ -638,6 +643,23 @@ public void postProcessParameter(CodegenParameter parameter) { }
638643

639644
@Override
640645
public Map<String, Object> postProcessModels(Map<String, Object> objs) {
646+
// recursivly add import for mapping one type to multipe imports
647+
List<Map<String, String>> recursiveImports = (List<Map<String, String>>) objs.get("imports");
648+
if (recursiveImports == null)
649+
return objs;
650+
651+
ListIterator<Map<String, String>> listIterator = recursiveImports.listIterator();
652+
while (listIterator.hasNext()) {
653+
String _import = listIterator.next().get("import");
654+
// if the import package happens to be found in the importMapping (key)
655+
// add the corresponding import package to the list
656+
if (importMapping.containsKey(_import)) {
657+
Map<String, String> newImportMap= new HashMap<String, String>();
658+
newImportMap.put("import", importMapping.get(_import));
659+
listIterator.add(newImportMap);
660+
}
661+
}
662+
641663
return postProcessModelsEnum(objs);
642664
}
643665

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,11 @@ public void postProcessModelProperty(CodegenModel model, CodegenProperty propert
183183
if(additionalProperties.containsKey("gson")) {
184184
model.imports.add("SerializedName");
185185
}
186+
} else { // enum class
187+
//Needed imports for Jackson's JsonCreator
188+
if(additionalProperties.containsKey("jackson")) {
189+
model.imports.add("JsonCreator");
190+
}
186191
}
187192
}
188193

modules/swagger-codegen/src/main/resources/Java/modelEnum.mustache

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
{{#jackson}}
2+
import com.fasterxml.jackson.annotation.JsonCreator;
3+
{{/jackson}}
4+
15
/**
26
* {{^description}}Gets or Sets {{{name}}}{{/description}}{{#description}}{{{description}}}{{/description}}
37
*/
@@ -24,4 +28,15 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum
2428
public String toString() {
2529
return String.valueOf(value);
2630
}
31+
32+
@JsonCreator
33+
public static {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}} fromValue(String text) {
34+
for ({{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}} b : {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}.values()) {
35+
if (String.valueOf(b.value).equals(text)) {
36+
return b;
37+
}
38+
}
39+
return null;
40+
}
41+
2742
}

modules/swagger-codegen/src/main/resources/Java/modelInnerEnum.mustache

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,14 @@
3030
public String toString() {
3131
return String.valueOf(value);
3232
}
33+
34+
@JsonCreator
35+
public static {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}} fromValue(String text) {
36+
for ({{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}} b : {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}.values()) {
37+
if (String.valueOf(b.value).equals(text)) {
38+
return b;
39+
}
40+
}
41+
return null;
42+
}
3343
}

modules/swagger-codegen/src/test/java/io/swagger/codegen/java/AbstractJavaCodegenTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ public String getHelp() {
2727

2828
@Test
2929
public void toEnumVarNameShouldNotShortenUnderScore() throws Exception {
30-
Assert.assertEquals("_", fakeJavaCodegen.toEnumVarName("_", "String"));
30+
Assert.assertEquals("UNDERSCORE", fakeJavaCodegen.toEnumVarName("_", "String"));
3131
Assert.assertEquals("__", fakeJavaCodegen.toEnumVarName("__", "String"));
3232
Assert.assertEquals("__", fakeJavaCodegen.toEnumVarName("_,.", "String"));
3333
}
3434

35-
}
35+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
2+
# EnumArrays
3+
4+
## Properties
5+
Name | Type | Description | Notes
6+
------------ | ------------- | ------------- | -------------
7+
**justSymbol** | [**JustSymbolEnum**](#JustSymbolEnum) | | [optional]
8+
**arrayEnum** | [**List&lt;ArrayEnumEnum&gt;**](#List&lt;ArrayEnumEnum&gt;) | | [optional]
9+
10+
11+
<a name="JustSymbolEnum"></a>
12+
## Enum: JustSymbolEnum
13+
Name | Value
14+
---- | -----
15+
GREATER_THAN_OR_EQUAL_TO | &quot;&gt;&#x3D;&quot;
16+
DOLLAR | &quot;$&quot;
17+
18+
19+
<a name="List<ArrayEnumEnum>"></a>
20+
## Enum: List&lt;ArrayEnumEnum&gt;
21+
Name | Value
22+
---- | -----
23+
FISH | &quot;fish&quot;
24+
CRAB | &quot;crab&quot;
25+
26+
27+

samples/client/petstore/java/jersey1/docs/MapTest.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ Name | Type | Description | Notes
1212
## Enum: Map&lt;String, InnerEnum&gt;
1313
Name | Value
1414
---- | -----
15+
UPPER | &quot;UPPER&quot;
16+
LOWER | &quot;lower&quot;
1517

1618

1719

samples/client/petstore/java/jersey1/docs/PetApi.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ try {
158158

159159
Name | Type | Description | Notes
160160
------------- | ------------- | ------------- | -------------
161-
**status** | [**List&lt;String&gt;**](String.md)| Status values that need to be considered for filter |
161+
**status** | [**List&lt;String&gt;**](String.md)| Status values that need to be considered for filter | [enum: available, pending, sold]
162162

163163
### Return type
164164

samples/client/petstore/java/jersey1/src/main/java/io/swagger/client/ApiClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,8 @@ public ApiClient() {
9999

100100
// Setup authentications (key: authentication name, value: authentication).
101101
authentications = new HashMap<String, Authentication>();
102-
authentications.put("petstore_auth", new OAuth());
103102
authentications.put("api_key", new ApiKeyAuth("header", "api_key"));
103+
authentications.put("petstore_auth", new OAuth());
104104
// Prevent the authentications from being modified.
105105
authentications = Collections.unmodifiableMap(authentications);
106106

samples/client/petstore/java/jersey1/src/main/java/io/swagger/client/api/FakeApi.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@
3434

3535
import io.swagger.client.model.Client;
3636
import org.joda.time.LocalDate;
37-
import java.math.BigDecimal;
3837
import org.joda.time.DateTime;
38+
import java.math.BigDecimal;
3939

4040

4141
import java.util.ArrayList;

samples/client/petstore/java/jersey1/src/main/java/io/swagger/client/api/PetApi.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@
3333
import io.swagger.client.Pair;
3434

3535
import io.swagger.client.model.Pet;
36-
import io.swagger.client.model.ModelApiResponse;
3736
import java.io.File;
37+
import io.swagger.client.model.ModelApiResponse;
3838

3939

4040
import java.util.ArrayList;

samples/client/petstore/java/jersey1/src/main/java/io/swagger/client/model/AdditionalPropertiesClass.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
import java.util.Objects;
2929
import com.fasterxml.jackson.annotation.JsonProperty;
30+
import com.fasterxml.jackson.annotation.JsonCreator;
3031
import io.swagger.annotations.ApiModel;
3132
import io.swagger.annotations.ApiModelProperty;
3233
import java.util.HashMap;

samples/client/petstore/java/jersey1/src/main/java/io/swagger/client/model/Animal.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
import java.util.Objects;
2929
import com.fasterxml.jackson.annotation.JsonProperty;
30+
import com.fasterxml.jackson.annotation.JsonCreator;
3031
import io.swagger.annotations.ApiModel;
3132
import io.swagger.annotations.ApiModelProperty;
3233

samples/client/petstore/java/jersey1/src/main/java/io/swagger/client/model/ArrayOfArrayOfNumberOnly.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
import java.util.Objects;
2929
import com.fasterxml.jackson.annotation.JsonProperty;
30+
import com.fasterxml.jackson.annotation.JsonCreator;
3031
import io.swagger.annotations.ApiModel;
3132
import io.swagger.annotations.ApiModelProperty;
3233
import java.math.BigDecimal;

samples/client/petstore/java/jersey1/src/main/java/io/swagger/client/model/ArrayOfNumberOnly.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
import java.util.Objects;
2929
import com.fasterxml.jackson.annotation.JsonProperty;
30+
import com.fasterxml.jackson.annotation.JsonCreator;
3031
import io.swagger.annotations.ApiModel;
3132
import io.swagger.annotations.ApiModelProperty;
3233
import java.math.BigDecimal;

samples/client/petstore/java/jersey1/src/main/java/io/swagger/client/model/ArrayTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
import java.util.Objects;
2929
import com.fasterxml.jackson.annotation.JsonProperty;
30+
import com.fasterxml.jackson.annotation.JsonCreator;
3031
import io.swagger.annotations.ApiModel;
3132
import io.swagger.annotations.ApiModelProperty;
3233
import io.swagger.client.model.ReadOnlyFirst;

samples/client/petstore/java/jersey1/src/main/java/io/swagger/client/model/Cat.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
import java.util.Objects;
2929
import com.fasterxml.jackson.annotation.JsonProperty;
30+
import com.fasterxml.jackson.annotation.JsonCreator;
3031
import io.swagger.annotations.ApiModel;
3132
import io.swagger.annotations.ApiModelProperty;
3233
import io.swagger.client.model.Animal;

samples/client/petstore/java/jersey1/src/main/java/io/swagger/client/model/Category.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
import java.util.Objects;
2929
import com.fasterxml.jackson.annotation.JsonProperty;
30+
import com.fasterxml.jackson.annotation.JsonCreator;
3031
import io.swagger.annotations.ApiModel;
3132
import io.swagger.annotations.ApiModelProperty;
3233

samples/client/petstore/java/jersey1/src/main/java/io/swagger/client/model/Client.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
import java.util.Objects;
2929
import com.fasterxml.jackson.annotation.JsonProperty;
30+
import com.fasterxml.jackson.annotation.JsonCreator;
3031
import io.swagger.annotations.ApiModel;
3132
import io.swagger.annotations.ApiModelProperty;
3233

samples/client/petstore/java/jersey1/src/main/java/io/swagger/client/model/Dog.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
import java.util.Objects;
2929
import com.fasterxml.jackson.annotation.JsonProperty;
30+
import com.fasterxml.jackson.annotation.JsonCreator;
3031
import io.swagger.annotations.ApiModel;
3132
import io.swagger.annotations.ApiModelProperty;
3233
import io.swagger.client.model.Animal;

0 commit comments

Comments
 (0)