Skip to content

Commit 4acedff

Browse files
committed
updated templates
1 parent d64e8b2 commit 4acedff

40 files changed

+895
-6
lines changed

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

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.swagger.codegen.languages;
22

33
import io.swagger.codegen.CodegenOperation;
4+
import io.swagger.codegen.CodegenParameter;
45
import io.swagger.codegen.CodegenResponse;
56
import io.swagger.codegen.CodegenType;
67
import io.swagger.models.Operation;
@@ -95,6 +96,25 @@ public Map<String, Object> postProcessOperations(Map<String, Object> objs) {
9596
@SuppressWarnings("unchecked")
9697
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation");
9798
for ( CodegenOperation operation : ops ) {
99+
boolean isMultipartPost = false;
100+
List<Map<String, String>> consumes = operation.consumes;
101+
if(consumes != null) {
102+
for(Map<String, String> consume : consumes) {
103+
String mt = consume.get("mediaType");
104+
if(mt != null) {
105+
if(mt.startsWith("multipart/form-data")) {
106+
isMultipartPost = true;
107+
}
108+
}
109+
}
110+
}
111+
112+
for(CodegenParameter parameter : operation.allParams) {
113+
if(isMultipartPost) {
114+
parameter.vendorExtensions.put("x-multipart", "true");
115+
}
116+
}
117+
98118
List<CodegenResponse> responses = operation.responses;
99119
if ( responses != null ) {
100120
for ( CodegenResponse resp : responses ) {

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

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,8 @@
66
import java.io.File;
77
import java.util.*;
88

9-
public class JavaJerseyServerCodegen extends AbstractJavaJAXRSServerCodegen
10-
{
11-
12-
public JavaJerseyServerCodegen()
13-
{
9+
public class JavaJerseyServerCodegen extends AbstractJavaJAXRSServerCodegen {
10+
public JavaJerseyServerCodegen() {
1411
super();
1512

1613
sourceFolder = "src/gen/java";
@@ -43,6 +40,7 @@ public JavaJerseyServerCodegen()
4340
Map<String, String> supportedLibraries = new LinkedHashMap<String, String>();
4441

4542
supportedLibraries.put(DEFAULT_LIBRARY, "Jersey core 1.18.1");
43+
supportedLibraries.put("jersey2", "Jersey core 2.x");
4644
library.setEnum(supportedLibraries);
4745

4846
cliOptions.add(library);
@@ -85,13 +83,32 @@ public void processOpts() {
8583
supportingFiles.add(new SupportingFile("ApiOriginFilter.mustache", (sourceFolder + '/' + apiPackage).replace(".", "/"), "ApiOriginFilter.java"));
8684
supportingFiles.add(new SupportingFile("ApiResponseMessage.mustache", (sourceFolder + '/' + apiPackage).replace(".", "/"), "ApiResponseMessage.java"));
8785
supportingFiles.add(new SupportingFile("NotFoundException.mustache", (sourceFolder + '/' + apiPackage).replace(".", "/"), "NotFoundException.java"));
86+
supportingFiles.add(new SupportingFile("jacksonJsonProvider.mustache", (sourceFolder + '/' + apiPackage).replace(".", "/"), "JacksonJsonProvider.java"));
8887
writeOptional(outputFolder, new SupportingFile("web.mustache", ("src/main/webapp/WEB-INF"), "web.xml"));
8988
supportingFiles.add(new SupportingFile("StringUtil.mustache", (sourceFolder + '/' + apiPackage).replace(".", "/"), "StringUtil.java"));
9089

9190
if ( additionalProperties.containsKey("dateLibrary") ) {
9291
setDateLibrary(additionalProperties.get("dateLibrary").toString());
9392
additionalProperties.put(dateLibrary, "true");
9493
}
94+
if(DEFAULT_LIBRARY.equals(library)) {
95+
if(templateDir.startsWith(JAXRS_TEMPLATE_DIRECTORY_NAME)) {
96+
// set to the default location
97+
templateDir = JAXRS_TEMPLATE_DIRECTORY_NAME + File.separator + "jersey1_18";
98+
}
99+
else {
100+
templateDir += File.separator + "jersey1_18";
101+
}
102+
}
103+
if("jersey2".equals(library)) {
104+
if(templateDir.startsWith(JAXRS_TEMPLATE_DIRECTORY_NAME)) {
105+
// set to the default location
106+
templateDir = JAXRS_TEMPLATE_DIRECTORY_NAME + File.separator + "jersey2";
107+
}
108+
else {
109+
templateDir += File.separator + "jersey2";
110+
}
111+
}
95112

96113
if ( "joda".equals(dateLibrary) ) {
97114
supportingFiles.add(new SupportingFile("JodaDateTimeProvider.mustache", (sourceFolder + '/' + apiPackage).replace(".", "/"), "JodaDateTimeProvider.java"));
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package {{apiPackage}};
2+
3+
import com.fasterxml.jackson.databind.ObjectMapper;
4+
import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider;
5+
import io.swagger.util.Json;
6+
7+
import javax.ws.rs.Produces;
8+
import javax.ws.rs.core.MediaType;
9+
import javax.ws.rs.ext.Provider;
10+
11+
@Provider
12+
@Produces({MediaType.APPLICATION_JSON})
13+
public class JacksonJsonProvider extends JacksonJaxbJsonProvider {
14+
private static ObjectMapper commonMapper = Json.mapper();
15+
16+
public JacksonJsonProvider() {
17+
super.setMapper(commonMapper);
18+
}
19+
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{{#isQueryParam}}@ApiParam(value = "{{{description}}}"{{#required}},required=true{{/required}}{{#allowableValues}}, {{> allowableValues }}{{/allowableValues}}{{#defaultValue}}, defaultValue="{{{defaultValue}}}"{{/defaultValue}}){{#defaultValue}} @DefaultValue("{{{defaultValue}}}"){{/defaultValue}} @QueryParam("{{baseName}}") {{{dataType}}} {{paramName}}{{/isQueryParam}}
1+
{{#isQueryParam}}@ApiParam(value = "{{{description}}}"{{#required}},required=true{{/required}}{{#allowableValues}}, {{> allowableValues }}{{/allowableValues}}{{#defaultValue}}, defaultValue="{{{defaultValue}}}"{{/defaultValue}}){{#defaultValue}} @DefaultValue("{{{defaultValue}}}"){{/defaultValue}} @QueryParam("{{baseName}}") {{{dataType}}} {{paramName}}{{/isQueryParam}}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package {{apiPackage}};
2+
3+
{{>generatedAnnotation}}
4+
public class ApiException extends Exception{
5+
private int code;
6+
public ApiException (int code, String msg) {
7+
super(msg);
8+
this.code = code;
9+
}
10+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package {{apiPackage}};
2+
3+
import java.io.IOException;
4+
5+
import javax.servlet.*;
6+
import javax.servlet.http.HttpServletResponse;
7+
8+
{{>generatedAnnotation}}
9+
public class ApiOriginFilter implements javax.servlet.Filter {
10+
public void doFilter(ServletRequest request, ServletResponse response,
11+
FilterChain chain) throws IOException, ServletException {
12+
HttpServletResponse res = (HttpServletResponse) response;
13+
res.addHeader("Access-Control-Allow-Origin", "*");
14+
res.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
15+
res.addHeader("Access-Control-Allow-Headers", "Content-Type");
16+
chain.doFilter(request, response);
17+
}
18+
19+
public void destroy() {}
20+
21+
public void init(FilterConfig filterConfig) throws ServletException {}
22+
}
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package {{apiPackage}};
2+
3+
import javax.xml.bind.annotation.XmlTransient;
4+
5+
@javax.xml.bind.annotation.XmlRootElement
6+
{{>generatedAnnotation}}
7+
public class ApiResponseMessage {
8+
public static final int ERROR = 1;
9+
public static final int WARNING = 2;
10+
public static final int INFO = 3;
11+
public static final int OK = 4;
12+
public static final int TOO_BUSY = 5;
13+
14+
int code;
15+
String type;
16+
String message;
17+
18+
public ApiResponseMessage(){}
19+
20+
public ApiResponseMessage(int code, String message){
21+
this.code = code;
22+
switch(code){
23+
case ERROR:
24+
setType("error");
25+
break;
26+
case WARNING:
27+
setType("warning");
28+
break;
29+
case INFO:
30+
setType("info");
31+
break;
32+
case OK:
33+
setType("ok");
34+
break;
35+
case TOO_BUSY:
36+
setType("too busy");
37+
break;
38+
default:
39+
setType("unknown");
40+
break;
41+
}
42+
this.message = message;
43+
}
44+
45+
@XmlTransient
46+
public int getCode() {
47+
return code;
48+
}
49+
50+
public void setCode(int code) {
51+
this.code = code;
52+
}
53+
54+
public String getType() {
55+
return type;
56+
}
57+
58+
public void setType(String type) {
59+
this.type = type;
60+
}
61+
62+
public String getMessage() {
63+
return message;
64+
}
65+
66+
public void setMessage(String message) {
67+
this.message = message;
68+
}
69+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package {{apiPackage}};
2+
3+
import com.sun.jersey.core.spi.component.ComponentContext;
4+
import com.sun.jersey.spi.inject.Injectable;
5+
import com.sun.jersey.spi.inject.PerRequestTypeInjectableProvider;
6+
7+
import javax.ws.rs.QueryParam;
8+
import javax.ws.rs.WebApplicationException;
9+
import javax.ws.rs.core.Context;
10+
import javax.ws.rs.core.Response;
11+
import javax.ws.rs.core.Response.Status;
12+
import javax.ws.rs.core.UriInfo;
13+
import javax.ws.rs.ext.Provider;
14+
import org.joda.time.DateTime;
15+
import java.util.List;
16+
17+
@Provider
18+
public class JodaDateTimeProvider extends PerRequestTypeInjectableProvider<QueryParam, DateTime> {
19+
private final UriInfo uriInfo;
20+
21+
public JodaDateTimeProvider(@Context UriInfo uriInfo) {
22+
super(DateTime.class);
23+
this.uriInfo = uriInfo;
24+
}
25+
26+
@Override
27+
public Injectable<DateTime> getInjectable(final ComponentContext cc, final QueryParam a) {
28+
return new Injectable<DateTime>() {
29+
@Override
30+
public DateTime getValue() {
31+
final List<String> values = uriInfo.getQueryParameters().get(a.value());
32+
33+
if (values == null || values.isEmpty())
34+
return null;
35+
if (values.size() > 1) {
36+
throw new WebApplicationException(Response.status(Status.BAD_REQUEST).
37+
entity(a.value() + " cannot contain multiple values").build());
38+
}
39+
40+
return DateTime.parse(values.get(0));
41+
}
42+
};
43+
}
44+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package {{apiPackage}};
2+
3+
import com.sun.jersey.core.spi.component.ComponentContext;
4+
import com.sun.jersey.spi.inject.Injectable;
5+
import com.sun.jersey.spi.inject.PerRequestTypeInjectableProvider;
6+
7+
import javax.ws.rs.QueryParam;
8+
import javax.ws.rs.WebApplicationException;
9+
import javax.ws.rs.core.Context;
10+
import javax.ws.rs.core.Response;
11+
import javax.ws.rs.core.Response.Status;
12+
import javax.ws.rs.core.UriInfo;
13+
import javax.ws.rs.ext.Provider;
14+
import org.joda.time.LocalDate;
15+
import java.util.List;
16+
17+
@Provider
18+
public class JodaLocalDateProvider extends PerRequestTypeInjectableProvider<QueryParam, LocalDate> {
19+
private final UriInfo uriInfo;
20+
21+
public JodaLocalDateProvider(@Context UriInfo uriInfo) {
22+
super(LocalDate.class);
23+
this.uriInfo = uriInfo;
24+
}
25+
26+
@Override
27+
public Injectable<LocalDate> getInjectable(final ComponentContext cc, final QueryParam a) {
28+
return new Injectable<LocalDate>() {
29+
@Override
30+
public LocalDate getValue() {
31+
final List<String> values = uriInfo.getQueryParameters().get(a.value());
32+
33+
if (values == null || values.isEmpty())
34+
return null;
35+
if (values.size() > 1) {
36+
throw new WebApplicationException(Response.status(Status.BAD_REQUEST).
37+
entity(a.value() + " cannot contain multiple values").build());
38+
}
39+
40+
return LocalDate.parse(values.get(0));
41+
}
42+
};
43+
}
44+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package {{apiPackage}};
2+
3+
import com.sun.jersey.core.spi.component.ComponentContext;
4+
import com.sun.jersey.spi.inject.Injectable;
5+
import com.sun.jersey.spi.inject.PerRequestTypeInjectableProvider;
6+
7+
import javax.ws.rs.QueryParam;
8+
import javax.ws.rs.WebApplicationException;
9+
import javax.ws.rs.core.Context;
10+
import javax.ws.rs.core.Response;
11+
import javax.ws.rs.core.Response.Status;
12+
import javax.ws.rs.core.UriInfo;
13+
import javax.ws.rs.ext.Provider;
14+
import java.time.LocalDate;
15+
import java.util.List;
16+
17+
@Provider
18+
public class LocalDateProvider extends PerRequestTypeInjectableProvider<QueryParam, LocalDate> {
19+
private final UriInfo uriInfo;
20+
21+
public LocalDateProvider(@Context UriInfo uriInfo) {
22+
super(LocalDate.class);
23+
this.uriInfo = uriInfo;
24+
}
25+
26+
@Override
27+
public Injectable<LocalDate> getInjectable(final ComponentContext cc, final QueryParam a) {
28+
return new Injectable<LocalDate>() {
29+
@Override
30+
public LocalDate getValue() {
31+
final List<String> values = uriInfo.getQueryParameters().get(a.value());
32+
33+
if (values == null || values.isEmpty())
34+
return null;
35+
if (values.size() > 1) {
36+
throw new WebApplicationException(Response.status(Status.BAD_REQUEST).
37+
entity(a.value() + " cannot contain multiple values").build());
38+
}
39+
40+
return LocalDate.parse(values.get(0));
41+
}
42+
};
43+
}
44+
}

0 commit comments

Comments
 (0)