...
Name | DBO | Migration | DTO | ||||
---|---|---|---|---|---|---|---|
(Immutable after creation) |
| Backup via ID Note: Etag is required because MessageStatus is mutable. | Interface
| ||||
(Immutable after creation) |
| Secondary to MessageContent | Implements MessageContent
| ||||
(Immutable after creation) |
| Secondary to MessageContent | |||||
|
| Secondary to MessageContent |
| ||||
(Immutable after creation) |
| Secondary to MessageContent | Implements MessageContent
|
(Immutable after creation) |
| Secondary to MessageContent | n/a |
|
| TBD |
| ||||
|
| TBD |
| ||||
| Bundles the MessageToUser and Message Status |
'* per Marcel, Comments may have a more complex set of references/relationships than Messages to Users have. Rather than just 'inReplyTo', it might be that one Comment is an 'answer' to another comment which is a question. Further, the multiple answers to a question may have 'previous' references which order them.
Other
- Message ID generator
- Thread ID generator
- Email mechanism
- Use Amazon SES
- Since we've decided to use SES, we should use their REST API rather than their SMTP API.
- The Gmail server may be useful for handling bounced messages.
- This will make the following two mocking methods impossible:
- Mocking javax mail: http://ollivander.franzoni.eu/2011/08/30/mock-javamail-primer/
- Mocking an SMTP server: http://quintanasoft.com/dumbster/
- Use Amazon SES
- Message delivery will be via worker, i.e. asynchronous (in most cases) with respect to message creation.
...