Skip to content

Commit fec0363

Browse files
authored
[Java] Add back byte array enhancement (#7546)
* add back byte array enhanceement * add okio dependency to java rest assured api client
1 parent 9c79297 commit fec0363

File tree

8 files changed

+97
-17
lines changed

8 files changed

+97
-17
lines changed

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

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import org.threeten.bp.format.DateTimeFormatter;
2626
{{/threetenbp}}
2727

2828
import {{modelPackage}}.*;
29+
import okio.ByteString;
2930

3031
import java.io.IOException;
3132
import java.io.StringReader;
@@ -55,6 +56,7 @@ public class JSON {
5556
private OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter();
5657
private LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter();
5758
{{/jsr310}}
59+
private ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter();
5860

5961
public static GsonBuilder createGson() {
6062
GsonFireBuilder fireBuilder = new GsonFireBuilder()
@@ -105,6 +107,7 @@ public class JSON {
105107
.registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter)
106108
.registerTypeAdapter(LocalDate.class, localDateTypeAdapter)
107109
{{/jsr310}}
110+
.registerTypeAdapter(byte[].class, byteArrayAdapter)
108111
.create();
109112
}
110113

@@ -171,6 +174,34 @@ public class JSON {
171174
}
172175
}
173176

177+
/**
178+
* Gson TypeAdapter for Byte Array type
179+
*/
180+
public class ByteArrayAdapter extends TypeAdapter<byte[]> {
181+
182+
@Override
183+
public void write(JsonWriter out, byte[] value) throws IOException {
184+
if (value == null) {
185+
out.nullValue();
186+
} else {
187+
out.value(ByteString.of(value).base64());
188+
}
189+
}
190+
191+
@Override
192+
public byte[] read(JsonReader in) throws IOException {
193+
switch (in.peek()) {
194+
case NULL:
195+
in.nextNull();
196+
return null;
197+
default:
198+
String bytesAsBase64 = in.nextString();
199+
ByteString byteString = ByteString.decodeBase64(bytesAsBase64);
200+
return byteString.toByteArray();
201+
}
202+
}
203+
}
204+
174205
{{#joda}}
175206
/**
176207
* Gson TypeAdapter for Joda DateTime type

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ ext {
105105
{{#threetenbp}}
106106
threetenbp_version = "1.3.5"
107107
{{/threetenbp}}
108+
okio_version = "1.13.0"
108109
}
109110

110111
dependencies {
@@ -118,5 +119,6 @@ dependencies {
118119
{{#threetenbp}}
119120
compile "org.threeten:threetenbp:$threetenbp_version"
120121
{{/threetenbp}}
122+
compile "com.squareup.okio:okio:$okio_version"
121123
testCompile "junit:junit:$junit_version"
122124
}

modules/swagger-codegen/src/main/resources/Java/libraries/rest-assured/build.sbt.mustache

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ lazy val root = (project in file(".")).
1010
resolvers += Resolver.mavenLocal,
1111
libraryDependencies ++= Seq(
1212
"io.swagger" % "swagger-annotations" % "1.5.15",
13-
"io.rest-assured" % "scala-support" % "3.0.6"
13+
"io.rest-assured" % "scala-support" % "3.0.6",
1414
"com.google.code.gson" % "gson" % "2.6.1",
1515
"io.gsonfire" % "gson-fire" % "1.8.2" % "compile",
1616
{{#joda}}
@@ -19,6 +19,7 @@ lazy val root = (project in file(".")).
1919
{{#threetenbp}}
2020
"org.threeten" % "threetenbp" % "1.3.5" % "compile",
2121
{{/threetenbp}}
22+
"com.squareup.okio" % "okio" % "1.13.0" % "compile",
2223
"junit" % "junit" % "4.12" % "test",
2324
"com.novocode" % "junit-interface" % "0.10" % "test"
2425
)

modules/swagger-codegen/src/main/resources/Java/libraries/rest-assured/pom.mustache

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -212,24 +212,29 @@
212212
<version>${gson-version}</version>
213213
</dependency>
214214
{{#joda}}
215-
<dependency>
216-
<groupId>joda-time</groupId>
217-
<artifactId>joda-time</artifactId>
218-
<version>${jodatime-version}</version>
219-
</dependency>
215+
<dependency>
216+
<groupId>joda-time</groupId>
217+
<artifactId>joda-time</artifactId>
218+
<version>${jodatime-version}</version>
219+
</dependency>
220220
{{/joda}}
221221
{{#threetenbp}}
222-
<dependency>
223-
<groupId>org.threeten</groupId>
224-
<artifactId>threetenbp</artifactId>
225-
<version>${threetenbp-version}</version>
226-
</dependency>
222+
<dependency>
223+
<groupId>org.threeten</groupId>
224+
<artifactId>threetenbp</artifactId>
225+
<version>${threetenbp-version}</version>
226+
</dependency>
227227
{{/threetenbp}}
228228
<dependency>
229229
<groupId>io.gsonfire</groupId>
230230
<artifactId>gson-fire</artifactId>
231231
<version>${gson-fire-version}</version>
232232
</dependency>
233+
<dependency>
234+
<groupId>com.squareup.okio</groupId>
235+
<artifactId>okio</artifactId>
236+
<version>${okio-version}</version>
237+
</dependency>
233238
<!-- test dependencies -->
234239
<dependency>
235240
<groupId>junit</groupId>
@@ -251,6 +256,7 @@
251256
{{#threetenbp}}
252257
<threetenbp-version>1.3.5</threetenbp-version>
253258
{{/threetenbp}}
259+
<okio-version>1.13.0</okio-version>
254260
<junit-version>4.12</junit-version>
255261
</properties>
256262
</project>

samples/client/petstore/java/rest-assured/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,12 +100,14 @@ ext {
100100
gson_version = "2.6.1"
101101
gson_fire_version = "1.8.2"
102102
threetenbp_version = "1.3.5"
103+
okio_version = "1.13.0"
103104
}
104105

105106
dependencies {
106107
compile "io.swagger:swagger-annotations:$swagger_annotations_version"
107108
compile "io.rest-assured:scala-support:$rest_assured_version"
108109
compile "io.gsonfire:gson-fire:$gson_fire_version"
109110
compile "org.threeten:threetenbp:$threetenbp_version"
111+
compile "com.squareup.okio:okio:$okio_version"
110112
testCompile "junit:junit:$junit_version"
111113
}

samples/client/petstore/java/rest-assured/build.sbt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@ lazy val root = (project in file(".")).
1010
resolvers += Resolver.mavenLocal,
1111
libraryDependencies ++= Seq(
1212
"io.swagger" % "swagger-annotations" % "1.5.15",
13-
"io.rest-assured" % "scala-support" % "3.0.6"
13+
"io.rest-assured" % "scala-support" % "3.0.6",
1414
"com.google.code.gson" % "gson" % "2.6.1",
1515
"io.gsonfire" % "gson-fire" % "1.8.2" % "compile",
1616
"org.threeten" % "threetenbp" % "1.3.5" % "compile",
17+
"com.squareup.okio" % "okio" % "1.13.0" % "compile",
1718
"junit" % "junit" % "4.12" % "test",
1819
"com.novocode" % "junit-interface" % "0.10" % "test"
1920
)

samples/client/petstore/java/rest-assured/pom.xml

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -211,16 +211,21 @@
211211
<artifactId>gson</artifactId>
212212
<version>${gson-version}</version>
213213
</dependency>
214-
<dependency>
215-
<groupId>org.threeten</groupId>
216-
<artifactId>threetenbp</artifactId>
217-
<version>${threetenbp-version}</version>
218-
</dependency>
214+
<dependency>
215+
<groupId>org.threeten</groupId>
216+
<artifactId>threetenbp</artifactId>
217+
<version>${threetenbp-version}</version>
218+
</dependency>
219219
<dependency>
220220
<groupId>io.gsonfire</groupId>
221221
<artifactId>gson-fire</artifactId>
222222
<version>${gson-fire-version}</version>
223223
</dependency>
224+
<dependency>
225+
<groupId>com.squareup.okio</groupId>
226+
<artifactId>okio</artifactId>
227+
<version>${okio-version}</version>
228+
</dependency>
224229
<!-- test dependencies -->
225230
<dependency>
226231
<groupId>junit</groupId>
@@ -237,6 +242,7 @@
237242
<gson-fire-version>1.8.2</gson-fire-version>
238243
<maven-plugin-version>1.0.0</maven-plugin-version>
239244
<threetenbp-version>1.3.5</threetenbp-version>
245+
<okio-version>1.13.0</okio-version>
240246
<junit-version>4.12</junit-version>
241247
</properties>
242248
</project>

samples/client/petstore/java/rest-assured/src/main/java/io/swagger/client/JSON.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.threeten.bp.format.DateTimeFormatter;
2929

3030
import io.swagger.client.model.*;
31+
import okio.ByteString;
3132

3233
import java.io.IOException;
3334
import java.io.StringReader;
@@ -46,6 +47,7 @@ public class JSON {
4647
private SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter();
4748
private OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter();
4849
private LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter();
50+
private ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter();
4951

5052
public static GsonBuilder createGson() {
5153
GsonFireBuilder fireBuilder = new GsonFireBuilder()
@@ -87,6 +89,7 @@ public JSON() {
8789
.registerTypeAdapter(java.sql.Date.class, sqlDateTypeAdapter)
8890
.registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter)
8991
.registerTypeAdapter(LocalDate.class, localDateTypeAdapter)
92+
.registerTypeAdapter(byte[].class, byteArrayAdapter)
9093
.create();
9194
}
9295

@@ -153,6 +156,34 @@ public <T> T deserialize(String body, Type returnType) {
153156
}
154157
}
155158

159+
/**
160+
* Gson TypeAdapter for Byte Array type
161+
*/
162+
public class ByteArrayAdapter extends TypeAdapter<byte[]> {
163+
164+
@Override
165+
public void write(JsonWriter out, byte[] value) throws IOException {
166+
if (value == null) {
167+
out.nullValue();
168+
} else {
169+
out.value(ByteString.of(value).base64());
170+
}
171+
}
172+
173+
@Override
174+
public byte[] read(JsonReader in) throws IOException {
175+
switch (in.peek()) {
176+
case NULL:
177+
in.nextNull();
178+
return null;
179+
default:
180+
String bytesAsBase64 = in.nextString();
181+
ByteString byteString = ByteString.decodeBase64(bytesAsBase64);
182+
return byteString.toByteArray();
183+
}
184+
}
185+
}
186+
156187
/**
157188
* Gson TypeAdapter for JSR310 OffsetDateTime type
158189
*/

0 commit comments

Comments
 (0)