core-java
core-java copied to clipboard
Do not allow passing wrong entity state kind
Now it is possible to declare an entity class with an entity state of a wrong kind. For example, it is possible to create a Projection
with a message implementing EntityState
which has the following option declaration:
option (.entity) = { kind: PROCESS_MANAGER visibility: QUERY };
Although, it does not do any harm, it's obviously a programming error. This is not what the developer intended. Moreover, keeping such errors unnoticed prevents us from introducing specific interfaces for entity states for projections, process managers, and aggregates.
Suggested actions
- [ ] 1. Introduce
ProjectionState
,ProcessManagerState
, andAggregateState
interfaces which implementEntityState
. - [ ] 2. Update code generation to use new interfaces from the item 3 above.
- [ ] 3. Require specific entity state interfaces in
Projection
,ProcessManager
, andAggregate
classes.
@alexander-yevsyukov I would go with pp. 3 and 4.
Points no.1 and no.2 do not lead to a compilation failure, which we ideally want. And they may be both expensive and restrictive in terms of GraalVM compatibility.