Skip to content

Commit a6f0b2d

Browse files
authored
Merge pull request #3101 from cbornet/joda_okhttp
Add joda support to okhttp-gson and use it in the samples
2 parents bd705a4 + 6188421 commit a6f0b2d

28 files changed

+722
-1005
lines changed

bin/java-petstore-okhttp-gson.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ 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 -i modules/swagger-codegen/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml -l java -c bin/java-petstore-okhttp-gson.json -o samples/client/petstore/java/okhttp-gson -DhideGenerationTimestamp=true"
29+
ags="$@ generate -i modules/swagger-codegen/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml -l java -c bin/java-petstore-okhttp-gson.json -o samples/client/petstore/java/okhttp-gson -DdateLibrary=joda,hideGenerationTimestamp=true"
3030

31+
rm -rf samples/client/petstore/java/okhttp-gson/src/main
32+
find samples/client/petstore/java/okhttp-gson -maxdepth 1 -type f ! -name "README.md" -exec rm {} +
3133
java $JAVA_OPTS -jar $executable $ags

bin/windows/java-petsore-okhttp-gson.bat renamed to bin/windows/java-petstore-okhttp-gson.bat

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ If Not Exist %executable% (
55
)
66

77
set JAVA_OPTS=%JAVA_OPTS% -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties
8-
set ags=generate -t modules\swagger-codegen\src\main\resources\java -i modules\swagger-codegen\src\test\resources\2_0\petstore.json -l java -o samples\client\petstore\java --library=okhttp-gson -DhideGenerationTimestamp=true
8+
set ags=generate -t modules\swagger-codegen\src\main\resources\java -i modules\swagger-codegen\src\test\resources\2_0\petstore.json -l java -o samples\client\petstore\java --library=okhttp-gson -DdateLibrary=joda,hideGenerationTimestamp=true
99

1010
java %JAVA_OPTS% -jar %executable% %ags%

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

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,20 @@ import com.google.gson.JsonParseException;
1212
import com.google.gson.JsonPrimitive;
1313
import com.google.gson.JsonSerializationContext;
1414
import com.google.gson.JsonSerializer;
15+
import com.google.gson.TypeAdapter;
1516
import com.google.gson.stream.JsonReader;
17+
import com.google.gson.stream.JsonWriter;
1618

19+
import java.io.IOException;
1720
import java.io.StringReader;
1821
import java.lang.reflect.Type;
1922
import java.util.Date;
2023

24+
import org.joda.time.DateTime;
25+
import org.joda.time.LocalDate;
26+
import org.joda.time.format.DateTimeFormatter;
27+
import org.joda.time.format.ISODateTimeFormat;
28+
2129
public class JSON {
2230
private ApiClient apiClient;
2331
private Gson gson;
@@ -31,6 +39,8 @@ public class JSON {
3139
this.apiClient = apiClient;
3240
gson = new GsonBuilder()
3341
.registerTypeAdapter(Date.class, new DateAdapter(apiClient))
42+
.registerTypeAdapter(DateTime.class, new DateTimeTypeAdapter())
43+
.registerTypeAdapter(LocalDate.class, new LocalDateTypeAdapter())
3444
.create();
3545
}
3646

@@ -143,3 +153,62 @@ class DateAdapter implements JsonSerializer<Date>, JsonDeserializer<Date> {
143153
}
144154
}
145155
}
156+
157+
/**
158+
* Gson TypeAdapter for Joda DateTime type
159+
*/
160+
class DateTimeTypeAdapter extends TypeAdapter<DateTime> {
161+
162+
private final DateTimeFormatter formatter = ISODateTimeFormat.dateTime();
163+
164+
@Override
165+
public void write(JsonWriter out, DateTime date) throws IOException {
166+
if (date == null) {
167+
out.nullValue();
168+
} else {
169+
out.value(formatter.print(date));
170+
}
171+
}
172+
173+
@Override
174+
public DateTime read(JsonReader in) throws IOException {
175+
switch (in.peek()) {
176+
case NULL:
177+
in.nextNull();
178+
return null;
179+
default:
180+
String date = in.nextString();
181+
return formatter.parseDateTime(date);
182+
}
183+
}
184+
}
185+
186+
/**
187+
* Gson TypeAdapter for Joda LocalDate type
188+
*/
189+
class LocalDateTypeAdapter extends TypeAdapter<LocalDate> {
190+
191+
private final DateTimeFormatter formatter = ISODateTimeFormat.date();
192+
193+
@Override
194+
public void write(JsonWriter out, LocalDate date) throws IOException {
195+
if (date == null) {
196+
out.nullValue();
197+
} else {
198+
out.value(formatter.print(date));
199+
}
200+
}
201+
202+
@Override
203+
public LocalDate read(JsonReader in) throws IOException {
204+
switch (in.peek()) {
205+
case NULL:
206+
in.nextNull();
207+
return null;
208+
default:
209+
String date = in.nextString();
210+
return formatter.parseLocalDate(date);
211+
}
212+
}
213+
}
214+

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,5 +98,6 @@ dependencies {
9898
compile 'com.squareup.okhttp:okhttp:2.7.5'
9999
compile 'com.squareup.okhttp:logging-interceptor:2.7.5'
100100
compile 'com.google.code.gson:gson:2.6.2'
101+
compile 'joda-time:joda-time:2.9.3'
101102
testCompile 'junit:junit:4.12'
102103
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ lazy val root = (project in file(".")).
1313
"com.squareup.okhttp" % "okhttp" % "2.7.5",
1414
"com.squareup.okhttp" % "logging-interceptor" % "2.7.5",
1515
"com.google.code.gson" % "gson" % "2.6.2",
16+
"joda-time" % "joda-time" % "2.9.3" % "compile",
1617
"junit" % "junit" % "4.12" % "test",
1718
"com.novocode" % "junit-interface" % "0.10" % "test"
1819
)

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,11 @@
128128
<artifactId>gson</artifactId>
129129
<version>${gson-version}</version>
130130
</dependency>
131+
<dependency>
132+
<groupId>joda-time</groupId>
133+
<artifactId>joda-time</artifactId>
134+
<version>${jodatime-version}</version>
135+
</dependency>
131136

