Skip to content

Commit 969cded

Browse files
committed
fixed jackson imports on models with enums and updated dependency to support PATCH annotation
1 parent 3860c3f commit 969cded

File tree

5 files changed

+88
-22
lines changed

5 files changed

+88
-22
lines changed

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

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import java.util.regex.Pattern;
1212

1313
import io.swagger.models.properties.UntypedProperty;
14-
import io.swagger.util.Yaml;
1514
import org.apache.commons.lang3.ObjectUtils;
1615
import org.apache.commons.lang3.StringEscapeUtils;
1716
import org.apache.commons.lang3.StringUtils;
@@ -401,6 +400,15 @@ public Map<String, Object> postProcessSupportingFileData(Map<String, Object> obj
401400

402401
// override to post-process any model properties
403402
@SuppressWarnings("unused")
403+
public void postProcessModelProperties(CodegenModel model){
404+
if (model.vars == null || model.vars.isEmpty()) {
405+
return;
406+
}
407+
for(CodegenProperty codegenProperty : model.vars) {
408+
postProcessModelProperty(model, codegenProperty);
409+
}
410+
}
411+
404412
public void postProcessModelProperty(CodegenModel model, CodegenProperty property){
405413
}
406414

@@ -1546,11 +1554,7 @@ public CodegenModel fromModel(String name, Model model, Map<String, Model> allDe
15461554
addVars(m, impl.getProperties(), impl.getRequired(), allDefinitions);
15471555
}
15481556

1549-
if (m.vars != null) {
1550-
for(CodegenProperty prop : m.vars) {
1551-
postProcessModelProperty(m, prop);
1552-
}
1553-
}
1557+
postProcessModelProperties(m);
15541558
return m;
15551559
}
15561560

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

Lines changed: 41 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,26 @@
11
package io.swagger.codegen.languages;
22

3-
import java.io.File;
4-
import java.io.IOException;
5-
import java.nio.charset.StandardCharsets;
6-
import java.util.ArrayList;
7-
import java.util.LinkedHashMap;
8-
import java.util.List;
9-
import java.util.Map;
10-
11-
import org.apache.commons.io.FileUtils;
12-
133
import io.swagger.codegen.CliOption;
144
import io.swagger.codegen.CodegenConstants;
155
import io.swagger.codegen.CodegenModel;
166
import io.swagger.codegen.CodegenOperation;
7+
import io.swagger.codegen.CodegenParameter;
178
import io.swagger.codegen.CodegenProperty;
189
import io.swagger.codegen.SupportingFile;
1910
import io.swagger.models.Operation;
2011
import io.swagger.models.Swagger;
12+
import io.swagger.models.parameters.Parameter;
2113
import io.swagger.util.Json;
14+
import org.apache.commons.io.FileUtils;
15+
16+
import java.io.File;
17+
import java.io.IOException;
18+
import java.nio.charset.StandardCharsets;
19+
import java.util.ArrayList;
20+
import java.util.LinkedHashMap;
21+
import java.util.List;
22+
import java.util.Map;
23+
import java.util.Set;
2224

