All actions that are a Data Request by the System are mapped as Query Messages.
A Query in Evento Framework implements the com.evento.common.modeling.messaging.payload.Query class, that requires a Parameter indicating the return type: a Single or a Multiple of View extending classes.
I suggest implementing Queries and Views at the same time in order to properly map data requests and structure.
In our requirements, we got two specifications: the list all and the find one.
importcom.eventoframework.demo.todo.api.todo.view.TodoListListItemView;importlombok.AllArgsConstructor;importlombok.Getter;importlombok.NoArgsConstructor;importlombok.Setter;importcom.evento.common.documentation.Domain;importcom.evento.common.modeling.messaging.payload.Query;importcom.evento.common.modeling.messaging.query.Multiple;@Domain(name ="TodoList")@NoArgsConstructor@AllArgsConstructor@Getter@SetterpublicclassTodoListListItemViewSearchQueryextendsQuery<Multiple<TodoListListItemView>> {// A like filter for the TodoList nameprivateString nameLike;// Pagination infosprivateint page;privateint size;}
In the above case, we have used the com.evento.common.modeling.messaging.query.Multiple type for return because we are going to return a Collection of TodoListListItemView.
For the find by Id case, we are gonna return only one TodoListView object so we need to use the com.evento.common.modeling.messaging.query.Single class as Query return type.