Object parseRequestKVP(Class type, Request request) throws Exception { KvpRequestReader kvpReader = findKvpRequestReader(type); if (kvpReader != null) { // check for http request awareness if (kvpReader instanceof HttpServletRequestAware) { ((HttpServletRequestAware) kvpReader).setHttpRequest(request.getHttpRequest()); } Object requestBean = kvpReader.createRequest(); if (requestBean != null) { requestBean = kvpReader.read(requestBean, request.getKvp(), request.getRawKvp()); } return requestBean; } return null; }
public void testDispatcherCallback() throws Exception { URL url = getClass().getResource("applicationContext.xml"); FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext(url.toString()); Dispatcher dispatcher = (Dispatcher) context.getBean("dispatcher"); TestDispatcherCallback callback = new TestDispatcherCallback(); MockHttpServletRequest request = setupRequest(); MockHttpServletResponse response = new MockHttpServletResponse(); dispatcher.callbacks.add(callback); dispatcher.handleRequest(request, response); assertEquals("Hello world!", response.getContentAsString()); assertEquals(TestDispatcherCallback.Status.FINISHED, callback.dispatcherStatus.get()); }
protected ModelAndView handleRequestInternal( HttpServletRequest httpRequest, HttpServletResponse httpResponse) throws Exception { preprocessRequest(httpRequest); request = init(request); service = service(request); } catch (Throwable t) { exception(t, null, request); Operation operation = dispatch(request, service); request.setOperation(operation); flagAsSOAP(operation); Object result = execute(request, operation); response(result, request, operation); if (isSecurityException(t)) throw (Exception) t; exception(t, service, request); } finally { fireFinishedCallback(request); REQUEST.remove();
void parseKVP(Request req) throws ServiceException { preParseKVP(req); parseKVP(req, req.getKvp()); }
request.setGet("GET".equalsIgnoreCase(httpRequest.getMethod()) || isForm(reqContentType)); parseKVP(request); && httpRequest.getContentType().startsWith(SOAP_MIME)) { request.setSOAP(true); request.setInput(soapReader(httpRequest, request)); } else if (reqContentType != null && ServletFileUpload.isMultipartContent(httpRequest)) { kvpFileItems.put(item.getFieldName(), item); } else { request.setInput(fileItemReader(item)); FileItem body = kvpFileItems.get("body"); if (body != null) { request.setInput(fileItemReader(body)); kvpFileItems.remove("body"); request.setOrAppendKvp(parseKVP(request, kvpFileItems)); } else { request.setInput(reader(httpRequest)); request.setPath(path); return fireInitCallback(request);
boolean exists = operationExists(req, serviceDescriptor); req.setRequest(normalize(KvpUtils.getSingleValue(req.getKvp(), "request"))); exists = operationExists(req, serviceDescriptor); requestBean = parseRequestKVP(parameterType, req); kvpParsed = true; } catch (Exception e) { requestBean = parseRequestXML(requestBean, req.getInput(), req); xmlParsed = true; req.setService(lookupRequestBeanProperty(requestBean, "service", false)); normalizeVersion( lookupRequestBeanProperty(requestBean, "version", false))); lookupRequestBeanProperty(requestBean, "outputFormat", true)); Version version = new Version(req.getVersion()); for (Iterator s = loadServices().iterator(); s.hasNext(); ) { Service service = (Service) s.next(); return fireOperationDispatchedCallback(req, op);
req.setService(normalize(KvpUtils.getSingleValue(req.getKvp(), "service"))); req.setVersion( normalizeVersion(normalize(KvpUtils.getSingleValue(req.getKvp(), "version")))); req.setRequest(normalize(KvpUtils.getSingleValue(req.getKvp(), "request"))); req.setOutputFormat(normalize(KvpUtils.getSingleValue(req.getKvp(), "outputFormat"))); Map xml = readOpPost(req.getInput()); if (xml.get("service") != null) { req.setService(normalize((String) xml.get("service"))); req.setVersion(normalizeVersion(normalize((String) xml.get("version")))); req.setRequest(normalize((String) xml.get("request"))); req.setOutputFormat(normalize((String) xml.get("outputFormat"))); req.setNamespace(normalize((String) xml.get("namespace"))); Map map = readOpContext(req); service = normalize((String) map.get("service")); req.setRequest(normalize((String) map.get("request"))); Service serviceDescriptor = findService(service, req.getVersion(), req.getNamespace()); if (serviceDescriptor == null) { findService(req.getContext(), req.getVersion(), req.getNamespace()); if (serviceDescriptor != null) {
public void testErrorSavedOnRequestOnGenericException() throws Exception { MockHttpServletRequest request = new MockHttpServletRequest(); request.setContextPath("/geoserver"); request.setRequestURI("/geoserver/hello"); request.setMethod("get"); Dispatcher dispatcher = new Dispatcher(); Request req = new Request(); req.httpRequest = request; dispatcher.init(req); MockHttpServletResponse response = new MockHttpServletResponse(); req.setHttpResponse(response); RuntimeException genericError = new RuntimeException("foo"); dispatcher.exception(genericError, null, req); assertEquals("Exception did not get saved", genericError, req.error); }
public void testReadOpContext() throws Exception { MockHttpServletRequest request = new MockHttpServletRequest(); request.setContextPath("/geoserver"); request.setRequestURI("/geoserver/hello"); request.setMethod("get"); Dispatcher dispatcher = new Dispatcher(); Request req = new Request(); req.httpRequest = request; dispatcher.init(req); Map map = dispatcher.readOpContext(req); assertEquals("hello", map.get("service")); request = new MockHttpServletRequest(); request.setContextPath("/geoserver"); request.setRequestURI("/geoserver/foobar/hello"); request.setMethod("get"); map = dispatcher.readOpContext(req); assertEquals("hello", map.get("service")); request = new MockHttpServletRequest(); request.setContextPath("/geoserver"); request.setRequestURI("/geoserver/foobar/hello/"); request.setMethod("get"); map = dispatcher.readOpContext(req); assertEquals("hello", map.get("service")); }
public void testParseKVP() throws Exception { URL url = getClass().getResource("applicationContext.xml"); FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext(url.toString()); Dispatcher dispatcher = (Dispatcher) context.getBean("dispatcher"); MockHttpServletRequest request = new MockHttpServletRequest(); request.setContextPath("/geoserver"); request.addParameter("service", "hello"); request.addParameter("request", "Hello"); request.addParameter("message", "Hello world!"); request.setQueryString("service=hello&request=hello&message=Hello World!"); Request req = new Request(); req.setHttpRequest(request); dispatcher.parseKVP(req); Message message = (Message) dispatcher.parseRequestKVP(Message.class, req); assertEquals(new Message("Hello world!"), message); }
public void testReadContextAndPath() throws Exception { Dispatcher dispatcher = new Dispatcher(); MockHttpServletRequest request = new MockHttpServletRequest(); request.setContextPath("/geoserver"); request.setRequestURI("/geoserver/hello"); request.setMethod("get"); Request req = new Request(); req.httpRequest = request; dispatcher.init(req); assertNull(req.context); assertEquals("hello", req.path); request.setRequestURI("/geoserver/foo/hello"); dispatcher.init(req); assertEquals("foo", req.context); assertEquals("hello", req.path); request.setRequestURI("/geoserver/foo/baz/hello/"); dispatcher.init(req); assertEquals("foo/baz", req.context); assertEquals("hello", req.path); }
public void testParseXML() throws Exception { URL url = getClass().getResource("applicationContext.xml"); FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext(url.toString()); Dispatcher dispatcher = (Dispatcher) context.getBean("dispatcher"); String body = "<Hello service=\"hello\" message=\"Hello world!\"/>"; File file = File.createTempFile("geoserver", "req"); try { FileOutputStream output = new FileOutputStream(file); output.write(body.getBytes()); output.flush(); output.close(); BufferedReader input = new BufferedReader(new InputStreamReader(new FileInputStream(file))); input.mark(8192); Request req = new Request(); req.setInput(input); Object object = dispatcher.parseRequestXML(null, input, req); assertEquals(new Message("Hello world!"), object); } finally { file.delete(); } }
Operation opDescriptor = new Operation("concat", service, method, parameters); Object result = dispatcher.execute(new Request(), opDescriptor); assertEquals("p1p2", result); assertTrue(invokeDirectCalled.get());
public class FrontController extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { process(req, resp); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { process(req, resp); } private void process(HttpServletRequest request, HttpServletResponse response) { Dispatcher dispatcher = Dispatcher.getInstance(); dispatcher.dispatch(request, response); } }
public void testNoErrorOn304ErrorCodeException() throws Exception { MockHttpServletRequest request = new MockHttpServletRequest(); request.setContextPath("/geoserver"); request.setRequestURI("/geoserver/hello"); request.setMethod("get"); Dispatcher dispatcher = new Dispatcher(); Request req = new Request(); req.httpRequest = request; dispatcher.init(req); MockHttpServletResponse response = new MockHttpServletResponse(); req.setHttpResponse(response); RuntimeException error = new HttpErrorCodeException(304, "Not Modified"); dispatcher.exception(error, null, req); assertNull("Exception erroneously saved", req.error); }
public void testErrorThrowingResponse() throws Exception { URL url = getClass().getResource("applicationContext-errorResponse.xml"); try (FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext(url.toString())) { Dispatcher dispatcher = (Dispatcher) context.getBean("dispatcher"); MockHttpServletRequest request = setupRequest(); MockHttpServletResponse response = new MockHttpServletResponse(); dispatcher.handleRequest(request, response); // the output is not there final String outputContent = response.getContentAsString(); assertThat(outputContent, not(containsString("Hello world!"))); // only the exception Document dom = XMLUnit.buildTestDocument(outputContent); assertEquals("ows:ExceptionReport", dom.getDocumentElement().getNodeName()); } } }
public void testErrorSavedOnRequestOnNon304ErrorCodeException() throws Exception { MockHttpServletRequest request = new MockHttpServletRequest(); request.setContextPath("/geoserver"); request.setRequestURI("/geoserver/hello"); request.setMethod("get"); Dispatcher dispatcher = new Dispatcher(); Request req = new Request(); req.httpRequest = request; dispatcher.init(req); MockHttpServletResponse response = new MockHttpServletResponse(); req.setHttpResponse(response); RuntimeException genericError = new HttpErrorCodeException(500, "Internal Server Error"); dispatcher.exception(genericError, null, req); assertEquals("Exception did not get saved", genericError, req.error); }
(GetMapKvpRequestReader) Dispatcher.findKvpRequestReader(GetMapRequest.class);
public void testDispatcherCallbackFailServiceDispatched() throws Exception { URL url = getClass().getResource("applicationContext.xml"); FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext(url.toString()); Dispatcher dispatcher = (Dispatcher) context.getBean("dispatcher"); final TestDispatcherCallback callback1 = new TestDispatcherCallback(); final TestDispatcherCallback callback2 = new TestDispatcherCallback(); TestDispatcherCallback callbackFail = new TestDispatcherCallback() { @Override public Service serviceDispatched(Request request, Service service) { dispatcherStatus.set(Status.SERVICE_DISPATCHED); throw new RuntimeException("TestDispatcherCallbackFailServiceDispatched"); } }; MockHttpServletRequest request = setupRequest(); MockHttpServletResponse response = new MockHttpServletResponse(); dispatcher.callbacks.add(callback1); dispatcher.callbacks.add(callbackFail); dispatcher.callbacks.add(callback2); dispatcher.handleRequest(request, response); assertTrue(response.getContentAsString().contains("ows:ExceptionReport")); assertEquals(TestDispatcherCallback.Status.FINISHED, callback1.dispatcherStatus.get()); assertEquals(TestDispatcherCallback.Status.FINISHED, callback2.dispatcherStatus.get()); }
if (data == null) { KvpRequestReader kvpReader = Dispatcher.findKvpRequestReader(GetFeatureType.class); Object requestBean = kvpReader.createRequest(); feature =