Skip to content

Commit bde2bba

Browse files
committed
Merge pull request #1906 from swagger-api/issue-1905
added date library option
2 parents 0c2376b + 70784a3 commit bde2bba

File tree

4 files changed

+36
-30
lines changed

4 files changed

+36
-30
lines changed

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

+34
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig {
2020
private static final Logger LOGGER = LoggerFactory.getLogger(JavaClientCodegen.class);
2121
public static final String FULL_JAVA_UTIL = "fullJavaUtil";
2222
public static final String DEFAULT_LIBRARY = "<default>";
23+
public static final String DATE_LIBRARY = "dateLibrary";
2324

25+
protected String dateLibrary = "default";
2426
protected String invokerPackage = "io.swagger.client";
2527
protected String groupId = "io.swagger";
2628
protected String artifactId = "swagger-java-client";
@@ -97,6 +99,14 @@ public JavaClientCodegen() {
9799
library.setEnum(supportedLibraries);
98100
library.setDefault(DEFAULT_LIBRARY);
99101
cliOptions.add(library);
102+
103+
CliOption dateLibrary = new CliOption(DATE_LIBRARY, "Option. Date library to use");
104+
Map<String, String> dateOptions = new HashMap<String, String>();
105+
dateOptions.put("java8", "Java 8 native");
106+
dateOptions.put("joda", "Joda");
107+
dateLibrary.setEnum(dateOptions);
108+
109+
cliOptions.add(dateLibrary);
100110
}
101111

102112
@Override
@@ -252,6 +262,26 @@ public void processOpts() {
252262
} else if("jersey2".equals(getLibrary())) {
253263
supportingFiles.add(new SupportingFile("JSON.mustache", invokerFolder, "JSON.java"));
254264
}
265+
266+
if(additionalProperties.containsKey(DATE_LIBRARY)) {
267+
this.dateLibrary = additionalProperties.get(DATE_LIBRARY).toString();
268+
}
269+
270+
if("joda".equals(dateLibrary)) {
271+
typeMapping.put("date", "LocalDate");
272+
typeMapping.put("DateTime", "DateTime");
273+
274+
importMapping.put("LocalDate", "org.joda.time.LocalDate");
275+
importMapping.put("DateTime", "org.joda.time.DateTime");
276+
}
277+
else if ("java8".equals(dateLibrary)) {
278+
additionalProperties.put("java8", "true");
279+
additionalProperties.put("javaVersion", "1.8");
280+
typeMapping.put("date", "LocalDate");
281+
typeMapping.put("DateTime", "LocalDateTime");
282+
importMapping.put("LocalDate", "java.time.LocalDate");
283+
importMapping.put("LocalDateTime", "java.time.LocalDateTime");
284+
}
255285
}
256286

