Route Interceptor....with method is better

This commit is contained in:
jeffcheasey88 2024-03-13 11:19:06 +01:00
parent d6ca7c5092
commit 7bbfeea23a
2 changed files with 9 additions and 7 deletions

View file

@ -1,9 +1,10 @@
package dev.peerat.framework; package dev.peerat.framework;
import java.lang.reflect.Method;
import java.util.regex.Matcher; import java.util.regex.Matcher;
public interface RouteInterceptor{ public interface RouteInterceptor{
boolean intercept(Matcher matcher, Context context, HttpReader reader, HttpWriter writer); boolean intercept(Matcher matcher, Context context, HttpReader reader, HttpWriter writer, Method method);
} }

View file

@ -42,14 +42,14 @@ public class RouteMapper<U extends User>{
} }
public boolean exec(Context context, HttpReader reader, HttpWriter writer, List<RouteInterceptor> interceptors) throws Exception{ public boolean exec(Context context, HttpReader reader, HttpWriter writer, List<RouteInterceptor> interceptors) throws Exception{
Response result = null; Response response = null;
Method method = null;
Matcher matcher = null; Matcher matcher = null;
String path = context.getPath(); String path = context.getPath();
synchronized(responses){ synchronized(responses){
for(int i = 0; i < responses.length; i++){ for(int i = 0; i < responses.length; i++){
Response response = responses[i];
Route route = routes[i]; Route route = routes[i];
Pattern pattern = patterns[i]; Pattern pattern = patterns[i];
matcher = pattern.matcher(path); matcher = pattern.matcher(path);
@ -67,17 +67,18 @@ public class RouteMapper<U extends User>{
writer.response(401, router.getDefaultHeaders(context.getType())); writer.response(401, router.getDefaultHeaders(context.getType()));
return true; return true;
} }
response = responses[i];
method = methods[i];
order(i); order(i);
result = response;
break; break;
} }
} }
} }
if(result != null){ if(response != null){
for(RouteInterceptor interceptor : interceptors){ for(RouteInterceptor interceptor : interceptors){
if(!interceptor.intercept(matcher, context, reader, writer)) return true; if(!interceptor.intercept(matcher, context, reader, writer, method)) return true;
} }
result.exec(matcher, context, reader, writer); response.exec(matcher, context, reader, writer);
return true; return true;
} }
return false; return false;