Skip to content

Commit 598f0e9

Browse files
authored
Merge pull request #4988 from cfpb/post-filing-2025
Post filing 2025
2 parents 1a0fbfb + d1696aa commit 598f0e9

File tree

6 files changed

+161
-372
lines changed

6 files changed

+161
-372
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
syntax = "proto3";
2+
3+
option java_package = "hmda.persistence.serialization";
4+
option optimize_for = SPEED;
5+
6+
import "institution.proto";
7+
import "filing.proto";
8+
9+
message InstitutionStateMessage {
10+
InstitutionMessage institution = 1;
11+
repeated FilingMessage filings = 2;
12+
}

common/src/main/resources/serialization.conf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ akka {
66
institution-commands = "hmda.serialization.institution.InstitutionCommandsSerializer"
77
institution-events = "hmda.serialization.institution.InstitutionEventsSerializer"
88
institution-detail = "hmda.serialization.institution.InstitutionDetailSerializer"
9+
institution-state = "hmda.serialization.institution.InstitutionStateSerializer"
910

1011
submission-manager-commands = "hmda.serialization.submission.SubmissionManagerCommandsSerializer"
1112
submission-commands = "hmda.serialization.submission.SubmissionCommandsSerializer"
@@ -133,6 +134,7 @@ akka {
133134
"hmda.model.filing.FilingDetails" = filing-details
134135
"hmda.persistence.filing.FilingState" = filing-state
135136
"hmda.model.institution.InstitutionDetail" = institution-detail
137+
"hmda.persistence.institution.InstitutionState" = institution-state
136138

137139
"hmda.messages.submission.HmdaRawDataCommands$AddLines" = hmda-raw-commands
138140
"hmda.messages.submission.HmdaRawDataEvents$LineAdded" = hmda-raw-events
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package hmda.serialization.institution
2+
3+
import hmda.persistence.institution.InstitutionState
4+
import hmda.persistence.serialization.institution.InstitutionMessage
5+
import hmda.persistence.serialization.institution.institutionstate.InstitutionStateMessage
6+
import hmda.serialization.filing.FilingProtobufConverter._
7+
import hmda.serialization.institution.InstitutionProtobufConverter._
8+
9+
object InstitutionStateProtobufConverter {
10+
11+
def institutionStateToProtobuf(institutionState: InstitutionState): InstitutionStateMessage =
12+
InstitutionStateMessage(
13+
if (institutionState.institution.isEmpty) None
14+
else Some(institutionToProtobuf(institutionState.institution.get)),
15+
institutionState.filings.map(s => filingToProtobuf(s))
16+
)
17+
18+
def institutionStateFromProtobuf(institutionStateMessage: InstitutionStateMessage): InstitutionState =
19+
InstitutionState(
20+
institution = Some(institutionFromProtobuf(institutionStateMessage.institution.getOrElse(InstitutionMessage()))),
21+
filings = institutionStateMessage.filings
22+
.map(s => filingFromProtobuf(s))
23+
.toList
24+
)
25+
26+
}
27+
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package hmda.serialization.institution
2+
3+
import java.io.NotSerializableException
4+
5+
import akka.serialization.SerializerWithStringManifest
6+
import hmda.persistence.institution.InstitutionState
7+
import hmda.persistence.serialization.institution.institutionstate.InstitutionStateMessage
8+
import hmda.serialization.institution.InstitutionStateProtobufConverter._
9+
// $COVERAGE-OFF$
10+
class InstitutionStateSerializer extends SerializerWithStringManifest {
11+
override def identifier: Int = 120
12+
13+
final val InstitutionStateManifest = classOf[InstitutionState].getName
14+
15+
override def manifest(o: AnyRef): String = o.getClass.getName
16+
17+
override def toBinary(o: AnyRef): Array[Byte] = o match {
18+
case evt: InstitutionState =>
19+
institutionStateToProtobuf(evt).toByteArray
20+
case _ =>
21+
throw new IllegalArgumentException(s"Cannot serialize object of type [${o.getClass.getName}]")
22+
}
23+
24+
override def fromBinary(bytes: Array[Byte], manifest: String): AnyRef =
25+
manifest match {
26+
case InstitutionStateManifest =>
27+
institutionStateFromProtobuf(InstitutionStateMessage.parseFrom(bytes))
28+
case _ =>
29+
throw new NotSerializableException(s"Unimplemented deserialization of message with manifest [$manifest] in [${getClass.getName}]")
30+
}
31+
32+
}
33+
// $COVERAGE-OFF$

0 commit comments

Comments
 (0)