Skip to content

Commit ffc9ed1

Browse files
committed
Merge branch 'cbornet-joda_retrofit_1'
2 parents 216d4b8 + 3f51ff3 commit ffc9ed1

File tree

22 files changed

+492
-630
lines changed

22 files changed

+492
-630
lines changed

bin/java-petstore-retrofit.sh

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ 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-retrofit.json -o samples/client/petstore/java/retrofit"
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-retrofit.json -o samples/client/petstore/java/retrofit -DdateLibrary=joda,hideGenerationTimestamp=true"
3030

31+
echo "Removing files and folders under samples/client/petstore/java/retrofit/src/main"
32+
rm -rf samples/client/petstore/java/retrofit/src/main
33+
find samples/client/petstore/java/retrofit -maxdepth 1 -type f ! -name "README.md" -exec rm {} +
3134
java $JAVA_OPTS -jar $executable $ags

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

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ import java.util.Map;
99

1010
import org.apache.oltu.oauth2.client.request.OAuthClientRequest.AuthenticationRequestBuilder;
1111
import org.apache.oltu.oauth2.client.request.OAuthClientRequest.TokenRequestBuilder;
12+
import org.joda.time.DateTime;
13+
import org.joda.time.LocalDate;
14+
import org.joda.time.format.DateTimeFormatter;
15+
import org.joda.time.format.ISODateTimeFormat;
1216

1317
import retrofit.RestAdapter;
1418
import retrofit.client.OkClient;
@@ -22,6 +26,9 @@ import retrofit.mime.TypedOutput;
2226
import com.google.gson.Gson;
2327
import com.google.gson.GsonBuilder;
2428
import com.google.gson.JsonParseException;
29+
import com.google.gson.TypeAdapter;
30+
import com.google.gson.stream.JsonReader;
31+
import com.google.gson.stream.JsonWriter;
2532
import com.squareup.okhttp.Interceptor;
2633
import com.squareup.okhttp.OkHttpClient;
2734

