Skip to content

Commit 39bdc53

Browse files
rlazoBrian Chen
authored andcommitted
Encode json payload as string instead of byte[] (#1014)
* Encode json payload as string instead of byte[]
1 parent 085139d commit 39bdc53

File tree

5 files changed

+18
-23
lines changed

5 files changed

+18
-23
lines changed

transport/transport-backend-cct/src/main/java/com/google/android/datatransport/cct/CctTransportBackend.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
import java.nio.ByteBuffer;
5454
import java.nio.channels.Channels;
5555
import java.nio.channels.WritableByteChannel;
56+
import java.nio.charset.Charset;
5657
import java.util.ArrayList;
5758
import java.util.Calendar;
5859
import java.util.HashMap;
@@ -211,7 +212,8 @@ private BatchedLogRequest getRequestBody(BackendRequest backendRequest) {
211212
if (encoding.equals(Encoding.of("proto"))) {
212213
event = LogEvent.protoBuilder(encodedPayload.getBytes());
213214
} else if (encoding.equals(Encoding.of("json"))) {
214-
event = LogEvent.jsonBuilder(encodedPayload.getBytes());
215+
event =
216+
LogEvent.jsonBuilder(new String(encodedPayload.getBytes(), Charset.forName("UTF-8")));
215217
} else {
216218
Logging.w(LOG_TAG, "Received event of unsupported encoding %s. Skipping...", encoding);
217219
continue;

transport/transport-backend-cct/src/main/java/com/google/android/datatransport/cct/internal/LogEvent.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public abstract class LogEvent {
3333

3434
@SuppressWarnings("mutable")
3535
@Nullable
36-
public abstract byte[] getSourceExtensionJsonProto3Bytes();
36+
public abstract String getSourceExtensionJsonProto3();
3737

3838
public abstract long getTimezoneOffsetSeconds();
3939

@@ -46,8 +46,8 @@ public static Builder protoBuilder(@NonNull byte[] sourceExtension) {
4646
}
4747

4848
@NonNull
49-
public static Builder jsonBuilder(@NonNull byte[] sourceJsonExtension) {
50-
return builder().setSourceExtensionJsonProto3Bytes(sourceJsonExtension);
49+
public static Builder jsonBuilder(@NonNull String sourceJsonExtension) {
50+
return builder().setSourceExtensionJsonProto3(sourceJsonExtension);
5151
}
5252

5353
private static Builder builder() {
@@ -69,7 +69,7 @@ public abstract static class Builder {
6969
abstract Builder setSourceExtension(@Nullable byte[] value);
7070

7171
@NonNull
72-
abstract Builder setSourceExtensionJsonProto3Bytes(@Nullable byte[] value);
72+
abstract Builder setSourceExtensionJsonProto3(@Nullable String value);
7373

7474
@NonNull
7575
public abstract Builder setTimezoneOffsetSeconds(long value);

transport/transport-backend-cct/src/main/java/com/google/android/datatransport/cct/internal/LogEventEncoder.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,8 @@ public void encode(
3434
if (obj.getSourceExtension() != null) {
3535
objectEncoderContext.add("sourceExtension", obj.getSourceExtension());
3636
}
37-
if (obj.getSourceExtensionJsonProto3Bytes() != null) {
38-
objectEncoderContext.add(
39-
"sourceExtensionJsonProto3", obj.getSourceExtensionJsonProto3Bytes());
37+
if (obj.getSourceExtensionJsonProto3() != null) {
38+
objectEncoderContext.add("sourceExtensionJsonProto3", obj.getSourceExtensionJsonProto3());
4039
}
4140
if (obj.getEventCode() != Integer.MIN_VALUE) {
4241
objectEncoderContext.add("eventCode", obj.getEventCode());

transport/transport-backend-cct/src/test/java/com/google/android/datatransport/cct/CctTransportBackendTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public class CctTransportBackendTest {
6565
ByteString.copyFrom("TelemetryData".getBytes(Charset.defaultCharset()));
6666
private static final String PAYLOAD_BYTE64 = "VGVsZW1ldHJ5RGF0YQ==";
6767
private static final String JSON_PAYLOAD = "{\"hello\": false}";
68-
private static final String JSON_PAYLOAD_BYTE64 = "eyJoZWxsbyI6IGZhbHNlfQ==";
68+
private static final String JSON_PAYLOAD_ESCAPED = "{\\\"hello\\\": false}";
6969
private static final int CODE = 5;
7070
private static final String TEST_NAME = "hello";
7171
private static final Encoding PROTOBUF_ENCODING = Encoding.of("proto");
@@ -185,7 +185,7 @@ public void testCCTSuccessLoggingRequest() {
185185
matchingJsonPath(
186186
String.format(
187187
"$[?(@.logRequest[0].logEvent[1].sourceExtensionJsonProto3 == \"%s\")]",
188-
JSON_PAYLOAD_BYTE64))));
188+
JSON_PAYLOAD_ESCAPED))));
189189

190190
assertEquals(BackendResponse.ok(3), response);
191191
}

transport/transport-backend-cct/src/test/java/com/google/android/datatransport/cct/internal/LogRequestTest.java

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -60,18 +60,13 @@ public void testBuildNetworkConnectionInfo_mobileSubtypeOnly() {
6060

6161
@Test
6262
public void testBuildLogEvent_missingFields() {
63-
Assert.assertThrows(
64-
IllegalStateException.class, () -> LogEvent.jsonBuilder(EMPTY_BYTE_ARRAY).build());
63+
Assert.assertThrows(IllegalStateException.class, () -> LogEvent.jsonBuilder("").build());
6564
Assert.assertThrows(
6665
IllegalStateException.class,
6766
() -> LogEvent.protoBuilder(EMPTY_BYTE_ARRAY).setEventTimeMs(4500).build());
6867
Assert.assertThrows(
6968
IllegalStateException.class,
70-
() ->
71-
LogEvent.jsonBuilder(EMPTY_BYTE_ARRAY)
72-
.setEventTimeMs(4500)
73-
.setEventUptimeMs(10000)
74-
.build());
69+
() -> LogEvent.jsonBuilder("").setEventTimeMs(4500).setEventUptimeMs(10000).build());
7570
}
7671

7772
@Test
@@ -83,27 +78,26 @@ public void testBuildLogEvent_withSourceExtension() {
8378
.setEventUptimeMs(10000)
8479
.setTimezoneOffsetSeconds(29L)
8580
.build();
86-
assertThat(event.getSourceExtensionJsonProto3Bytes()).isNull();
81+
assertThat(event.getSourceExtensionJsonProto3()).isNull();
8782
assertThat(event.getSourceExtension()).isEqualTo(sourceExtension);
8883
}
8984

9085
@Test
9186
public void testBuildLogEvent_withJsonSourceExtension() {
92-
byte[] sourceExtension = "myJsonExtension".getBytes(Charset.forName("UTF-8"));
9387
LogEvent event =
94-
LogEvent.jsonBuilder(sourceExtension)
88+
LogEvent.jsonBuilder("myJsonExtension")
9589
.setEventTimeMs(4500)
9690
.setEventUptimeMs(10000)
9791
.setTimezoneOffsetSeconds(29L)
9892
.build();
9993
assertThat(event.getSourceExtension()).isNull();
100-
assertThat(event.getSourceExtensionJsonProto3Bytes()).isEqualTo(sourceExtension);
94+
assertThat(event.getSourceExtensionJsonProto3()).isEqualTo("myJsonExtension");
10195
}
10296

10397
@Test
10498
public void testBuildLogEvent_withNetworkConnectionInfo() {
10599
assertThat(
106-
LogEvent.jsonBuilder(EMPTY_BYTE_ARRAY)
100+
LogEvent.jsonBuilder("")
107101
.setEventTimeMs(4500)
108102
.setEventUptimeMs(10000)
109103
.setTimezoneOffsetSeconds(29L)
@@ -262,6 +256,6 @@ public void testLogRequest_jsontToProto()
262256
.build())
263257
.build())
264258
.build();
265-
assertThat(expectedProto).isEqualTo(parsedProtoBatchedLogRequest);
259+
assertThat(parsedProtoBatchedLogRequest).isEqualTo(expectedProto);
266260
}
267261
}

0 commit comments

Comments
 (0)