[Java] Add back byte array enhancement (#7546)

* add back byte array enhanceement

* add okio dependency to java rest assured api client
This commit is contained in:
William Cheng 2018-02-01 21:49:22 +08:00 committed by GitHub
parent 9c79297d6a
commit fec0363f7d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 97 additions and 17 deletions

View File

@ -26,6 +26,7 @@ import org.threeten.bp.format.DateTimeFormatter;
{{/threetenbp}}
import {{modelPackage}}.*;
import okio.ByteString;
import java.io.IOException;
import java.io.StringReader;
@ -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()
@ -105,6 +107,7 @@ public class JSON {
.registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter)
.registerTypeAdapter(LocalDate.class, localDateTypeAdapter)
{{/jsr310}}
.registerTypeAdapter(byte[].class, byteArrayAdapter)
.create();
}
@ -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

View File

@ -105,6 +105,7 @@ ext {
{{#threetenbp}}
threetenbp_version = "1.3.5"
{{/threetenbp}}
okio_version = "1.13.0"
}
dependencies {
@ -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"
}

View File

@ -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}}
@ -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"
)

View File

@ -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>
@ -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>

View File

@ -100,6 +100,7 @@ ext {
gson_version = "2.6.1"
gson_fire_version = "1.8.2"
threetenbp_version = "1.3.5"
okio_version = "1.13.0"
}
dependencies {
@ -107,5 +108,6 @@ dependencies {
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"
}

View File

@ -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"
)

View File

@ -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>
@ -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>

View File

@ -28,6 +28,7 @@ import org.threeten.bp.OffsetDateTime;
import org.threeten.bp.format.DateTimeFormatter;
import io.swagger.client.model.*;
import okio.ByteString;
import java.io.IOException;
import java.io.StringReader;
@ -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()
@ -87,6 +89,7 @@ public class JSON {
.registerTypeAdapter(java.sql.Date.class, sqlDateTypeAdapter)
.registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter)
.registerTypeAdapter(LocalDate.class, localDateTypeAdapter)
.registerTypeAdapter(byte[].class, byteArrayAdapter)
.create();
}
@ -153,6 +156,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();
}
}
}
/**
* Gson TypeAdapter for JSR310 OffsetDateTime type
*/