From f482f8ae9f346ea5454de0f53230b2f52eff6a53 Mon Sep 17 00:00:00 2001 From: TudbuT Date: Wed, 6 Jul 2022 15:57:55 +0200 Subject: [PATCH] rename eventlistener -> improve requesthandler --- .../tudbut/tryumph/events/EventListener.java | 120 ------------------ src/de/tudbut/tryumph/example/Main.java | 11 +- 2 files changed, 8 insertions(+), 123 deletions(-) delete mode 100644 src/de/tudbut/tryumph/events/EventListener.java diff --git a/src/de/tudbut/tryumph/events/EventListener.java b/src/de/tudbut/tryumph/events/EventListener.java deleted file mode 100644 index 112fc6c..0000000 --- a/src/de/tudbut/tryumph/events/EventListener.java +++ /dev/null @@ -1,120 +0,0 @@ -package de.tudbut.tryumph.events; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.lang.reflect.Parameter; - -import de.tudbut.async.Callback; -import de.tudbut.tryumph.server.Request; -import de.tudbut.tryumph.server.Response; -import tudbut.parsing.TCN; - -public class EventListener { - - private Object catcher; - - public EventListener(Object catcher) { - this.catcher = catcher; - } - - public void handle(Request request, Callback res, Callback rej) { - Method[] methods = catcher.getClass().getDeclaredMethods(); - for(int i = 0; i < methods.length; i++) { - Method method = methods[i]; - if(method.getDeclaredAnnotations().length == 0) - continue; - boolean usable = true; - if(method.getDeclaredAnnotation(GET.class) != null && !request.method.equals("GET")) { - usable = false; - } - if(method.getDeclaredAnnotation(POST.class) != null && !request.method.equals("POST")) { - usable = false; - } - Path pathA = method.getDeclaredAnnotation(Path.class); - if(pathA != null && !request.realPath.matches("^" + pathA.value() + "$")) { - usable = false; - } - RequestMethod methodA = method.getDeclaredAnnotation(RequestMethod.class); - if(methodA != null && !request.method.matches("^" + methodA.value() + "$")) { - usable = false; - } - - if(usable) { - if(method.getReturnType() == void.class) { - try { - method.invoke(catcher, request, res, rej); - } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { - e.printStackTrace(); - } - } - else if(method.getReturnType() == Response.class) { - Object[] args = new Object[method.getParameterCount()]; - Parameter[] params = method.getParameters(); - TCN q = request.query(); - TCN b = null; - for(int j = 0; j < params.length; j++) { - Parameter param = params[j]; - try { - if(param.getType() == Request.class) { - args[j] = request; - } - PPathFragment pathFragment = param.getDeclaredAnnotation(PPathFragment.class); - if(pathFragment != null) { - args[j] = request.splitPath[pathFragment.value()]; - } - PQuery query = param.getDeclaredAnnotation(PQuery.class); - if(query != null) { - args[j] = fromTCN(q, query.value(), param); - } - PBody body = param.getDeclaredAnnotation(PBody.class); - if(body != null) { - try { - if(b == null) - b = request.bodyURLEncoded(); - args[j] = fromTCN(b, body.value(), param); - } catch (Exception e) { - args[j] = null; - } - } - PCookie cookie = param.getDeclaredAnnotation(PCookie.class); - if(cookie != null) { - args[j] = request.cookies.get(cookie.value()); - } - PData data = param.getDeclaredAnnotation(PData.class); - if(data != null) { - args[j] = fromTCN(request.context.data, data.value(), param); - } - PHeader header = param.getDeclaredAnnotation(PHeader.class); - if(header != null) { - args[j] = request.headers.get(header.value()); - } - } catch(Exception e) { - e.printStackTrace(); - } - } - try { - Response resp = (Response) method.invoke(catcher, args); - if(resp != null) - res.call(resp); - } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { - e.printStackTrace(); - } - } - } - } - } - - private Object fromTCN(TCN tcn, String s, Parameter param) { - Method[] tcnMethods = TCN.class.getDeclaredMethods(); - for(int m = 0; m < tcnMethods.length; m++) { - Method tcnMethod = tcnMethods[m]; - if(tcnMethod.getParameterCount() == 1 && tcnMethod.getReturnType() == param.getType()) - try { - return tcnMethod.invoke(tcn, s); - } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { - e.printStackTrace(); - } - } - return null; - } -} diff --git a/src/de/tudbut/tryumph/example/Main.java b/src/de/tudbut/tryumph/example/Main.java index c8cb167..3fef020 100644 --- a/src/de/tudbut/tryumph/example/Main.java +++ b/src/de/tudbut/tryumph/example/Main.java @@ -10,18 +10,18 @@ import de.tudbut.async.Callback; import de.tudbut.async.ComposeCallback; import de.tudbut.async.TaskCallable; import de.tudbut.tryumph.config.IRequestCatcher; -import de.tudbut.tryumph.events.EventListener; import de.tudbut.tryumph.events.GET; import de.tudbut.tryumph.events.POST; import de.tudbut.tryumph.events.Path; +import de.tudbut.tryumph.events.RequestHandler; import de.tudbut.tryumph.server.HTMLParsing; import de.tudbut.tryumph.server.Request; import de.tudbut.tryumph.server.Response; import tudbut.parsing.TCN; -public class Main implements IRequestCatcher { +public class Main implements IRequestCatcher, RequestHandler.Listener { - EventListener listener = new EventListener(this); + RequestHandler listener = new RequestHandler(this); @Override public TaskCallable> onConnect(Socket socket) { @@ -79,4 +79,9 @@ public class Main implements IRequestCatcher { res.call(r); } + @Override + public void handleError(Throwable error, Callback res, Callback rej) { + rej.call(error); + } + }