Using only the following protobuf message file:
syntax = "proto2";
package org.hiatusuk.messages;
message MyMessage {
required int64 id = 1;
required string email = 2;
required string userExternalReference = 3;
enum UserRole {
MASTER = 1;
SERVANT = 2;
}
optional UserRole role = 4;
optional string correlationId = 5;
}
The Maven plugin from square/wire generates code to allow the following Test:
@Test
public void testSerDeserEqualsAndHashcode() throws IOException {
final MyMessage original = new MyMessage.Builder()
.id(1981L)
.role(UserRole.SERVANT)
.userExternalReference("system7")
.email("[email protected]")
.correlationId("453454-435345-111-323")
.build();
System.out.println("Created: " + original);
final byte[] bytes = MyMessage.ADAPTER.encode(original).clone();
final MyMessage decoded = MyMessage.ADAPTER.decode(bytes);
// Test equality, every way we can
EqHash.testEqualsHashcode(original, decoded);
}
that demonstrates serialisation and deserialisation, with fully working equals()
and hashCode()
implementations.