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();