@Override public boolean isRecognizedQuery(String baseUri, String ctx, EndpointInfo endpointInfo, boolean contextMatchExact) { if (baseUri != null && (baseUri.contains("?") && (baseUri.toLowerCase().contains("wsdl") || baseUri.toLowerCase().contains("xsd=")))) { int idx = baseUri.indexOf("?"); Map<String, String> map = UrlUtils.parseQueryString(baseUri.substring(idx + 1)); if (map.containsKey("wsdl") || map.containsKey("xsd")) { if (contextMatchExact) { return endpointInfo.getAddress().contains(ctx); } else { // contextMatchStrategy will be "stem" return endpointInfo.getAddress(). contains(UrlUtils.getStem(baseUri.substring(0, idx))); } } } return false; }
public static List<Element> getSchemas(Server server, String id) { Message message = PhaseInterceptorChain.getCurrentMessage(); String base = (String)message.get(Message.REQUEST_URL); String ctxUri = (String)message.get(Message.PATH_INFO); WSDLGetUtils utils = new WSDLGetUtils(); EndpointInfo info = server.getEndpoint().getEndpointInfo(); Map<String, String> locs = utils.getSchemaLocations(message, base, ctxUri, info); List<Element> ret = new LinkedList<>(); for (Map.Entry<String, String> xsd : locs.entrySet()) { if (StringUtils.isEmpty(id) || id.equals(xsd.getKey())) { String query = xsd.getValue().substring(xsd.getValue().indexOf('?') + 1); Map<String, String> params = UrlUtils.parseQueryString(query); ret.add(utils.getDocument(message, base, params, ctxUri, info).getDocumentElement()); } } return ret; }
public static List<Element> getSchemas(Server server, String id) { Message message = PhaseInterceptorChain.getCurrentMessage(); String base = (String)message.get(Message.REQUEST_URL); String ctxUri = (String)message.get(Message.PATH_INFO); WSDLGetUtils utils = new WSDLGetUtils(); EndpointInfo info = server.getEndpoint().getEndpointInfo(); Map<String, String> locs = utils.getSchemaLocations(message, base, ctxUri, info); List<Element> ret = new LinkedList<>(); for (Map.Entry<String, String> xsd : locs.entrySet()) { if (StringUtils.isEmpty(id) || id.equals(xsd.getKey())) { String query = xsd.getValue().substring(xsd.getValue().indexOf('?') + 1); Map<String, String> params = UrlUtils.parseQueryString(query); ret.add(utils.getDocument(message, base, params, ctxUri, info).getDocumentElement()); } } return ret; }
try { int idx = baseUri.toLowerCase().indexOf("?"); Map<String, String> params = UrlUtils.parseQueryString(baseUri.substring(idx + 1));
String ctx = (String)message.get(Message.PATH_INFO); Map<String, String> map = UrlUtils.parseQueryString(query); if (isRecognizedQuery(map, baseUri, ctx, message.getExchange().getEndpoint().getEndpointInfo())) { Document doc = getDocument(message, baseUri, map, ctx);
public void handleMessage(Message message) throws Fault { String method = (String)message.get(Message.HTTP_REQUEST_METHOD); String query = (String)message.get(Message.QUERY_STRING); if (!"GET".equals(method) || StringUtils.isEmpty(query)) { return; } String baseUri = (String)message.get(Message.REQUEST_URL); URI uri = null; try { uri = URI.create(baseUri); } catch (IllegalArgumentException iae) { //invalid URI, ignore and continue return; } Map<String, String> map = UrlUtils.parseQueryString(query); if (isRecognizedQuery(map, uri, message.getExchange().getEndpoint().getEndpointInfo())) { try { Conduit c = message.getExchange().getDestination().getBackChannel(message); Message mout = new MessageImpl(); mout.setExchange(message.getExchange()); message.getExchange().setOutMessage(mout); mout.put(Message.CONTENT_TYPE, "application/javascript;charset=UTF-8"); c.prepare(mout); OutputStream os = mout.getContent(OutputStream.class); writeResponse(uri, map, os, message.getExchange().getEndpoint()); } catch (IOException ioe) { throw new Fault(ioe); } } }
message.put(WSDLGetUtils.class, utils); Map<String, String> map = UrlUtils.parseQueryString(query); if (isRecognizedQuery(map)) { Document doc = getDocument(utils, message, baseUri, map, ctx);
message.put(WSDLGetUtils.class, utils); Map<String, String> map = UrlUtils.parseQueryString(query); if (isRecognizedQuery(map)) { Document doc = getDocument(utils, message, baseUri, map, ctx);
@Test public void testNewDocumentIsCreatedForEachWsdlRequest() { JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean(); factory.setServiceBean(new StuffImpl()); factory.setAddress("http://localhost:" + PORT + "/Stuff"); Server server = factory.create(); try { Message message = new MessageImpl(); Exchange exchange = new ExchangeImpl(); exchange.put(Bus.class, getBus()); exchange.put(Service.class, server.getEndpoint().getService()); exchange.put(Endpoint.class, server.getEndpoint()); message.setExchange(exchange); Map<String, String> map = UrlUtils.parseQueryString("wsdl"); String baseUri = "http://localhost:" + PORT + "/Stuff"; String ctx = "/Stuff"; WSDLGetUtils utils = new WSDLGetUtils(); Document doc = utils.getDocument(message, baseUri, map, ctx, server.getEndpoint().getEndpointInfo()); Document doc2 = utils.getDocument(message, baseUri, map, ctx, server.getEndpoint().getEndpointInfo()); assertFalse(doc == doc2); } finally { server.stop(); } } }