Remove support for EventMessage deserialisation From version stable-3.4 events-broker sends Event objects as a message but for rolling upgrades from stable-3.3 deserialisation of EventMessage is still supported. Because stable-3.4 is not sending EventMessage deserialisation logic can be removed. Bug: Issue 14823 Change-Id: I577ceb86094fa32a040c68ce1dd2308efe0d12e9
diff --git a/src/main/java/com/gerritforge/gerrit/eventbroker/EventDeserializer.java b/src/main/java/com/gerritforge/gerrit/eventbroker/EventDeserializer.java index 986fab2..babc9d7 100644 --- a/src/main/java/com/gerritforge/gerrit/eventbroker/EventDeserializer.java +++ b/src/main/java/com/gerritforge/gerrit/eventbroker/EventDeserializer.java
@@ -16,7 +16,6 @@ import static java.util.Objects.requireNonNull; -import com.google.common.base.Strings; import com.google.gerrit.server.events.Event; import com.google.gerrit.server.events.EventGson; import com.google.gson.Gson; @@ -32,17 +31,8 @@ } public Event deserialize(String json) { - Event resultEvent; - EventMessage eventMessage = gson.fromJson(json, EventMessage.class); - if (eventMessage.getEvent() == null && eventMessage.getHeader() == null) { - resultEvent = gson.fromJson(json, Event.class); - } else { - eventMessage.validate(); - resultEvent = eventMessage.getEvent(); - if (Strings.isNullOrEmpty(resultEvent.instanceId)) { - resultEvent.instanceId = eventMessage.getHeader().sourceInstanceId; - } - } + Event resultEvent = gson.fromJson(json, Event.class); + validate(resultEvent); return resultEvent; }
diff --git a/src/main/java/com/gerritforge/gerrit/eventbroker/EventMessage.java b/src/main/java/com/gerritforge/gerrit/eventbroker/EventMessage.java deleted file mode 100644 index 0684ae4..0000000 --- a/src/main/java/com/gerritforge/gerrit/eventbroker/EventMessage.java +++ /dev/null
@@ -1,101 +0,0 @@ -// Copyright (C) 2019 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package com.gerritforge.gerrit.eventbroker; - -import static java.util.Objects.requireNonNull; - -import com.google.gerrit.server.events.Event; -import java.util.UUID; - -/** - * Enrich an existing {@link Event} object with the information about the source that produced it, - * including the Gerrit server instance id. Additionally this class contains an event-id, event-type - * and event-created-on fields. - */ -public class EventMessage { - - private final Header header; - private final Event body; - - public Header getHeader() { - return header; - } - - /** - * Returns deserialized {@code Event} object - * - * @return {@code Event} class instance - */ - public Event getEvent() { - return body; - } - - /** Contains all additional information required to successfully send an {@code Event} object. */ - public static class Header { - /** Unique event id. */ - public final UUID eventId; - - /** Gerrit server instance id from which event was sent. */ - public final String sourceInstanceId; - - /** @deprecated required for interoperability with older JSON wire protocols */ - public final String eventType; - - public Header(UUID eventId, UUID sourceInstanceId) { - this(eventId, sourceInstanceId.toString()); - } - - public Header(UUID eventId, String sourceInstanceId) { - this.eventId = eventId; - this.sourceInstanceId = sourceInstanceId; - this.eventType = ""; - } - - /** Validate if all required header fields are not null. */ - public void validate() { - requireNonNull(eventId, "EventId cannot be null"); - requireNonNull(sourceInstanceId, "Source Instance ID cannot be null"); - } - - @Override - public String toString() { - return "{" + "eventId=" + eventId + ", sourceInstanceId=" + sourceInstanceId + '}'; - } - } - - /** - * Creates a new instance which can be send as a message via {@link BrokerApi}. - * - * @param header message header object, contains all additional information required to properly - * send the message - * @param event {@link Event} object - */ - public EventMessage(Header header, Event event) { - this.header = header; - this.body = event; - } - - /** Validate if all required fields are not null. */ - public void validate() { - requireNonNull(header, "Header cannot be null"); - requireNonNull(body, "Event cannot be null"); - header.validate(); - } - - @Override - public String toString() { - return String.format("Header='%s', Body='%s'", header, body); - } -}
diff --git a/src/test/java/com/gerritforge/gerrit/eventbroker/EventDeserializerTest.java b/src/test/java/com/gerritforge/gerrit/eventbroker/EventDeserializerTest.java index 1bc2535..bd7b98b 100644 --- a/src/test/java/com/gerritforge/gerrit/eventbroker/EventDeserializerTest.java +++ b/src/test/java/com/gerritforge/gerrit/eventbroker/EventDeserializerTest.java
@@ -19,7 +19,6 @@ import com.google.gerrit.server.events.Event; import com.google.gerrit.server.events.EventGsonProvider; import com.google.gson.Gson; -import java.util.UUID; import org.junit.Before; import org.junit.Test; @@ -33,24 +32,6 @@ } @Test - public void eventDeserializerShouldParseEventMessage() { - final UUID eventId = UUID.randomUUID(); - final String eventType = "event-type"; - final String sourceInstanceId = UUID.randomUUID().toString(); - final long eventCreatedOn = 10L; - final String eventJson = - String.format( - "{ " - + "\"header\": { \"eventId\": \"%s\", \"eventType\": \"%s\", \"sourceInstanceId\": \"%s\", \"eventCreatedOn\": %d }," - + "\"body\": { \"type\": \"project-created\" }" - + "}", - eventId, eventType, sourceInstanceId, eventCreatedOn); - final Event event = deserializer.deserialize(eventJson); - - assertThat(event.instanceId).isEqualTo(sourceInstanceId); - } - - @Test public void eventDeserializerShouldParseEvent() { final String eventJson = "{ \"type\": \"project-created\", \"instanceId\":\"instance-id\" }"; final Event event = deserializer.deserialize(eventJson);