Message type
This commit is contained in:
@@ -0,0 +1,27 @@
|
|||||||
|
package dev.selimaj.session.types;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.*;
|
||||||
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
|
|
||||||
|
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
|
||||||
|
@JsonSubTypes({
|
||||||
|
@JsonSubTypes.Type(value = Message.Request.class, name = "request"),
|
||||||
|
@JsonSubTypes.Type(value = Message.Response.class, name = "response"),
|
||||||
|
@JsonSubTypes.Type(value = Message.ErrorResponse.class, name = "errorresponse"),
|
||||||
|
@JsonSubTypes.Type(value = Message.Notification.class, name = "notification")
|
||||||
|
})
|
||||||
|
public sealed interface Message
|
||||||
|
permits Message.Request, Message.Response, Message.ErrorResponse, Message.Notification {
|
||||||
|
|
||||||
|
record Request(int id, String method, JsonNode data) implements Message {
|
||||||
|
}
|
||||||
|
|
||||||
|
record Response(int id, JsonNode result) implements Message {
|
||||||
|
}
|
||||||
|
|
||||||
|
record ErrorResponse(int id, JsonNode error) implements Message {
|
||||||
|
}
|
||||||
|
|
||||||
|
record Notification(String method, JsonNode data) implements Message {
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user