Skip to content

Commit

Permalink
add abort request method
Browse files Browse the repository at this point in the history
  • Loading branch information
hellokaton committed Dec 28, 2015
1 parent 449caf8 commit d26e0b5
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 20 deletions.
29 changes: 19 additions & 10 deletions blade-core/src/main/java/com/blade/web/AsynRequestHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -107,17 +107,21 @@ public void run(){
// If find it
if (route != null) {
request.setRoute(route);

boolean result = false;
// before inteceptor
List<Route> befores = routeMatcher.getBefore(uri);
invokeInterceptor(request, response, befores);

// execute
handle(request, response, route);

// after inteceptor
List<Route> afters = routeMatcher.getAfter(uri);
invokeInterceptor(request, response, afters);
asyncContext.complete();
result = invokeInterceptor(request, response, befores);
if(result){
// execute
handle(request, response, route);

if(!request.isAbort()){
// after inteceptor
List<Route> afters = routeMatcher.getAfter(uri);
invokeInterceptor(request, response, afters);
}
}
return;
}

Expand Down Expand Up @@ -166,11 +170,16 @@ private void render404(Response response, String uri) {
* @param request request object
* @param response response object
* @param interceptors execute the interceptor list
* @return Return execute is ok
*/
private void invokeInterceptor(Request request, Response response, List<Route> interceptors) {
private boolean invokeInterceptor(Request request, Response response, List<Route> interceptors) {
for(Route route : interceptors){
handle(request, response, route);
if(request.isAbort()){
return false;
}
}
return true;
}

/**
Expand Down
26 changes: 17 additions & 9 deletions blade-core/src/main/java/com/blade/web/SyncRequestHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -97,16 +97,19 @@ public void handle(HttpServletRequest httpRequest, HttpServletResponse httpRespo
// If find it
if (route != null) {
request.setRoute(route);
boolean result = false;
// before inteceptor
List<Route> befores = routeMatcher.getBefore(uri);
invokeInterceptor(request, response, befores);

// execute
handle(request, response, route);

// after inteceptor
List<Route> afters = routeMatcher.getAfter(uri);
invokeInterceptor(request, response, afters);
result = invokeInterceptor(request, response, befores);
if(result){
// execute
handle(request, response, route);
if(!request.isAbort()){
// after inteceptor
List<Route> afters = routeMatcher.getAfter(uri);
invokeInterceptor(request, response, afters);
}
}
return;
}

Expand Down Expand Up @@ -153,11 +156,16 @@ private void render404(Response response, String uri) {
* @param request request object
* @param response response object
* @param interceptors execute the interceptor list
* @return Return execute is ok
*/
private void invokeInterceptor(Request request, Response response, List<Route> interceptors) {
private boolean invokeInterceptor(Request request, Response response, List<Route> interceptors) {
for(Route route : interceptors){
handle(request, response, route);
if(request.isAbort()){
return false;
}
}
return true;
}

/**
Expand Down
10 changes: 10 additions & 0 deletions blade-core/src/main/java/com/blade/web/http/Request.java
Original file line number Diff line number Diff line change
Expand Up @@ -339,6 +339,16 @@ public interface Request {
*/
Route route();

/**
* Abort current request
*/
void abort();

/**
* @return Return is abort request
*/
boolean isAbort();

/**
* Request body interface
* @author biezhi
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@ public class ServletRequest implements Request {

private Blade blade = null;

private boolean isAbort = false;

public ServletRequest(HttpServletRequest request) throws MultipartException, IOException {
this.request = request;
this.pathParams = new HashMap<String,String>();
Expand Down Expand Up @@ -513,6 +515,16 @@ public Route route() {
return this.route;
}

@Override
public void abort() {
this.isAbort = true;
}

@Override
public boolean isAbort() {
return this.isAbort;
}

@Override
public <T> T model(String slug, Class<? extends Serializable> clazz) {
if(StringKit.isNotBlank(slug) && null != clazz){
Expand Down Expand Up @@ -573,4 +585,4 @@ public byte[] asByte() {
};
}

}
}

0 comments on commit d26e0b5

Please sign in to comment.