Skip to content
This repository has been archived by the owner on Aug 13, 2020. It is now read-only.

Commit

Permalink
Provide equals and hashCode for Metadata to be compared
Browse files Browse the repository at this point in the history
  • Loading branch information
Zeeshan Ghalib committed Feb 22, 2016
1 parent 7a1f8f1 commit 993de28
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 0 deletions.
5 changes: 5 additions & 0 deletions messaging/messaging-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,11 @@
<artifactId>commons-testing</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava-testlib</artifactId>
<scope>test</scope>
</dependency>

</dependencies>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import javax.json.JsonObject;
import javax.json.JsonString;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.UUID;

Expand Down Expand Up @@ -90,4 +91,17 @@ public static Metadata metadataFrom(final JsonObject jsonObject) {

return new JsonObjectMetadata(jsonObject);
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
JsonObjectMetadata that = (JsonObjectMetadata) o;
return Objects.equals(metadata, that.metadata);
}

@Override
public int hashCode() {
return Objects.hash(metadata);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package uk.gov.justice.services.messaging;

import com.google.common.collect.ImmutableList;
import com.google.common.testing.EqualsTester;
import org.junit.Before;
import org.junit.Test;

Expand Down Expand Up @@ -162,4 +163,55 @@ public void shouldThrowExceptionIfNameIsNull() throws Exception {
.build()
);
}

@SuppressWarnings({"squid:MethodCyclomaticComplexity", "squid:S1067", "squid:S00122"})
@Test
public void shouldTestEqualsAndHashCode() {

Metadata item1 = metadata(UUID_ID, UUID_CLIENT_CORRELATION, UUID_CAUSATION, UUID_USER_ID, UUID_SESSION_ID, UUID_STREAM_ID, MESSAGE_NAME, STREAM_VERSION);
Metadata item2 = metadata(UUID_ID, UUID_CLIENT_CORRELATION, UUID_CAUSATION, UUID_USER_ID, UUID_SESSION_ID, UUID_STREAM_ID, MESSAGE_NAME, STREAM_VERSION);
Metadata item3 = metadata(UUID.randomUUID().toString(), UUID_CLIENT_CORRELATION, UUID_CAUSATION, UUID_USER_ID, UUID_SESSION_ID, UUID_STREAM_ID, MESSAGE_NAME, STREAM_VERSION);
Metadata item4 = metadata(UUID_ID, UUID.randomUUID().toString(), UUID_CAUSATION, UUID_USER_ID, UUID_SESSION_ID, UUID_STREAM_ID, MESSAGE_NAME, STREAM_VERSION);
Metadata item5 = metadata(UUID_ID, UUID_CLIENT_CORRELATION, UUID.randomUUID().toString(), UUID_USER_ID, UUID_SESSION_ID, UUID_STREAM_ID, MESSAGE_NAME, STREAM_VERSION);
Metadata item6 = metadata(UUID_ID, UUID_CLIENT_CORRELATION, UUID_CAUSATION, UUID.randomUUID().toString(), UUID_SESSION_ID, UUID_STREAM_ID, MESSAGE_NAME, STREAM_VERSION);
Metadata item7 = metadata(UUID_ID, UUID_CLIENT_CORRELATION, UUID_CAUSATION, UUID_USER_ID, UUID.randomUUID().toString(), UUID_STREAM_ID, MESSAGE_NAME, STREAM_VERSION);
Metadata item8 = metadata(UUID_ID, UUID_CLIENT_CORRELATION, UUID_CAUSATION, UUID_USER_ID, UUID_SESSION_ID, UUID.randomUUID().toString(), MESSAGE_NAME, STREAM_VERSION);
Metadata item9 = metadata(UUID_ID, UUID_CLIENT_CORRELATION, UUID_CAUSATION, UUID_USER_ID, UUID_SESSION_ID, UUID_STREAM_ID, "dummy name", STREAM_VERSION);
Metadata item10 = metadata(UUID_ID, UUID_CLIENT_CORRELATION, UUID_CAUSATION, UUID_USER_ID, UUID_SESSION_ID, UUID_STREAM_ID, MESSAGE_NAME, 0L);

new EqualsTester()
.addEqualityGroup(item1, item2)
.addEqualityGroup(item3)
.addEqualityGroup(item4)
.addEqualityGroup(item5)
.addEqualityGroup(item6)
.addEqualityGroup(item7)
.addEqualityGroup(item8)
.addEqualityGroup(item9)
.addEqualityGroup(item10)
.testEquals();
}

private Metadata metadata(String id, String uuidClientCorrelation, String uuidCausation, String uuidUserId,
String uuidSessionId, String uuidStreamId, String messageName, Long streamVersion) {
return metadataFrom(Json.createObjectBuilder()
.add(ID, id)
.add(NAME, messageName)
.add(CLIENT_CORRELATION[0], Json.createObjectBuilder()
.add(CLIENT_CORRELATION[1], uuidClientCorrelation)
)
.add(CAUSATION, Json.createArrayBuilder()
.add(uuidCausation)
)
.add(CONTEXT, Json.createObjectBuilder()
.add(USER_ID[1], uuidUserId)
.add(SESSION_ID[1], uuidSessionId)
)
.add(STREAM, Json.createObjectBuilder()
.add(STREAM_ID[1], uuidStreamId)
.add(VERSION[1], streamVersion)
)
.build());

}
}

0 comments on commit 993de28

Please sign in to comment.