/* Copyright (c) 2001 - 2011 TOPP - www.openplans.org. All rights reserved. * This code is licensed under the GPL 2.0 license, availible at the root * application directory. */ package org.geoserver.monitor.ows; import static org.junit.Assert.assertEquals; import java.lang.reflect.Proxy; import org.geoserver.monitor.MemoryMonitorDAO; import org.geoserver.monitor.Monitor; import org.geoserver.monitor.MonitorDAO; import org.geoserver.monitor.MonitorTestData; import org.geoserver.monitor.RequestData; import org.geoserver.monitor.RequestData.Status; 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; import org.junit.BeforeClass; import org.junit.Test; public class ControlFlowCallbackProxyTest { static Monitor monitor; @BeforeClass public static void setUpData() throws Exception { MonitorDAO dao = new MemoryMonitorDAO(); new MonitorTestData(dao).setup(); monitor = new Monitor(dao); } @Test public void test() throws Exception { final RequestData data = monitor.start(); DispatcherCallback callback = new DispatcherCallback() { public Service serviceDispatched(Request request, Service service) throws ServiceException { return null; } public Response responseDispatched(Request request, Operation operation, Object result, Response response) { return null; } public Object operationExecuted(Request request, Operation operation, Object result) { return null; } public Operation operationDispatched(Request request, Operation operation) { assertEquals(Status.WAITING, data.getStatus()); return operation; } public Request init(Request request) { return null; } public void finished(Request request) { } }; ControlFlowCallbackProxy proxy = new ControlFlowCallbackProxy(monitor, callback); callback = (DispatcherCallback) Proxy.newProxyInstance(getClass().getClassLoader(), new Class[]{DispatcherCallback.class}, proxy); callback.operationDispatched(new Request(), new Operation("foo", new Service("bar", null, null, null), null, null)); assertEquals(Status.RUNNING, data.getStatus()); } }