132137
<!-- test dependencies -->
133138
<dependency>
@@ -141,6 +146,7 @@
141146
<swagger-core-version>1.5.9</swagger-core-version>
142147
<okhttp-version>2.7.5</okhttp-version>
143148
<gson-version>2.6.2</gson-version>
149+
<jodatime-version>2.9.3</jodatime-version>
144150
<maven-plugin-version>1.0.0</maven-plugin-version>
145151
<junit-version>4.12</junit-version>
146152
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

samples/client/petstore/java/okhttp-gson/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,5 +98,6 @@ dependencies {
9898
compile 'com.squareup.okhttp:okhttp:2.7.5'
9999
compile 'com.squareup.okhttp:logging-interceptor:2.7.5'
100100
compile 'com.google.code.gson:gson:2.6.2'
101+
compile 'joda-time:joda-time:2.9.3'
101102
testCompile 'junit:junit:4.12'
102103
}

samples/client/petstore/java/okhttp-gson/build.sbt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ lazy val root = (project in file(".")).
1313
"com.squareup.okhttp" % "okhttp" % "2.7.5",
1414
"com.squareup.okhttp" % "logging-interceptor" % "2.7.5",
1515
"com.google.code.gson" % "gson" % "2.6.2",
16+
"joda-time" % "joda-time" % "2.9.3" % "compile",
1617
"junit" % "junit" % "4.12" % "test",
1718
"com.novocode" % "junit-interface" % "0.10" % "test"
1819
)

samples/client/petstore/java/okhttp-gson/docs/FakeApi.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ Integer int32 = 56; // Integer | None
3232
Long int64 = 789L; // Long | None
3333
Float _float = 3.4F; // Float | None
3434
byte[] binary = B; // byte[] | None
35-
Date date = new Date(); // Date | None
36-
Date dateTime = new Date(); // Date | None
35+
LocalDate date = new LocalDate(); // LocalDate | None
36+
DateTime dateTime = new DateTime(); // DateTime | None
3737
String password = "password_example"; // String | None
3838
try {
3939
apiInstance.testEndpointParameters(number, _double, string, _byte, integer, int32, int64, _float, binary, date, dateTime, password);
@@ -56,8 +56,8 @@ Name | Type | Description | Notes
5656
**int64** | **Long**| None | [optional]
5757
**_float** | **Float**| None | [optional]
5858
**binary** | **byte[]**| None | [optional]
59-
**date** | **Date**| None | [optional]
60-
**dateTime** | **Date**| None | [optional]
59+
**date** | **LocalDate**| None | [optional]
60+
**dateTime** | **DateTime**| None | [optional]
6161
**password** | **String**| None | [optional]
6262

6363
### Return type

samples/client/petstore/java/okhttp-gson/docs/FormatTest.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ Name | Type | Description | Notes
1313
**string** | **String** | | [optional]
1414
**_byte** | **byte[]** | |
1515
**binary** | **byte[]** | | [optional]
16-
**date** | [**Date**](Date.md) | |
17-
**dateTime** | [**Date**](Date.md) | | [optional]
16+
**date** | [**LocalDate**](LocalDate.md) | |
17+
**dateTime** | [**DateTime**](DateTime.md) | | [optional]
1818
**uuid** | **String** | | [optional]
1919
**password** | **String** | |
2020

0 commit comments

Comments
 (0)