@@ -108,6 +115,8 @@ public class ApiClient {
108115
public void createDefaultAdapter() {
109116
Gson gson = new GsonBuilder()
110117
.setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ")
118+
.registerTypeAdapter(DateTime.class, new DateTimeTypeAdapter())
119+
.registerTypeAdapter(LocalDate.class, new LocalDateTypeAdapter())
111120
.create();
112121
113122
okClient = new OkHttpClient();
@@ -339,3 +348,61 @@ class GsonConverterWrapper implements Converter {
339348

340349
}
341350
}
351+
352+
/**
353+
* Gson TypeAdapter for Joda DateTime type
354+
*/
355+
class DateTimeTypeAdapter extends TypeAdapter<DateTime> {
356+
357+
private final DateTimeFormatter formatter = ISODateTimeFormat.dateTime();
358+
359+
@Override
360+
public void write(JsonWriter out, DateTime date) throws IOException {
361+
if (date == null) {
362+
out.nullValue();
363+
} else {
364+
out.value(formatter.print(date));
365+
}
366+
}
367+
368+
@Override
369+
public DateTime read(JsonReader in) throws IOException {
370+
switch (in.peek()) {
371+
case NULL:
372+
in.nextNull();
373+
return null;
374+
default:
375+
String date = in.nextString();
376+
return formatter.parseDateTime(date);
377+
}
378+
}
379+
}
380+
381+
/**
382+
* Gson TypeAdapter for Joda DateTime type
383+
*/
384+
class LocalDateTypeAdapter extends TypeAdapter<LocalDate> {
385+
386+
private final DateTimeFormatter formatter = ISODateTimeFormat.date();
387+
388+
@Override
389+
public void write(JsonWriter out, LocalDate date) throws IOException {
390+
if (date == null) {
391+
out.nullValue();
392+
} else {
393+
out.value(formatter.print(date));
394+
}
395+
}
396+
397+
@Override
398+
public LocalDate read(JsonReader in) throws IOException {
399+
switch (in.peek()) {
400+
case NULL:
401+
in.nextNull();
402+
return null;
403+
default:
404+
String date = in.nextString();
405+
return formatter.parseLocalDate(date);
406+
}
407+
}
408+
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,12 +99,14 @@ ext {
9999
retrofit_version = "1.9.0"
100100
swagger_annotations_version = "1.5.8"
101101
junit_version = "4.12"
102+
jodatime_version = "2.9.3"
102103
}
103104

104105
dependencies {
105106
compile "com.squareup.okhttp:okhttp:$okhttp_version"
106107
compile "com.squareup.retrofit:retrofit:$retrofit_version"
107108
compile "io.swagger:swagger-annotations:$swagger_annotations_version"
108109
compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:$oltu_version"
110+
compile "joda-time:joda-time:$jodatime_version"
109111
testCompile "junit:junit:$junit_version"
110112
}

modules/swagger-codegen/src/main/resources/Java/libraries/retrofit/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.retrofit" % "retrofit" % "1.9.0" % "compile",
1414
"io.swagger" % "swagger-annotations" % "1.5.8" % "compile",
1515
"org.apache.oltu.oauth2" % "org.apache.oltu.oauth2.client" % "1.0.1" % "compile",
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/retrofit/pom.mustache

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,11 @@
127127
<artifactId>okhttp</artifactId>
128128
<version>${okhttp-version}</version>
129129
</dependency>
130+
<dependency>
131+
<groupId>joda-time</groupId>
132+
<artifactId>joda-time</artifactId>
133+
<version>${jodatime-version}</version>
134+
</dependency>
130135

131136
<!-- test dependencies -->
132137
<dependency>
@@ -140,6 +145,7 @@
140145
<swagger-core-version>1.5.8</swagger-core-version>
141146
<retrofit-version>1.9.0</retrofit-version>
142147
<okhttp-version>2.7.5</okhttp-version>
148+
<jodatime-version>2.9.3</jodatime-version>
143149
<oltu-version>1.0.1</oltu-version>
144150
<maven-plugin-version>1.0.0</maven-plugin-version>
145151
<junit-version>4.12</junit-version>

samples/client/petstore/java/retrofit/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,12 +99,14 @@ ext {
9999
retrofit_version = "1.9.0"
100100
swagger_annotations_version = "1.5.8"
101101
junit_version = "4.12"
102+
jodatime_version = "2.9.3"
102103
}
103104

104105
dependencies {
105106
compile "com.squareup.okhttp:okhttp:$okhttp_version"
106107
compile "com.squareup.retrofit:retrofit:$retrofit_version"
107108
compile "io.swagger:swagger-annotations:$swagger_annotations_version"
108109
compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:$oltu_version"
110+
compile "joda-time:joda-time:$jodatime_version"
109111
testCompile "junit:junit:$junit_version"
110112
}

samples/client/petstore/java/retrofit/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.retrofit" % "retrofit" % "1.9.0" % "compile",
1414
"io.swagger" % "swagger-annotations" % "1.5.8" % "compile",
1515
"org.apache.oltu.oauth2" % "org.apache.oltu.oauth2.client" % "1.0.1" % "compile",
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/retrofit/gradlew

100755100644
File mode changed.

samples/client/petstore/java/retrofit/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,11 @@
127127
<artifactId>okhttp</artifactId>
128128
<version>${okhttp-version}</version>
129129
</dependency>
130+
<dependency>
131+
<groupId>joda-time</groupId>
132+
<artifactId>joda-time</artifactId>
133+
<version>${jodatime-version}</version>
134+
</dependency>
130135

131136
<!-- test dependencies -->
132137
<dependency>
@@ -140,6 +145,7 @@
140145
<swagger-core-version>1.5.8</swagger-core-version>
141146
<retrofit-version>1.9.0</retrofit-version>
142147
<okhttp-version>2.7.5</okhttp-version>
148+
<jodatime-version>2.9.3</jodatime-version>
143149
<oltu-version>1.0.1</oltu-version>
144150
<maven-plugin-version>1.0.0</maven-plugin-version>
145151
<junit-version>4.12</junit-version>

samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/ApiClient.java

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@
99

1010
import org.apache.oltu.oauth2.client.request.OAuthClientRequest.AuthenticationRequestBuilder;
1111
import org.apache.oltu.oauth2.client.request.OAuthClientRequest.TokenRequestBuilder;
12+
import org.joda.time.DateTime;
13+
import org.joda.time.LocalDate;
14+
import org.joda.time.format.DateTimeFormatter;
15+
import org.joda.time.format.ISODateTimeFormat;
1216

1317
import retrofit.RestAdapter;
1418
import retrofit.client.OkClient;
@@ -22,6 +26,9 @@
2226
import com.google.gson.Gson;
2327
import com.google.gson.GsonBuilder;
2428
import com.google.gson.JsonParseException;
29+
import com.google.gson.TypeAdapter;
30+
import com.google.gson.stream.JsonReader;
31+
import com.google.gson.stream.JsonWriter;
2532
import com.squareup.okhttp.Interceptor;
2633
import com.squareup.okhttp.OkHttpClient;
2734

@@ -107,6 +114,8 @@ public ApiClient(String authName, String clientId, String secret, String usernam
107114
public void createDefaultAdapter() {
108115
Gson gson = new GsonBuilder()
109116
.setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ")
117+
.registerTypeAdapter(DateTime.class, new DateTimeTypeAdapter())
118+
.registerTypeAdapter(LocalDate.class, new LocalDateTypeAdapter())
110119
.create();
111120

112121
okClient = new OkHttpClient();
@@ -338,3 +347,61 @@ private byte[] readInBytes(TypedInput body) throws ConversionException {
338347

339348
}
340349
}
350+
351+
/**
352+
* Gson TypeAdapter for Joda DateTime type
353+
*/
354+
class DateTimeTypeAdapter extends TypeAdapter<DateTime> {
355+
356+
private final DateTimeFormatter formatter = ISODateTimeFormat.dateTime();
357+
358+
@Override
359+
public void write(JsonWriter out, DateTime date) throws IOException {
360+
if (date == null) {
361+
out.nullValue();
362+
} else {
363+
out.value(formatter.print(date));
364+
}
365+
}
366+
367+
@Override
368+
public DateTime read(JsonReader in) throws IOException {
369+
switch (in.peek()) {
370+
case NULL:
371+
in.nextNull();
372+
return null;
373+
default:
374+
String date = in.nextString();
375+
return formatter.parseDateTime(date);
376+
}
377+
}
378+
}
379+
380+
/**
381+
* Gson TypeAdapter for Joda DateTime type
382+
*/
383+
class LocalDateTypeAdapter extends TypeAdapter<LocalDate> {
384+
385+
private final DateTimeFormatter formatter = ISODateTimeFormat.date();
386+
387+
@Override
388+
public void write(JsonWriter out, LocalDate date) throws IOException {
389+
if (date == null) {
390+
out.nullValue();
391+
} else {
392+
out.value(formatter.print(date));
393+
}
394+
}
395+
396+
@Override
397+
public LocalDate read(JsonReader in) throws IOException {
398+
switch (in.peek()) {
399+
case NULL:
400+
in.nextNull();
401+
return null;
402+
default:
403+
String date = in.nextString();
404+
return formatter.parseLocalDate(date);
405+
}
406+
}
407+
}

0 commit comments

Comments
 (0)