Skip to content

Commit

Permalink
[Java] Add back byte array enhancement (#7546)
Browse files Browse the repository at this point in the history
* add back byte array enhanceement

* add okio dependency to java rest assured api client
  • Loading branch information
wing328 committed Feb 1, 2018
1 parent 9c79297 commit fec0363
Show file tree
Hide file tree
Showing 8 changed files with 97 additions and 17 deletions.
31 changes: 31 additions & 0 deletions modules/swagger-codegen/src/main/resources/Java/JSON.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import org.threeten.bp.format.DateTimeFormatter;
{{/threetenbp}}

import {{modelPackage}}.*;
import okio.ByteString;

import java.io.IOException;
import java.io.StringReader;
Expand Down Expand Up @@ -55,6 +56,7 @@ public class JSON {
private OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter();
private LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter();
{{/jsr310}}
private ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter();

public static GsonBuilder createGson() {
GsonFireBuilder fireBuilder = new GsonFireBuilder()
Expand Down Expand Up @@ -105,6 +107,7 @@ public class JSON {
.registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter)
.registerTypeAdapter(LocalDate.class, localDateTypeAdapter)
{{/jsr310}}
.registerTypeAdapter(byte[].class, byteArrayAdapter)
.create();
}

Expand Down Expand Up @@ -171,6 +174,34 @@ public class JSON {
}
}

/**
* Gson TypeAdapter for Byte Array type
*/
public class ByteArrayAdapter extends TypeAdapter<byte[]> {
@Override
public void write(JsonWriter out, byte[] value) throws IOException {
if (value == null) {
out.nullValue();
} else {
out.value(ByteString.of(value).base64());
}
}

@Override
public byte[] read(JsonReader in) throws IOException {
switch (in.peek()) {
case NULL:
in.nextNull();
return null;
default:
String bytesAsBase64 = in.nextString();
ByteString byteString = ByteString.decodeBase64(bytesAsBase64);
return byteString.toByteArray();
}
}
}

{{#joda}}
/**
* Gson TypeAdapter for Joda DateTime type
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ ext {
{{#threetenbp}}
threetenbp_version = "1.3.5"
{{/threetenbp}}
okio_version = "1.13.0"
}

dependencies {
Expand All @@ -118,5 +119,6 @@ dependencies {
{{#threetenbp}}
compile "org.threeten:threetenbp:$threetenbp_version"
{{/threetenbp}}
compile "com.squareup.okio:okio:$okio_version"
testCompile "junit:junit:$junit_version"
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ lazy val root = (project in file(".")).
resolvers += Resolver.mavenLocal,
libraryDependencies ++= Seq(
"io.swagger" % "swagger-annotations" % "1.5.15",
"io.rest-assured" % "scala-support" % "3.0.6"
"io.rest-assured" % "scala-support" % "3.0.6",
"com.google.code.gson" % "gson" % "2.6.1",
"io.gsonfire" % "gson-fire" % "1.8.2" % "compile",
{{#joda}}
Expand All @@ -19,6 +19,7 @@ lazy val root = (project in file(".")).
{{#threetenbp}}
"org.threeten" % "threetenbp" % "1.3.5" % "compile",
{{/threetenbp}}
"com.squareup.okio" % "okio" % "1.13.0" % "compile",
"junit" % "junit" % "4.12" % "test",
"com.novocode" % "junit-interface" % "0.10" % "test"
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -212,24 +212,29 @@
<version>${gson-version}</version>
</dependency>
{{#joda}}
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>${jodatime-version}</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>${jodatime-version}</version>
</dependency>
{{/joda}}
{{#threetenbp}}
<dependency>
<groupId>org.threeten</groupId>
<artifactId>threetenbp</artifactId>
<version>${threetenbp-version}</version>
</dependency>
<dependency>
<groupId>org.threeten</groupId>
<artifactId>threetenbp</artifactId>
<version>${threetenbp-version}</version>
</dependency>
{{/threetenbp}}
<dependency>
<groupId>io.gsonfire</groupId>
<artifactId>gson-fire</artifactId>
<version>${gson-fire-version}</version>
</dependency>
<dependency>
<groupId>com.squareup.okio</groupId>
<artifactId>okio</artifactId>
<version>${okio-version}</version>
</dependency>
<!-- test dependencies -->
<dependency>
<groupId>junit</groupId>
Expand All @@ -251,6 +256,7 @@
{{#threetenbp}}
<threetenbp-version>1.3.5</threetenbp-version>
{{/threetenbp}}
<okio-version>1.13.0</okio-version>
<junit-version>4.12</junit-version>
</properties>
</project>
2 changes: 2 additions & 0 deletions samples/client/petstore/java/rest-assured/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -100,12 +100,14 @@ ext {
gson_version = "2.6.1"
gson_fire_version = "1.8.2"
threetenbp_version = "1.3.5"
okio_version = "1.13.0"
}

dependencies {
compile "io.swagger:swagger-annotations:$swagger_annotations_version"
compile "io.rest-assured:scala-support:$rest_assured_version"
compile "io.gsonfire:gson-fire:$gson_fire_version"
compile "org.threeten:threetenbp:$threetenbp_version"
compile "com.squareup.okio:okio:$okio_version"
testCompile "junit:junit:$junit_version"
}
3 changes: 2 additions & 1 deletion samples/client/petstore/java/rest-assured/build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,11 @@ lazy val root = (project in file(".")).
resolvers += Resolver.mavenLocal,
libraryDependencies ++= Seq(
"io.swagger" % "swagger-annotations" % "1.5.15",
"io.rest-assured" % "scala-support" % "3.0.6"
"io.rest-assured" % "scala-support" % "3.0.6",
"com.google.code.gson" % "gson" % "2.6.1",
"io.gsonfire" % "gson-fire" % "1.8.2" % "compile",
"org.threeten" % "threetenbp" % "1.3.5" % "compile",
"com.squareup.okio" % "okio" % "1.13.0" % "compile",
"junit" % "junit" % "4.12" % "test",
"com.novocode" % "junit-interface" % "0.10" % "test"
)
Expand Down
16 changes: 11 additions & 5 deletions samples/client/petstore/java/rest-assured/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -211,16 +211,21 @@
<artifactId>gson</artifactId>
<version>${gson-version}</version>
</dependency>
<dependency>
<groupId>org.threeten</groupId>
<artifactId>threetenbp</artifactId>
<version>${threetenbp-version}</version>
</dependency>
<dependency>
<groupId>org.threeten</groupId>
<artifactId>threetenbp</artifactId>
<version>${threetenbp-version}</version>
</dependency>
<dependency>
<groupId>io.gsonfire</groupId>
<artifactId>gson-fire</artifactId>
<version>${gson-fire-version}</version>
</dependency>
<dependency>
<groupId>com.squareup.okio</groupId>
<artifactId>okio</artifactId>
<version>${okio-version}</version>
</dependency>
<!-- test dependencies -->
<dependency>
<groupId>junit</groupId>
Expand All @@ -237,6 +242,7 @@
<gson-fire-version>1.8.2</gson-fire-version>
<maven-plugin-version>1.0.0</maven-plugin-version>
<threetenbp-version>1.3.5</threetenbp-version>
<okio-version>1.13.0</okio-version>
<junit-version>4.12</junit-version>
</properties>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import org.threeten.bp.format.DateTimeFormatter;

import io.swagger.client.model.*;
import okio.ByteString;

import java.io.IOException;
import java.io.StringReader;
Expand All @@ -46,6 +47,7 @@ public class JSON {
private SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter();
private OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter();
private LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter();
private ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter();

public static GsonBuilder createGson() {
GsonFireBuilder fireBuilder = new GsonFireBuilder()
Expand Down Expand Up @@ -87,6 +89,7 @@ public JSON() {
.registerTypeAdapter(java.sql.Date.class, sqlDateTypeAdapter)
.registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter)
.registerTypeAdapter(LocalDate.class, localDateTypeAdapter)
.registerTypeAdapter(byte[].class, byteArrayAdapter)
.create();
}

Expand Down Expand Up @@ -153,6 +156,34 @@ public <T> T deserialize(String body, Type returnType) {
}
}

/**
* Gson TypeAdapter for Byte Array type
*/
public class ByteArrayAdapter extends TypeAdapter<byte[]> {

@Override
public void write(JsonWriter out, byte[] value) throws IOException {
if (value == null) {
out.nullValue();
} else {
out.value(ByteString.of(value).base64());
}
}

@Override
public byte[] read(JsonReader in) throws IOException {
switch (in.peek()) {
case NULL:
in.nextNull();
return null;
default:
String bytesAsBase64 = in.nextString();
ByteString byteString = ByteString.decodeBase64(bytesAsBase64);
return byteString.toByteArray();
}
}
}

/**
* Gson TypeAdapter for JSR310 OffsetDateTime type
*/
Expand Down

0 comments on commit fec0363

Please sign in to comment.