Skip to content

Commit 558e480

Browse files
committed
Serialize SubmissionFileNameAdded message
1 parent 619a421 commit 558e480

File tree

6 files changed

+50
-8
lines changed

6 files changed

+50
-8
lines changed

persistence-model/src/main/protobuf/SubmissionEvents.proto

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,9 @@ message SubmissionCreatedMessage {
3131
message SubmissionStatusUpdatedMessage {
3232
SubmissionIdMessage id = 1;
3333
SubmissionStatusMessage status = 2;
34+
}
35+
36+
message SubmissionFileNameAddedMessage {
37+
SubmissionIdMessage id = 1;
38+
string fileName = 2;
3439
}

persistence-model/src/main/scala/hmda/persistence/messages/events/institutions/SubmissionEvents.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ object SubmissionEvents {
77
trait SubmissionEvent extends Event
88
case class SubmissionCreated(submission: Submission) extends SubmissionEvent
99
case class SubmissionStatusUpdated(id: SubmissionId, status: SubmissionStatus) extends SubmissionEvent
10+
case class SubmissionFileNameAdded(id: SubmissionId, fileName: String) extends Event
1011
}

persistence-model/src/main/scala/hmda/persistence/serialization/submission/SubmissionProtobufConverter.scala

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package hmda.persistence.serialization.submission
22

3-
import hmda.model.fi.{ Submission, SubmissionId, SubmissionStatus, Created, Uploading, Uploaded, Parsing, Parsed, ParsedWithErrors, Validating, ValidatedWithErrors, Validated, Signed, Failed }
4-
import hmda.persistence.messages.events.institutions.SubmissionEvents.{ SubmissionCreated, SubmissionStatusUpdated }
3+
import hmda.model.fi.{ Created, Failed, Parsed, ParsedWithErrors, Parsing, Signed, Submission, SubmissionId, SubmissionStatus, Uploaded, Uploading, Validated, ValidatedWithErrors, Validating }
4+
import hmda.persistence.messages.events.institutions.SubmissionEvents._
55
import hmda.persistence.model.serialization.SubmissionEvents._
66

77
object SubmissionProtobufConverter {
@@ -32,6 +32,20 @@ object SubmissionProtobufConverter {
3232
)
3333
}
3434

35+
def submissionFileNameAddedToProtobuf(obj: SubmissionFileNameAdded): SubmissionFileNameAddedMessage = {
36+
SubmissionFileNameAddedMessage(
37+
id = Some(submissionIdToProtobuf(obj.id)),
38+
fileName = obj.fileName
39+
)
40+
}
41+
42+
def submissionFileNameAddedFromProtobuf(msg: SubmissionFileNameAddedMessage): SubmissionFileNameAdded = {
43+
SubmissionFileNameAdded(
44+
id = submissionIdFromProtobuf(msg.id.getOrElse(SubmissionIdMessage())),
45+
fileName = msg.fileName
46+
)
47+
}
48+
3549
def submissionToProtobuf(obj: Submission): SubmissionMessage = {
3650
SubmissionMessage(
3751
id = Some(submissionIdToProtobuf(obj.id)),

persistence-model/src/main/scala/hmda/persistence/serialization/submission/SubmissionProtobufSerializer.scala

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package hmda.persistence.serialization.submission
22

33
import akka.serialization.SerializerWithStringManifest
4-
import hmda.persistence.messages.events.institutions.SubmissionEvents.{ SubmissionCreated, SubmissionStatusUpdated }
5-
import hmda.persistence.model.serialization.SubmissionEvents.{ SubmissionCreatedMessage, SubmissionStatusUpdatedMessage }
4+
import hmda.persistence.messages.events.institutions.SubmissionEvents._
5+
import hmda.persistence.model.serialization.SubmissionEvents._
66
import hmda.persistence.serialization.submission.SubmissionProtobufConverter._
77

88
class SubmissionProtobufSerializer extends SerializerWithStringManifest {
@@ -12,10 +12,12 @@ class SubmissionProtobufSerializer extends SerializerWithStringManifest {
1212

1313
final val SubmissionCreatedManifest = classOf[SubmissionCreated].getName
1414
final val SubmissionStatusUpdatedManifest = classOf[SubmissionStatusUpdated].getName
15+
final val SubmissionFileNameAddedManifest = classOf[SubmissionFileNameAdded].getName
1516

1617
override def toBinary(o: AnyRef): Array[Byte] = o match {
1718
case evt: SubmissionCreated => submissionCreatedToProtobuf(evt).toByteArray
1819
case evt: SubmissionStatusUpdated => submissionStatusUpdatedToProtobuf(evt).toByteArray
20+
case evt: SubmissionFileNameAdded => submissionFileNameAddedToProtobuf(evt).toByteArray
1921
case msg: Any => throw new RuntimeException(s"Cannot serialize this message: ${msg.toString}")
2022
}
2123

@@ -24,6 +26,8 @@ class SubmissionProtobufSerializer extends SerializerWithStringManifest {
2426
submissionCreatedFromProtobuf(SubmissionCreatedMessage.parseFrom(bytes))
2527
case SubmissionStatusUpdatedManifest =>
2628
submissionStatusUpdatedFromProtobuf(SubmissionStatusUpdatedMessage.parseFrom(bytes))
29+
case SubmissionFileNameAddedManifest =>
30+
submissionFileNameAddedFromProtobuf(SubmissionFileNameAddedMessage.parseFrom(bytes))
2731
case msg: Any => throw new RuntimeException(s"Cannot deserialize this message: ${msg.toString}")
2832
}
2933
}

persistence-model/src/test/scala/hmda/persistence/serialization/submission/SubmissionProtobufConverterSpec.scala

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package hmda.persistence.serialization.submission
22

3-
import org.scalatest.{ MustMatchers, PropSpec }
3+
import org.scalatest.{MustMatchers, PropSpec}
44
import org.scalatest.prop.PropertyChecks
55
import hmda.model.institution.SubmissionGenerators._
6-
import hmda.persistence.messages.events.institutions.SubmissionEvents.{ SubmissionCreated, SubmissionStatusUpdated }
6+
import hmda.persistence.messages.events.institutions.SubmissionEvents._
77
import hmda.persistence.model.serialization.SubmissionEvents._
88
import hmda.persistence.serialization.submission.SubmissionProtobufConverter._
9+
import org.scalacheck.Gen
910

1011
class SubmissionProtobufConverterSpec extends PropSpec with PropertyChecks with MustMatchers {
1112

@@ -38,6 +39,14 @@ class SubmissionProtobufConverterSpec extends PropSpec with PropertyChecks with
3839
}
3940
}
4041

42+
property("Submission File Name Added must serialize to protobuf and back") {
43+
forAll(submissionIdGen, Gen.alphaStr) { (submissionId, fileName) =>
44+
val submissionFileNameAdded = SubmissionFileNameAdded(submissionId, fileName)
45+
val protobuf = submissionFileNameAddedToProtobuf(submissionFileNameAdded).toByteArray
46+
submissionFileNameAddedFromProtobuf(SubmissionFileNameAddedMessage.parseFrom(protobuf)) mustBe submissionFileNameAdded
47+
}
48+
}
49+
4150
property("Submission Created must serialize to protobuf and back") {
4251
forAll(submissionGen) { submission =>
4352
val submissionCreated = SubmissionCreated(submission)

persistence-model/src/test/scala/hmda/persistence/serialization/submission/SubmissionProtobufSerializerSpec.scala

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package hmda.persistence.serialization.submission
22

3-
import org.scalatest.{ MustMatchers, PropSpec }
3+
import org.scalatest.{MustMatchers, PropSpec}
44
import org.scalatest.prop.PropertyChecks
55
import hmda.model.institution.SubmissionGenerators._
6-
import hmda.persistence.messages.events.institutions.SubmissionEvents.{ SubmissionCreated, SubmissionStatusUpdated }
6+
import hmda.persistence.messages.events.institutions.SubmissionEvents._
7+
import org.scalacheck.Gen
78

89
class SubmissionProtobufSerializerSpec extends PropSpec with PropertyChecks with MustMatchers {
910
val serializer = new SubmissionProtobufSerializer()
@@ -23,4 +24,12 @@ class SubmissionProtobufSerializerSpec extends PropSpec with PropertyChecks with
2324
serializer.fromBinary(bytes, serializer.SubmissionStatusUpdatedManifest) mustBe msg
2425
}
2526
}
27+
28+
property("Submission File Name Added messages must be serialized to binary and back") {
29+
forAll(submissionIdGen, Gen.alphaStr) { (submissionId, fileName) =>
30+
val msg = SubmissionFileNameAdded(submissionId, fileName)
31+
val bytes = serializer.toBinary(msg)
32+
serializer.fromBinary(bytes, serializer.SubmissionFileNameAddedManifest) mustBe msg
33+
}
34+
}
2635
}

0 commit comments

Comments
 (0)