From dfeb61153239799c1c01e37fcff49a61f09a81ac Mon Sep 17 00:00:00 2001 From: jeffcheasey88 <66554203+jeffcheasey88@users.noreply.github.com> Date: Fri, 2 May 2025 17:02:36 +0200 Subject: [PATCH] ResponseMapper (base) --- src/dev/peerat/framework/ResponseMapper.java | 7 +++++++ src/dev/peerat/framework/RouteMapper.java | 2 +- src/dev/peerat/framework/Router.java | 17 ++++++++++++++++- 3 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 src/dev/peerat/framework/ResponseMapper.java diff --git a/src/dev/peerat/framework/ResponseMapper.java b/src/dev/peerat/framework/ResponseMapper.java new file mode 100644 index 0000000..93165ba --- /dev/null +++ b/src/dev/peerat/framework/ResponseMapper.java @@ -0,0 +1,7 @@ +package dev.peerat.framework; + +public interface ResponseMapper{ + + void map(Context context, HttpReader reader, HttpWriter writer, Object result) throws Exception; + +} diff --git a/src/dev/peerat/framework/RouteMapper.java b/src/dev/peerat/framework/RouteMapper.java index cfff5af..336cc23 100644 --- a/src/dev/peerat/framework/RouteMapper.java +++ b/src/dev/peerat/framework/RouteMapper.java @@ -97,7 +97,7 @@ public class RouteMapper{ Object[] inv = target.getBinder().bindMethod(target.getMethod(), matcher, context, reader, writer, params); Object result = target.getMethod().invoke(target.getInstance(), inv); if(result == null) return true; - //TODO MAP OBJECT TO RESPONSE + router.getMapper().map(context, reader, writer, result); return true; } return false; diff --git a/src/dev/peerat/framework/Router.java b/src/dev/peerat/framework/Router.java index d967ce0..f16fc31 100644 --- a/src/dev/peerat/framework/Router.java +++ b/src/dev/peerat/framework/Router.java @@ -24,6 +24,7 @@ public class Router{ private Response noFileFound; private Authenticator auth; private String[][] headers; + private ResponseMapper responseMapper; private ServerSocket serverSocket; public Router(){ @@ -50,6 +51,11 @@ public class Router{ return this; } + public Router setMapper(ResponseMapper mapper){ + this.responseMapper = mapper; + return this; + } + public Router register(Response response){ try{ Method method = response.getClass().getDeclaredMethod("exec", @@ -158,6 +164,10 @@ public class Router{ return this.headers[type.ordinal()]; } + public ResponseMapper getMapper(){ + return this.responseMapper; + } + public Authenticator getAuthenticator(){ return this.auth; } @@ -193,8 +203,13 @@ public class Router{ return this.exceptions; } - public void listen(int port, boolean ssl) throws Exception{ + private void checkStart(){ bindAll(); + if(this.responseMapper == null) this.responseMapper = (c,r,w,o) -> {}; + } + + public void listen(int port, boolean ssl) throws Exception{ + checkStart(); if (ssl) { // Not needed with the use of a proxy try { SSLServerSocketFactory ssf = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();