Slightly better method ergonomics

This commit is contained in:
2026-02-19 17:26:24 +01:00
parent 5421a1ff16
commit 7851e0d08a
4 changed files with 6 additions and 10 deletions
@@ -48,9 +48,8 @@ public final class Session {
} }
<Req extends JsonNode, Res extends JsonNode, Err extends JsonNode> CompletableFuture<Res> request( <Req extends JsonNode, Res extends JsonNode, Err extends JsonNode> CompletableFuture<Res> request(
Class<? extends Method<Req, Res, Err>> method, Req req) throws Exception { Method<Req, Res, Err> method, Req req) throws Exception {
Method<Req, Res, Err> m = method.getDeclaredConstructor().newInstance(); return listener.request(ws, method.getName(), req, method.getResClass());
return listener.request(ws, m.getName(), req, m.getResClass());
} }
public void close() throws Exception { public void close() throws Exception {
@@ -8,7 +8,7 @@ public class Method<Req extends JsonNode, Res extends JsonNode, Err extends Json
private final Class<Res> resClass; private final Class<Res> resClass;
private final Class<Err> errClass; private final Class<Err> errClass;
protected Method(String name, Class<Req> reqClass, Class<Res> resClass, Class<Err> errClass) { public Method(String name, Class<Req> reqClass, Class<Res> resClass, Class<Err> errClass) {
this.name = name; this.name = name;
this.reqClass = reqClass; this.reqClass = reqClass;
this.resClass = resClass; this.resClass = resClass;
@@ -5,9 +5,6 @@ import com.fasterxml.jackson.databind.node.TextNode;
import dev.selimaj.session.types.Method; import dev.selimaj.session.types.Method;
public class Methods { public class Methods {
public static class Data extends Method<TextNode, TextNode, TextNode> { public static final Method<TextNode, TextNode, TextNode> Data = new Method<>("data",
Data() { TextNode.class, TextNode.class, TextNode.class);
super("data", TextNode.class, TextNode.class, TextNode.class);
}
}
} }
@@ -8,7 +8,7 @@ public class SessionTest {
static void testRequest() throws Exception { static void testRequest() throws Exception {
Session session = Session.connect("ws://localhost:8080/"); Session session = Session.connect("ws://localhost:8080/");
TextNode response = session.request(Methods.Data.class, TextNode.valueOf("Hello from client")).get(); TextNode response = session.request(Methods.Data, TextNode.valueOf("Hello from client")).get();
System.out.println(response); System.out.println(response);