/* (c) 2016 Open Source Geospatial Foundation - all rights reserved
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.gwc;
import static org.junit.Assert.assertEquals;
import java.util.Stack;
import org.geoserver.ows.DispatcherCallback;
import org.geoserver.ows.Request;
import org.geoserver.ows.Response;
import org.geoserver.platform.Operation;
import org.geoserver.platform.Service;
import org.geoserver.platform.ServiceException;
/**
* Makes sure that when nested requests occur, the events are balanced and use the right request,
* one for the nested callbacks, and a separate one for the outer callback
*/
final class BalancedRequestTester implements DispatcherCallback {
Stack<Request> requestStack = new Stack<>();
@Override
public Request init(Request request) {
requestStack.push(request);
return request;
}
@Override
public Service serviceDispatched(Request request, Service service) throws ServiceException {
assertEquals(request, requestStack.peek());
return service;
}
@Override
public Operation operationDispatched(Request request, Operation operation) {
assertEquals(request, requestStack.peek());
return operation;
}
@Override
public Object operationExecuted(Request request, Operation operation, Object result) {
assertEquals(request, requestStack.peek());
return result;
}
@Override
public Response responseDispatched(Request request, Operation operation, Object result,
Response response) {
assertEquals(request, requestStack.peek());
return response;
}
@Override
public void finished(Request request) {
assertEquals(request, requestStack.pop());
}
}