core-java icon indicating copy to clipboard operation
core-java copied to clipboard

Do not allow passing wrong entity state kind

Open alexander-yevsyukov opened this issue 10 months ago • 1 comments

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, and AggregateState interfaces which implement EntityState.
  • [ ] 2. Update code generation to use new interfaces from the item 3 above.
  • [ ] 3. Require specific entity state interfaces in Projection, ProcessManager, and Aggregate classes.

alexander-yevsyukov avatar Apr 16 '24 15:04 alexander-yevsyukov

@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.

armiol avatar Apr 16 '24 16:04 armiol