2325
public class JavaJAXRSSpecServerCodegen extends AbstractJavaJAXRSServerCodegen
2426
{
@@ -57,6 +59,7 @@ public JavaJAXRSSpecServerCodegen()
5759
typeMapping.put("date", "LocalDate");
5860

5961
importMapping.put("LocalDate", "org.joda.time.LocalDate");
62+
importMapping.put("InputStream", "java.io.InputStream");
6063

6164
super.embeddedTemplateDir = templateDir = JAXRS_TEMPLATE_DIRECTORY_NAME + File.separator + "spec";
6265

@@ -162,6 +165,33 @@ public void postProcessModelProperty(CodegenModel model, CodegenProperty propert
162165
model.imports.remove("JsonProperty");
163166
}
164167

168+
@Override
169+
public void postProcessModelProperties(CodegenModel model){
170+
if (model.vars == null || model.vars.isEmpty()) {
171+
return;
172+
}
173+
final boolean useJackson = Boolean.valueOf(String.valueOf(additionalProperties.get("jackson")));
174+
boolean hasEnumProperty = false;
175+
for(CodegenProperty codegenProperty : model.vars) {
176+
postProcessModelProperty(model, codegenProperty);
177+
if (codegenProperty.isEnum) {
178+
hasEnumProperty = true;
179+
}
180+
}
181+
if (useJackson && hasEnumProperty) {
182+
model.imports.add("JsonValue");
183+
model.imports.add("JsonCreator");
184+
}
185+
}
186+
187+
public CodegenParameter fromParameter(Parameter param, Set<String> imports) {
188+
final CodegenParameter parameter = super.fromParameter(param, imports);
189+
if (parameter.isFile) {
190+
imports.add("InputStream");
191+
}
192+
return parameter;
193+
}
194+
165195
@Override
166196
public void preprocessSwagger(Swagger swagger) {
167197
//copy input swagger to output folder
@@ -175,8 +205,7 @@ public void preprocessSwagger(Swagger swagger) {
175205

176206
}
177207
@Override
178-
public String getHelp()
179-
{
208+
public String getHelp() {
180209
return "Generates a Java JAXRS Server according to JAXRS 2.0 specification.";
181210
}
182211
}

modules/swagger-codegen/src/main/resources/JavaJaxRS/spec/enumClass.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public enum {{datatypeWithEnum}} {
1111
value = v;
1212
}
1313

14-
public String value() {
14+
public {{datatype}} value() {
1515
return value;
1616
}
1717

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
{{#isFormParam}}{{#notFile}}@FormParam(value = "{{baseName}}") {{{dataType}}} {{paramName}}{{/notFile}}{{#isFile}} @FormParam(value = "{{baseName}}") InputStream {{paramName}}InputStream,
2-
@FormParam(value = "{{baseName}}") Attachment {{paramName}}Detail{{/isFile}}{{/isFormParam}}
1+
{{#isFormParam}}{{#notFile}}@FormParam(value = "{{baseName}}") {{{dataType}}} {{paramName}}{{/notFile}}{{#isFile}} @FormParam(value = "{{baseName}}") InputStream {{paramName}}InputStream{{/isFile}}{{/isFormParam}}

modules/swagger-codegen/src/main/resources/JavaJaxRS/spec/pom.mustache

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,46 @@
3333
</execution>
3434
</executions>
3535
</plugin>{{/interfaceOnly}}
36+
<plugin>
37+
<groupId>org.codehaus.mojo</groupId>
38+
<artifactId>build-helper-maven-plugin</artifactId>
39+
<version>1.9.1</version>
40+
<executions>
41+
<execution>
42+
<id>add-source</id>
43+
<phase>generate-sources</phase>
44+
<goals>
45+
<goal>add-source</goal>
46+
</goals>
47+
<configuration>
48+
<sources>
49+
<source>src/gen/java</source>
50+
</sources>
51+
</configuration>
52+
</execution>
53+
</executions>
54+
</plugin>
3655
</plugins>
3756
</build>
3857
<dependencies>
3958
<dependency>
4059
<groupId>javax.ws.rs</groupId>
4160
<artifactId>javax.ws.rs-api</artifactId>
42-
<version>2.0</version>
61+
<version>2.1.1</version>
4362
<scope>provided</scope>
4463
</dependency>
64+
{{#jackson}}
65+
<dependency>
66+
<groupId>com.fasterxml.jackson.datatype</groupId>
67+
<artifactId>jackson-datatype-joda</artifactId>
68+
<version>${jackson-version}</version>
69+
</dependency>
70+
<dependency>
71+
<groupId>com.fasterxml.jackson.jaxrs</groupId>
72+
<artifactId>jackson-jaxrs-json-provider</artifactId>
73+
<version>${jackson-version}</version>
74+
</dependency>
75+
{{/jackson}}
4576
<dependency>
4677
<groupId>io.swagger</groupId>
4778
<artifactId>swagger-annotations</artifactId>
@@ -85,6 +116,9 @@
85116
{{/useBeanValidation}}
86117
</dependencies>
87118
<properties>
119+
{{#jackson}}
120+
<jackson-version>2.9.9</jackson-version>
121+
{{/jackson}}
88122
<junit-version>4.13.1</junit-version>
89123
</properties>
90124
</project>

0 commit comments

Comments
 (0)