forked from loafle/openapi-generator-original
add support for jsr310 dates to okhttp-gson client
This commit is contained in:
parent
79dc34266f
commit
d29a5537bc
@ -26,7 +26,7 @@ fi
|
|||||||
|
|
||||||
# if you've executed sbt assembly previously it will use that instead.
|
# if you've executed sbt assembly previously it will use that instead.
|
||||||
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties"
|
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties"
|
||||||
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"
|
ags="$@ generate -t modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson -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"
|
||||||
|
|
||||||
rm -rf samples/client/petstore/java/okhttp-gson/src/main
|
rm -rf samples/client/petstore/java/okhttp-gson/src/main
|
||||||
find samples/client/petstore/java/okhttp-gson -maxdepth 1 -type f ! -name "README.md" -exec rm {} +
|
find samples/client/petstore/java/okhttp-gson -maxdepth 1 -type f ! -name "README.md" -exec rm {} +
|
||||||
|
@ -21,10 +21,17 @@ import java.io.StringReader;
|
|||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
{{^java8}}
|
||||||
import org.joda.time.DateTime;
|
import org.joda.time.DateTime;
|
||||||
import org.joda.time.LocalDate;
|
import org.joda.time.LocalDate;
|
||||||
import org.joda.time.format.DateTimeFormatter;
|
import org.joda.time.format.DateTimeFormatter;
|
||||||
import org.joda.time.format.ISODateTimeFormat;
|
import org.joda.time.format.ISODateTimeFormat;
|
||||||
|
{{/java8}}
|
||||||
|
{{#java8}}
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.OffsetDateTime;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
|
{{/java8}}
|
||||||
|
|
||||||
public class JSON {
|
public class JSON {
|
||||||
private ApiClient apiClient;
|
private ApiClient apiClient;
|
||||||
@ -39,7 +46,12 @@ public class JSON {
|
|||||||
this.apiClient = apiClient;
|
this.apiClient = apiClient;
|
||||||
gson = new GsonBuilder()
|
gson = new GsonBuilder()
|
||||||
.registerTypeAdapter(Date.class, new DateAdapter(apiClient))
|
.registerTypeAdapter(Date.class, new DateAdapter(apiClient))
|
||||||
|
{{^java8}}
|
||||||
.registerTypeAdapter(DateTime.class, new DateTimeTypeAdapter())
|
.registerTypeAdapter(DateTime.class, new DateTimeTypeAdapter())
|
||||||
|
{{/java8}}
|
||||||
|
{{#java8}}
|
||||||
|
.registerTypeAdapter(OffsetDateTime.class, new OffsetDateTimeTypeAdapter())
|
||||||
|
{{/java8}}
|
||||||
.registerTypeAdapter(LocalDate.class, new LocalDateTypeAdapter())
|
.registerTypeAdapter(LocalDate.class, new LocalDateTypeAdapter())
|
||||||
.create();
|
.create();
|
||||||
}
|
}
|
||||||
@ -154,6 +166,7 @@ class DateAdapter implements JsonSerializer<Date>, JsonDeserializer<Date> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{{^java8}}
|
||||||
/**
|
/**
|
||||||
* Gson TypeAdapter for Joda DateTime type
|
* Gson TypeAdapter for Joda DateTime type
|
||||||
*/
|
*/
|
||||||
@ -211,4 +224,67 @@ class LocalDateTypeAdapter extends TypeAdapter<LocalDate> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
{{/java8}}
|
||||||
|
{{#java8}}
|
||||||
|
/**
|
||||||
|
* Gson TypeAdapter for jsr310 OffsetDateTime type
|
||||||
|
*/
|
||||||
|
class OffsetDateTimeTypeAdapter extends TypeAdapter<OffsetDateTime> {
|
||||||
|
|
||||||
|
private final DateTimeFormatter formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void write(JsonWriter out, OffsetDateTime date) throws IOException {
|
||||||
|
if (date == null) {
|
||||||
|
out.nullValue();
|
||||||
|
} else {
|
||||||
|
out.value(formatter.format(date));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public OffsetDateTime read(JsonReader in) throws IOException {
|
||||||
|
switch (in.peek()) {
|
||||||
|
case NULL:
|
||||||
|
in.nextNull();
|
||||||
|
return null;
|
||||||
|
default:
|
||||||
|
String date = in.nextString();
|
||||||
|
if (date.endsWith("+0000")) {
|
||||||
|
date = date.substring(0, date.length()-5) + "Z";
|
||||||
|
}
|
||||||
|
|
||||||
|
return OffsetDateTime.parse(date, formatter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gson TypeAdapter for jsr310 LocalDate type
|
||||||
|
*/
|
||||||
|
class LocalDateTypeAdapter extends TypeAdapter<LocalDate> {
|
||||||
|
|
||||||
|
private final DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void write(JsonWriter out, LocalDate date) throws IOException {
|
||||||
|
if (date == null) {
|
||||||
|
out.nullValue();
|
||||||
|
} else {
|
||||||
|
out.value(formatter.format(date));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public LocalDate read(JsonReader in) throws IOException {
|
||||||
|
switch (in.peek()) {
|
||||||
|
case NULL:
|
||||||
|
in.nextNull();
|
||||||
|
return null;
|
||||||
|
default:
|
||||||
|
String date = in.nextString();
|
||||||
|
return LocalDate.parse(date, formatter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{{/java8}}
|
@ -78,8 +78,8 @@ if(hasProperty('target') && target == 'android') {
|
|||||||
apply plugin: 'java'
|
apply plugin: 'java'
|
||||||
apply plugin: 'maven'
|
apply plugin: 'maven'
|
||||||
|
|
||||||
sourceCompatibility = JavaVersion.VERSION_1_7
|
sourceCompatibility = JavaVersion.VERSION_{{^java8}}1_7{{/java8}}{{#java8}}1_8{{/java8}}
|
||||||
targetCompatibility = JavaVersion.VERSION_1_7
|
targetCompatibility = JavaVersion.VERSION_{{^java8}}1_7{{/java8}}{{#java8}}1_8{{/java8}}
|
||||||
|
|
||||||
install {
|
install {
|
||||||
repositories.mavenInstaller {
|
repositories.mavenInstaller {
|
||||||
@ -98,6 +98,8 @@ dependencies {
|
|||||||
compile 'com.squareup.okhttp:okhttp:2.7.5'
|
compile 'com.squareup.okhttp:okhttp:2.7.5'
|
||||||
compile 'com.squareup.okhttp:logging-interceptor:2.7.5'
|
compile 'com.squareup.okhttp:logging-interceptor:2.7.5'
|
||||||
compile 'com.google.code.gson:gson:2.6.2'
|
compile 'com.google.code.gson:gson:2.6.2'
|
||||||
|
{{^java8}}
|
||||||
compile 'joda-time:joda-time:2.9.3'
|
compile 'joda-time:joda-time:2.9.3'
|
||||||
|
{{/java8}}
|
||||||
testCompile 'junit:junit:4.12'
|
testCompile 'junit:junit:4.12'
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,9 @@ lazy val root = (project in file(".")).
|
|||||||
"com.squareup.okhttp" % "okhttp" % "2.7.5",
|
"com.squareup.okhttp" % "okhttp" % "2.7.5",
|
||||||
"com.squareup.okhttp" % "logging-interceptor" % "2.7.5",
|
"com.squareup.okhttp" % "logging-interceptor" % "2.7.5",
|
||||||
"com.google.code.gson" % "gson" % "2.6.2",
|
"com.google.code.gson" % "gson" % "2.6.2",
|
||||||
|
{{^java8}}
|
||||||
"joda-time" % "joda-time" % "2.9.3" % "compile",
|
"joda-time" % "joda-time" % "2.9.3" % "compile",
|
||||||
|
{{/java8}}
|
||||||
"junit" % "junit" % "4.12" % "test",
|
"junit" % "junit" % "4.12" % "test",
|
||||||
"com.novocode" % "junit-interface" % "0.10" % "test"
|
"com.novocode" % "junit-interface" % "0.10" % "test"
|
||||||
)
|
)
|
||||||
|
@ -96,15 +96,6 @@
|
|||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-compiler-plugin</artifactId>
|
|
||||||
<version>2.3.2</version>
|
|
||||||
<configuration>
|
|
||||||
<source>1.7</source>
|
|
||||||
<target>1.7</target>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
@ -128,11 +119,13 @@
|
|||||||
<artifactId>gson</artifactId>
|
<artifactId>gson</artifactId>
|
||||||
<version>${gson-version}</version>
|
<version>${gson-version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
{{^java8}}
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>joda-time</groupId>
|
<groupId>joda-time</groupId>
|
||||||
<artifactId>joda-time</artifactId>
|
<artifactId>joda-time</artifactId>
|
||||||
<version>${jodatime-version}</version>
|
<version>${jodatime-version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
{{/java8}}
|
||||||
|
|
||||||
<!-- test dependencies -->
|
<!-- test dependencies -->
|
||||||
<dependency>
|
<dependency>
|
||||||
@ -143,6 +136,9 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<properties>
|
<properties>
|
||||||
|
<java.version>{{#java8}}1.8{{/java8}}{{^java8}}1.7{{/java8}}</java.version>
|
||||||
|
<maven.compiler.source>${java.version}</maven.compiler.source>
|
||||||
|
<maven.compiler.target>${java.version}</maven.compiler.target>
|
||||||
<swagger-core-version>1.5.9</swagger-core-version>
|
<swagger-core-version>1.5.9</swagger-core-version>
|
||||||
<okhttp-version>2.7.5</okhttp-version>
|
<okhttp-version>2.7.5</okhttp-version>
|
||||||
<gson-version>2.6.2</gson-version>
|
<gson-version>2.6.2</gson-version>
|
||||||
|
@ -96,15 +96,6 @@
|
|||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-compiler-plugin</artifactId>
|
|
||||||
<version>2.3.2</version>
|
|
||||||
<configuration>
|
|
||||||
<source>1.7</source>
|
|
||||||
<target>1.7</target>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
@ -132,7 +123,7 @@
|
|||||||
<groupId>joda-time</groupId>
|
<groupId>joda-time</groupId>
|
||||||
<artifactId>joda-time</artifactId>
|
<artifactId>joda-time</artifactId>
|
||||||
<version>${jodatime-version}</version>
|
<version>${jodatime-version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- test dependencies -->
|
<!-- test dependencies -->
|
||||||
<dependency>
|
<dependency>
|
||||||
@ -143,6 +134,9 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<properties>
|
<properties>
|
||||||
|
<java.version>1.7</java.version>
|
||||||
|
<maven.compiler.source>${java.version}</maven.compiler.source>
|
||||||
|
<maven.compiler.target>${java.version}</maven.compiler.target>
|
||||||
<swagger-core-version>1.5.9</swagger-core-version>
|
<swagger-core-version>1.5.9</swagger-core-version>
|
||||||
<okhttp-version>2.7.5</okhttp-version>
|
<okhttp-version>2.7.5</okhttp-version>
|
||||||
<gson-version>2.6.2</gson-version>
|
<gson-version>2.6.2</gson-version>
|
||||||
|
@ -173,8 +173,8 @@ public class ApiClient {
|
|||||||
|
|
||||||
// Setup authentications (key: authentication name, value: authentication).
|
// Setup authentications (key: authentication name, value: authentication).
|
||||||
authentications = new HashMap<String, Authentication>();
|
authentications = new HashMap<String, Authentication>();
|
||||||
authentications.put("api_key", new ApiKeyAuth("header", "api_key"));
|
|
||||||
authentications.put("petstore_auth", new OAuth());
|
authentications.put("petstore_auth", new OAuth());
|
||||||
|
authentications.put("api_key", new ApiKeyAuth("header", "api_key"));
|
||||||
// Prevent the authentications from being modified.
|
// Prevent the authentications from being modified.
|
||||||
authentications = Collections.unmodifiableMap(authentications);
|
authentications = Collections.unmodifiableMap(authentications);
|
||||||
}
|
}
|
||||||
|
@ -234,4 +234,3 @@ class LocalDateTypeAdapter extends TypeAdapter<LocalDate> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,8 +39,8 @@ import com.google.gson.reflect.TypeToken;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import org.joda.time.LocalDate;
|
import org.joda.time.LocalDate;
|
||||||
import org.joda.time.DateTime;
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import org.joda.time.DateTime;
|
||||||
|
|
||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -39,8 +39,8 @@ import com.google.gson.reflect.TypeToken;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import io.swagger.client.model.Pet;
|
import io.swagger.client.model.Pet;
|
||||||
import java.io.File;
|
|
||||||
import io.swagger.client.model.ModelApiResponse;
|
import io.swagger.client.model.ModelApiResponse;
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -10,8 +10,6 @@ import java.lang.reflect.Field;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
|
|
||||||
import org.joda.time.DateTime;
|
|
||||||
import org.joda.time.DateTimeZone;
|
|
||||||
import org.junit.*;
|
import org.junit.*;
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
@ -63,7 +61,7 @@ public class StoreApiTest {
|
|||||||
assertEquals(order.getId(), fetched.getId());
|
assertEquals(order.getId(), fetched.getId());
|
||||||
assertEquals(order.getPetId(), fetched.getPetId());
|
assertEquals(order.getPetId(), fetched.getPetId());
|
||||||
assertEquals(order.getQuantity(), fetched.getQuantity());
|
assertEquals(order.getQuantity(), fetched.getQuantity());
|
||||||
assertEquals(order.getShipDate().withZone(DateTimeZone.UTC), fetched.getShipDate().withZone(DateTimeZone.UTC));
|
assertEquals(order.getShipDate().toInstant(), fetched.getShipDate().toInstant());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -88,7 +86,7 @@ public class StoreApiTest {
|
|||||||
Order order = new Order();
|
Order order = new Order();
|
||||||
order.setPetId(new Long(200));
|
order.setPetId(new Long(200));
|
||||||
order.setQuantity(new Integer(13));
|
order.setQuantity(new Integer(13));
|
||||||
order.setShipDate(DateTime.now());
|
order.setShipDate(org.joda.time.DateTime.now());
|
||||||
order.setStatus(Order.StatusEnum.PLACED);
|
order.setStatus(Order.StatusEnum.PLACED);
|
||||||
order.setComplete(true);
|
order.setComplete(true);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user