Skip to content

Commit 1c923a3

Browse files
authored
fix(eventarc): sets protojson to ignoreUnknownFields (#9807)
* fix(eventarc): sets protojson to ignoreUnknownFields * lint * missing import * Reverting changes in Firestore samples * remove unused import
1 parent 40d8dce commit 1c923a3

File tree

5 files changed

+29
-8
lines changed

5 files changed

+29
-8
lines changed

eventarc/storage-handler/src/main/java/com/example/cloudrun/CloudEventController.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,20 @@ ResponseEntity<String> handleCloudEvent(@RequestBody CloudEvent cloudEvent)
4646

4747
String json = new String(cloudEvent.getData().toBytes());
4848
StorageObjectData.Builder builder = StorageObjectData.newBuilder();
49-
JsonFormat.parser().merge(json, builder);
49+
50+
// If you do not ignore unknown fields, then JsonFormat.Parser returns an
51+
// error when encountering a new or unknown field. Note that you might lose
52+
// some event data in the unmarshaling process by ignoring unknown fields.
53+
JsonFormat.Parser parser = JsonFormat.parser().ignoringUnknownFields();
54+
parser.merge(json, builder);
5055
StorageObjectData data = builder.build();
5156

5257
// Convert protobuf timestamp to java Instant
5358
Timestamp ts = data.getUpdated();
5459
Instant updated = Instant.ofEpochSecond(ts.getSeconds(), ts.getNanos());
5560
String msg =
5661
String.format(
57-
"Cloud Storage object changed: %s/%s modified at %s\n",
62+
"Cloud Storage object changed: %s/%s modified at %s%n",
5863
data.getBucket(), data.getName(), updated);
5964

6065
System.out.println(msg);

functions/v2/firebase/firestore/src/main/java/functions/FirebaseFirestore.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,17 @@ public class FirebaseFirestore implements CloudEventsFunction {
2828

2929
@Override
3030
public void accept(CloudEvent event) throws InvalidProtocolBufferException {
31-
DocumentEventData firestorEventData = DocumentEventData.parseFrom(event.getData().toBytes());
31+
DocumentEventData firestoreEventData = DocumentEventData
32+
.parseFrom(event.getData().toBytes());
3233

3334
logger.info("Function triggered by event on: " + event.getSource());
3435
logger.info("Event type: " + event.getType());
3536

3637
logger.info("Old value:");
37-
logger.info(firestorEventData.getOldValue().toString());
38+
logger.info(firestoreEventData.getOldValue().toString());
3839

3940
logger.info("New value:");
40-
logger.info(firestorEventData.getValue().toString());
41+
logger.info(firestoreEventData.getValue().toString());
4142
}
4243
}
4344

functions/v2/hello-gcs/src/main/java/functions/HelloGcs.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,12 @@ public void accept(CloudEvent event) throws InvalidProtocolBufferException {
4040

4141
String cloudEventData = new String(event.getData().toBytes(), StandardCharsets.UTF_8);
4242
StorageObjectData.Builder builder = StorageObjectData.newBuilder();
43-
JsonFormat.parser().merge(cloudEventData, builder);
43+
44+
// If you do not ignore unknown fields, then JsonFormat.Parser returns an
45+
// error when encountering a new or unknown field. Note that you might lose
46+
// some event data in the unmarshaling process by ignoring unknown fields.
47+
JsonFormat.Parser parser = JsonFormat.parser().ignoringUnknownFields();
48+
parser.merge(cloudEventData, builder);
4449
StorageObjectData data = builder.build();
4550

4651
logger.info("Bucket: " + data.getBucket());

functions/v2/imagemagick/src/main/java/functions/ImageMagick.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,12 @@ private static StorageObjectData getEventData(CloudEvent event)
156156
// Extract Cloud Event data and convert to StorageObjectData
157157
String cloudEventData = new String(event.getData().toBytes(), StandardCharsets.UTF_8);
158158
StorageObjectData.Builder builder = StorageObjectData.newBuilder();
159-
JsonFormat.parser().merge(cloudEventData, builder);
159+
160+
// If you do not ignore unknown fields, then JsonFormat.Parser returns an
161+
// error when encountering a new or unknown field. Note that you might lose
162+
// some event data in the unmarshaling process by ignoring unknown fields.
163+
JsonFormat.Parser parser = JsonFormat.parser().ignoringUnknownFields();
164+
parser.merge(cloudEventData, builder);
160165
return builder.build();
161166
}
162167
// [START functions_imagemagick_setup]

functions/v2/ocr/ocr-process-image/src/main/java/functions/OcrProcessImage.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,12 @@ public void accept(CloudEvent event) throws InvalidProtocolBufferException {
7171
// Unmarshal data from CloudEvent
7272
String cloudEventData = new String(event.getData().toBytes(), StandardCharsets.UTF_8);
7373
StorageObjectData.Builder builder = StorageObjectData.newBuilder();
74-
JsonFormat.parser().merge(cloudEventData, builder);
74+
75+
// If you do not ignore unknown fields, then JsonFormat.Parser returns an
76+
// error when encountering a new or unknown field. Note that you might lose
77+
// some event data in the unmarshaling process by ignoring unknown fields.
78+
JsonFormat.Parser parser = JsonFormat.parser().ignoringUnknownFields();
79+
parser.merge(cloudEventData, builder);
7580
StorageObjectData gcsEvent = builder.build();
7681

7782
String bucket = gcsEvent.getBucket();

0 commit comments

Comments
 (0)