Skip to content

Commit aa805a4

Browse files
committed
Merge pull request #2488 from swagger-api/feature/jersey2
Add jersey2 server support
2 parents c39bf41 + cc4b3ff commit aa805a4

File tree

119 files changed

+4480
-1184
lines changed

Some content is hidden

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

119 files changed

+4480
-1184
lines changed

bin/jaxrs-petstore-server.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,6 @@ fi
2626

2727
# if you've executed sbt assembly previously it will use that instead.
2828
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties"
29-
ags="$@ generate -t modules/swagger-codegen/src/main/resources/JavaJaxRS -i modules/swagger-codegen/src/test/resources/2_0/petstore.json -l jaxrs -o samples/server/petstore/jaxrs"
29+
ags="$@ generate -t modules/swagger-codegen/src/main/resources/JavaJaxRS -i modules/swagger-codegen/src/test/resources/2_0/petstore.yaml -l jaxrs -o samples/server/petstore/jaxrs"
3030

3131
java $JAVA_OPTS -jar $executable $ags

bin/jersey2-petstore-server.sh

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#!/bin/sh
2+
3+
SCRIPT="$0"
4+
5+
while [ -h "$SCRIPT" ] ; do
6+
ls=`ls -ld "$SCRIPT"`
7+
link=`expr "$ls" : '.*-> \(.*\)$'`
8+
if expr "$link" : '/.*' > /dev/null; then
9+
SCRIPT="$link"
10+
else
11+
SCRIPT=`dirname "$SCRIPT"`/"$link"
12+
fi
13+
done
14+
15+
if [ ! -d "${APP_DIR}" ]; then
16+
APP_DIR=`dirname "$SCRIPT"`/..
17+
APP_DIR=`cd "${APP_DIR}"; pwd`
18+
fi
19+
20+
executable="./modules/swagger-codegen-cli/target/swagger-codegen-cli.jar"
21+
22+
if [ ! -f "$executable" ]
23+
then
24+
mvn clean package
25+
fi
26+
27+
# if you've executed sbt assembly previously it will use that instead.
28+
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties"
29+
ags="$@ generate -t modules/swagger-codegen/src/main/resources/JavaJaxRS -i modules/swagger-codegen/src/test/resources/2_0/petstore.yaml -l jaxrs -o samples/server/petstore/jersey2 --library=jersey2"
30+
31+
java $JAVA_OPTS -jar $executable $ags

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

Lines changed: 6 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -2,55 +2,22 @@
22

33
import com.google.common.base.Function;
44
import com.google.common.collect.Lists;
5-
65
import io.swagger.codegen.examples.ExampleGenerator;
7-
import io.swagger.models.ArrayModel;
8-
import io.swagger.models.ComposedModel;
9-
import io.swagger.models.Model;
10-
import io.swagger.models.ModelImpl;
11-
import io.swagger.models.Operation;
12-
import io.swagger.models.RefModel;
13-
import io.swagger.models.Response;
14-
import io.swagger.models.Swagger;
15-
import io.swagger.models.auth.ApiKeyAuthDefinition;
16-
import io.swagger.models.auth.BasicAuthDefinition;
17-
import io.swagger.models.auth.In;
18-
import io.swagger.models.auth.OAuth2Definition;
19-
import io.swagger.models.auth.SecuritySchemeDefinition;
20-
import io.swagger.models.parameters.BodyParameter;
21-
import io.swagger.models.parameters.CookieParameter;
22-
import io.swagger.models.parameters.FormParameter;
23-
import io.swagger.models.parameters.HeaderParameter;
24-
import io.swagger.models.parameters.Parameter;
25-
import io.swagger.models.parameters.PathParameter;
26-
import io.swagger.models.parameters.QueryParameter;
27-
import io.swagger.models.parameters.SerializableParameter;
6+
import io.swagger.models.*;
7+
import io.swagger.models.auth.*;
8+
import io.swagger.models.parameters.*;
289
import io.swagger.models.properties.*;
2910
import io.swagger.models.properties.PropertyBuilder.PropertyId;
3011
import io.swagger.util.Json;
31-
12+
import org.apache.commons.lang.StringEscapeUtils;
3213
import org.apache.commons.lang.StringUtils;
3314
import org.slf4j.Logger;
3415
import org.slf4j.LoggerFactory;
3516

3617
import javax.annotation.Nullable;
37-
3818
import java.io.File;
39-
import java.util.ArrayList;
40-
import java.util.Arrays;
41-
import java.util.Collection;
42-
import java.util.Collections;
43-
import java.util.Comparator;
44-
import java.util.HashMap;
45-
import java.util.HashSet;
46-
import java.util.Iterator;
47-
import java.util.LinkedHashMap;
48-
import java.util.LinkedHashSet;
49-
import java.util.List;
50-
import java.util.Map;
19+
import java.util.*;
5120
import java.util.Map.Entry;
52-
import java.util.Set;
53-
import java.util.TreeSet;
5421
import java.util.regex.Matcher;
5522
import java.util.regex.Pattern;
5623