257287
private void sanitizeConfig() {
@@ -760,4 +790,8 @@ private String sanitizePackageName(String packageName) {
760790
public void setFullJavaUtil(boolean fullJavaUtil) {
761791
this.fullJavaUtil = fullJavaUtil;
762792
}
793+
794+
public void setDateLibrary(String library) {
795+
this.dateLibrary = library;
796+
}
763797
}

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

-27
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,9 @@
99
import java.util.*;
1010

1111
public class JaxRSServerCodegen extends JavaClientCodegen implements CodegenConfig {
12-
protected String dateLibrary = "default";
1312
protected String title = "Swagger Server";
1413
protected String implFolder = "src/main/java";
1514

16-
public static final String DATE_LIBRARY = "dateLibrary";
1715
public JaxRSServerCodegen() {
1816
super();
1917

@@ -41,14 +39,6 @@ public JaxRSServerCodegen() {
4139
}
4240
}
4341

44-
CliOption dateLibrary = new CliOption(DATE_LIBRARY, "Option. Date library to use");
45-
Map<String, String> dateOptions = new HashMap<String, String>();
46-
dateOptions.put("java8", "Java 8 native");
47-
dateOptions.put("joda", "Joda");
48-
dateLibrary.setEnum(dateOptions);
49-
50-
cliOptions.add(dateLibrary);
51-
5242
CliOption library = new CliOption(CodegenConstants.LIBRARY, "library template (sub-template) to use");
5343
library.setDefault(DEFAULT_LIBRARY);
5444

@@ -111,25 +101,12 @@ public void processOpts() {
111101
}
112102

113103
if("joda".equals(dateLibrary)) {
114-
typeMapping.put("date", "LocalDate");
115-
typeMapping.put("DateTime", "DateTime");
116-
117-
importMapping.put("LocalDate", "org.joda.time.LocalDate");
118-
importMapping.put("DateTime", "org.joda.time.DateTime");
119-
120104
supportingFiles.add(new SupportingFile("JodaDateTimeProvider.mustache",
121105
(sourceFolder + '/' + apiPackage).replace(".", "/"), "JodaDateTimeProvider.java"));
122106
supportingFiles.add(new SupportingFile("JodaLocalDateProvider.mustache",
123107
(sourceFolder + '/' + apiPackage).replace(".", "/"), "JodaLocalDateProvider.java"));
124108
}
125109
else if ("java8".equals(dateLibrary)) {
126-
additionalProperties.put("java8", "true");
127-
additionalProperties.put("javaVersion", "1.8");
128-
typeMapping.put("date", "LocalDate");
129-
typeMapping.put("DateTime", "LocalDateTime");
130-
importMapping.put("LocalDate", "java.time.LocalDate");
131-
importMapping.put("LocalDateTime", "java.time.LocalDateTime");
132-
133110
supportingFiles.add(new SupportingFile("LocalDateTimeProvider.mustache",
134111
(sourceFolder + '/' + apiPackage).replace(".", "/"), "LocalDateTimeProvider.java"));
135112
supportingFiles.add(new SupportingFile("LocalDateProvider.mustache",
@@ -291,8 +268,4 @@ private String implFileFolder(String output) {
291268
public boolean shouldOverwrite(String filename) {
292269
return super.shouldOverwrite(filename) && !filename.endsWith("ServiceImpl.java") && !filename.endsWith("ServiceFactory.java");
293270
}
294-
295-
public void setDateLibrary(String library) {
296-
this.dateLibrary = library;
297-
}
298271
}

modules/swagger-codegen/src/test/java/io/swagger/codegen/options/JavaOptionsProvider.java

+1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public Map<String, String> createOptions() {
3939
.put(JavaClientCodegen.FULL_JAVA_UTIL, FULL_JAVA_UTIL_VALUE)
4040
.put(CodegenConstants.LIBRARY, LIBRARY_VALUE)
4141
.put(CodegenConstants.SERIALIZE_BIG_DECIMAL_AS_STRING, "true")
42+
.put(JavaClientCodegen.DATE_LIBRARY, "joda")
4243
.build();
4344
}
4445

modules/swagger-codegen/src/test/java/io/swagger/codegen/options/JaxRSServerOptionsProvider.java

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package io.swagger.codegen.options;
22

33
import com.google.common.collect.ImmutableMap;
4-
import io.swagger.codegen.languages.JaxRSServerCodegen;
54
import io.swagger.codegen.CodegenConstants;
65

76
import java.util.Map;
@@ -26,8 +25,7 @@ public Map<String, String> createOptions() {
2625

2726
ImmutableMap.Builder<String, String> builder = new ImmutableMap.Builder<String, String>();
2827
builder.putAll(options)
29-
.put(CodegenConstants.IMPL_FOLDER, IMPL_FOLDER_VALUE)
30-
.put(JaxRSServerCodegen.DATE_LIBRARY, "joda");
28+
.put(CodegenConstants.IMPL_FOLDER, IMPL_FOLDER_VALUE);
3129

3230
return builder.build();
3331
}

0 commit comments

Comments
 (0)