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;
import java.lang.reflect.Method;
import java.util.regex.Matcher;
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{
Response result = null;
Response response = null;
Method method = null;
Matcher matcher = null;
String path = context.getPath();
synchronized(responses){
for(int i = 0; i < responses.length; i++){
Response response = responses[i];
Route route = routes[i];
Pattern pattern = patterns[i];
matcher = pattern.matcher(path);
@ -67,17 +67,18 @@ public class RouteMapper<U extends User>{
writer.response(401, router.getDefaultHeaders(context.getType()));
return true;
}
response = responses[i];
method = methods[i];
order(i);
result = response;
break;
}
}
}
if(result != null){
if(response != null){
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 false;