@@ -203,11 +170,7 @@ public void processSwagger(Swagger swagger) {
203170
@SuppressWarnings("static-method")
204171
public String escapeText(String input) {
205172
if (input != null) {
206-
input = input.trim(); // FIXME: a parameter should not be assigned. Also declare the methods parameters as 'final'.
207-
String output = input.replaceAll("\n", "\\\\n");
208-
output = output.replace("\r", "\\r");
209-
output = output.replace("\"", "\\\"");
210-
return output;
173+
return StringEscapeUtils.escapeJava(input).replace("\\/", "/");
211174
}
212175
return input;
213176
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import io.swagger.models.parameters.Parameter;
99
import io.swagger.util.Json;
1010
import org.apache.commons.io.IOUtils;
11+
import org.apache.commons.lang3.ObjectUtils;
1112
import org.joda.time.DateTime;
1213
import org.slf4j.Logger;
1314
import org.slf4j.LoggerFactory;
@@ -16,7 +17,6 @@
1617
import java.util.*;
1718

1819
import static org.apache.commons.lang3.StringUtils.isNotEmpty;
19-
import org.apache.commons.lang3.ObjectUtils;
2020

2121
public class DefaultGenerator extends AbstractGenerator implements Generator {
2222
protected Logger LOGGER = LoggerFactory.getLogger(DefaultGenerator.class);

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: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,10 @@
66
import java.io.File;
77
import java.util.*;
88

9-
public class JavaJerseyServerCodegen extends AbstractJavaJAXRSServerCodegen
10-
{
9+
public class JavaJerseyServerCodegen extends AbstractJavaJAXRSServerCodegen {
10+
boolean showGenerationTimestamp = false;
1111

12-
public JavaJerseyServerCodegen()
13-
{
12+
public JavaJerseyServerCodegen() {
1413
super();
1514

1615
sourceFolder = "src/gen/java";
@@ -43,11 +42,13 @@ public JavaJerseyServerCodegen()
4342
Map<String, String> supportedLibraries = new LinkedHashMap<String, String>();
4443

4544
supportedLibraries.put(DEFAULT_LIBRARY, "Jersey core 1.18.1");
45+
supportedLibraries.put("jersey2", "Jersey core 2.x");
4646
library.setEnum(supportedLibraries);
4747

4848
cliOptions.add(library);
4949
cliOptions.add(new CliOption(CodegenConstants.IMPL_FOLDER, CodegenConstants.IMPL_FOLDER_DESC));
5050
cliOptions.add(new CliOption("title", "a title describing the application"));
51+
cliOptions.add(new CliOption("showGenerationTimestamp", "shows the timestamp when files were generated"));
5152
}
5253

5354
@Override
@@ -85,13 +86,34 @@ public void processOpts() {
8586
supportingFiles.add(new SupportingFile("ApiOriginFilter.mustache", (sourceFolder + '/' + apiPackage).replace(".", "/"), "ApiOriginFilter.java"));
8687
supportingFiles.add(new SupportingFile("ApiResponseMessage.mustache", (sourceFolder + '/' + apiPackage).replace(".", "/"), "ApiResponseMessage.java"));
8788
supportingFiles.add(new SupportingFile("NotFoundException.mustache", (sourceFolder + '/' + apiPackage).replace(".", "/"), "NotFoundException.java"));
89+
supportingFiles.add(new SupportingFile("jacksonJsonProvider.mustache", (sourceFolder + '/' + apiPackage).replace(".", "/"), "JacksonJsonProvider.java"));
90+
writeOptional(outputFolder, new SupportingFile("bootstrap.mustache", (implFolder + '/' + apiPackage).replace(".", "/"), "Bootstrap.java"));
91+
8892
writeOptional(outputFolder, new SupportingFile("web.mustache", ("src/main/webapp/WEB-INF"), "web.xml"));
8993
supportingFiles.add(new SupportingFile("StringUtil.mustache", (sourceFolder + '/' + apiPackage).replace(".", "/"), "StringUtil.java"));
9094

9195
if ( additionalProperties.containsKey("dateLibrary") ) {
9296
setDateLibrary(additionalProperties.get("dateLibrary").toString());
9397
additionalProperties.put(dateLibrary, "true");
9498
}
99+
if(DEFAULT_LIBRARY.equals(library) || library == null) {
100+
if(templateDir.startsWith(JAXRS_TEMPLATE_DIRECTORY_NAME)) {
101+
// set to the default location
102+
templateDir = JAXRS_TEMPLATE_DIRECTORY_NAME + File.separator + "jersey1_18";
103+
}
104+
else {
105+
templateDir += File.separator + "jersey1_18";
106+
}
107+
}
108+
if("jersey2".equals(library)) {
109+
if(templateDir.startsWith(JAXRS_TEMPLATE_DIRECTORY_NAME)) {
110+
// set to the default location
111+
templateDir = JAXRS_TEMPLATE_DIRECTORY_NAME + File.separator + "jersey2";
112+
}
113+
else {
114+
templateDir += File.separator + "jersey2";
115+
}
116+
}
95117

96118
if ( "joda".equals(dateLibrary) ) {
97119
supportingFiles.add(new SupportingFile("JodaDateTimeProvider.mustache", (sourceFolder + '/' + apiPackage).replace(".", "/"), "JodaDateTimeProvider.java"));
@@ -128,5 +150,9 @@ public void addOperationToGroup(String tag, String resourcePath, Operation opera
128150
}
129151
opList.add(co);
130152
co.baseName = basePath;
131-
}
153+
}
154+
155+
public void showGenerationTimestamp(boolean showGenerationTimestamp) {
156+
this.showGenerationTimestamp = showGenerationTimestamp;
157+
}
132158
}

modules/swagger-codegen/src/main/resources/Java/libraries/feign/pom.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@
110110
<dependency>
111111
<groupId>io.swagger</groupId>
112112
<artifactId>swagger-annotations</artifactId>
113-
<version>${swagger-annotations-version}</version>
113+
<version>${swagger-core-version}</version>
114114
</dependency>
115115

116116
<!-- HTTP client: Netflix Feign -->
@@ -179,7 +179,7 @@
179179
</dependency>
180180
</dependencies>
181181
<properties>
182-
<swagger-annotations-version>1.5.0</swagger-annotations-version>
182+
<swagger-core-version>1.5.8</swagger-core-version>
183183
<feign-version>8.1.1</feign-version>
184184
<jackson-version>2.6.3</jackson-version>
185185
<jodatime-version>2.5</jodatime-version>

modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/pom.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@
131131
<dependency>
132132
<groupId>io.swagger</groupId>
133133
<artifactId>swagger-annotations</artifactId>
134-
<version>${swagger-annotations-version}</version>
134+
<version>${swagger-core-version}</version>
135135
</dependency>
136136

137137
<!-- HTTP client: jersey-client -->
@@ -194,7 +194,7 @@
194194
</dependency>
195195
</dependencies>
196196
<properties>
197-
<swagger-annotations-version>1.5.0</swagger-annotations-version>
197+
<swagger-core-version>1.5.8</swagger-core-version>
198198
<jersey-version>2.22</jersey-version>
199199
<jackson-version>2.4.2</jackson-version>
200200
<jodatime-version>2.3</jodatime-version>

modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/pom.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@
132132
<dependency>
133133
<groupId>io.swagger</groupId>
134134
<artifactId>swagger-annotations</artifactId>
135-
<version>${swagger-annotations-version}</version>
135+
<version>${swagger-core-version}</version>
136136
</dependency>
137137
<dependency>
138138
<groupId>com.squareup.okhttp</groupId>
@@ -159,7 +159,7 @@
159159
</dependency>
160160
</dependencies>
161161
<properties>
162-
<swagger-annotations-version>1.5.0</swagger-annotations-version>
162+
<swagger-core-version>1.5.8</swagger-core-version>
163163
<okhttp-version>2.7.2</okhttp-version>
164164
<gson-version>2.3.1</gson-version>
165165
<maven-plugin-version>1.0.0</maven-plugin-version>

modules/swagger-codegen/src/main/resources/Java/libraries/retrofit/pom.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@
110110
<dependency>
111111
<groupId>io.swagger</groupId>
112112
<artifactId>swagger-annotations</artifactId>
113-
<version>${swagger-annotations-version}</version>
113+
<version>${swagger-core-version}</version>
114114
</dependency>
115115
<dependency>
116116
<groupId>com.squareup.retrofit</groupId>
@@ -137,7 +137,7 @@
137137
</dependency>
138138
</dependencies>
139139
<properties>
140-
<swagger-annotations-version>1.5.0</swagger-annotations-version>
140+
<swagger-core-version>1.5.8</swagger-core-version>
141141
<retrofit-version>1.9.0</retrofit-version>
142142
<okhttp-version>2.4.0</okhttp-version>
143143
<oltu-version>1.0.0</oltu-version>

0 commit comments

Comments
 (0)