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; }
KvpRequestReader kvpReader = Dispatcher.findKvpRequestReader(GetFeatureType.class); Object requestBean = kvpReader.createRequest(); feature = (GetFeatureType)
/** * Simulates what the Dispatcher is doing when parsing a KVP request * * @param href * @param reader */ protected Object kvpParse(String href, KvpRequestReader reader) throws Exception { Map original = new KvpMap(KvpUtils.parseQueryString(href)); KvpUtils.normalize(original); Map parsed = new KvpMap(original); List<Throwable> errors = KvpUtils.parse(parsed); if (errors.size() > 0) { throw new WPSException("Failed to parse KVP request", errors.get(0)); } // hack to allow wcs filters to work... we should really upgrade the WCS models instead... Request r = Dispatcher.REQUEST.get(); if (r != null) { Map kvp = new HashMap(r.getKvp()); r.setKvp(new CaseInsensitiveMap(parsed)); } return reader.read(reader.createRequest(), parsed, original); }
/** * Simulates what the Dispatcher is doing when parsing a KVP request * * @param href * @param reader * @return */ Object kvpParse(String href, KvpRequestReader reader) throws Exception { Map original = new KvpMap(KvpUtils.parseQueryString(href)); KvpUtils.normalize(original); Map parsed = new KvpMap(original); List<Throwable> errors = KvpUtils.parse(parsed); if (errors.size() > 0) { throw new WPSException("Failed to parse KVP request", errors.get(0)); } // hack to allow wcs filters to work... we should really upgrade the WCS models instead... Request r = Dispatcher.REQUEST.get(); if (r != null) { Map kvp = new HashMap(r.getKvp()); r.setKvp(new CaseInsensitiveMap(parsed)); } return reader.read(reader.createRequest(), parsed, original); }