use of com.predic8.wsdl.WSDLParser in project service-proxy by membrane.
the class WSDLValidator method getSchemas.
@Override
protected List<Schema> getSchemas() {
WSDLParserContext ctx = new WSDLParserContext();
ctx.setInput(location);
try {
WSDLParser wsdlParser = new WSDLParser();
// System.out.println("Resolver----" + resourceResolver);
wsdlParser.setResourceResolver(resourceResolver.toExternalResolver().toExternalResolver());
List<Schema> schemaList = new ArrayList<Schema>();
for (Types t : wsdlParser.parse(ctx).getTypes()) schemaList.addAll(t.getSchemas());
return schemaList;
} catch (RuntimeException e) {
throw new IllegalArgumentException("Could not download the WSDL " + location + " or its dependent XML Schemas.", e);
}
}
use of com.predic8.wsdl.WSDLParser in project service-proxy by membrane.
the class WebServiceExplorerInterceptor method getParsedWSDL.
private Definitions getParsedWSDL() {
if (parsedWSDL != null)
return parsedWSDL;
WSDLParserContext ctx = new WSDLParserContext();
ctx.setInput(ResolverMap.combine(router.getBaseLocation(), wsdl));
WSDLParser wsdlParser = new WSDLParser();
wsdlParser.setResourceResolver(router.getResolverMap().toExternalResolver().toExternalResolver());
return parsedWSDL = wsdlParser.parse(ctx);
}
use of com.predic8.wsdl.WSDLParser in project irontest by zheng-wang.
the class WSDLResource method getOperationInfo.
@GET
@Path("/{wsdlUrl}/bindings/{bindingName}/operations/{operationName}")
public SOAPOperationInfo getOperationInfo(@PathParam("wsdlUrl") String wsdlUrl, @PathParam("bindingName") String bindingName, @PathParam("operationName") String operationName) {
SOAPOperationInfo info = new SOAPOperationInfo();
WSDLParser parser = new WSDLParser();
Definitions definition = parser.parse(wsdlUrl);
StringWriter writer = new StringWriter();
SOARequestCreator creator = new SOARequestCreator(definition, new RequestTemplateCreator(), new MarkupBuilder(writer));
creator.createRequest(null, operationName, bindingName);
info.setSampleRequest(writer.toString());
return info;
}
use of com.predic8.wsdl.WSDLParser in project service-proxy by membrane.
the class ResolverTest method testMembraneSoaModel.
@Test
public void testMembraneSoaModel() throws IOException {
if (hit = !setupLocations())
return;
try {
WSDLParserContext ctx = new WSDLParserContext();
ctx.setInput(wsdlLocation);
WSDLParser wsdlParser = new WSDLParser();
wsdlParser.setResourceResolver(resolverMap.toExternalResolver().toExternalResolver());
Definitions definitions = wsdlParser.parse(ctx);
for (Schema schema : definitions.getSchemas()) // trigger lazy-loading
schema.getElements();
} catch (Exception e) {
throw new RuntimeException("wsdlLocation = " + xsdLocation, e);
}
}
use of com.predic8.wsdl.WSDLParser in project service-proxy by membrane.
the class SOAPProxy method parseWSDL.
/**
* @return error or null for success
*/
private void parseWSDL() throws Exception {
WSDLParserContext ctx = new WSDLParserContext();
ctx.setInput(ResolverMap.combine(router.getBaseLocation(), wsdl));
try {
WSDLParser wsdlParser = new WSDLParser();
wsdlParser.setResourceResolver(resolverMap.toExternalResolver().toExternalResolver());
Definitions definitions = wsdlParser.parse(ctx);
List<Service> services = definitions.getServices();
if (services.size() != 1)
throw new IllegalArgumentException("There are " + services.size() + " services defined in the WSDL, but exactly 1 is required for soapProxy.");
Service service = services.get(0);
if (StringUtils.isEmpty(name))
name = StringUtils.isEmpty(service.getName()) ? definitions.getName() : service.getName();
List<Port> ports = service.getPorts();
Port port = selectPort(ports, portName);
String location = port.getAddress().getLocation();
if (location == null)
throw new IllegalArgumentException("In the WSDL, there is no @location defined on the port.");
try {
URL url = new URL(location);
target.setHost(url.getHost());
if (url.getPort() != -1)
target.setPort(url.getPort());
else
target.setPort(url.getDefaultPort());
if (key.getPath() == null) {
key.setUsePathPattern(true);
key.setPathRegExp(false);
key.setPath(url.getPath());
} else {
String query = "";
if (url.getQuery() != null) {
query = "?" + url.getQuery();
}
targetPath = url.getPath() + query;
}
if (location.startsWith("https")) {
SSLParser sslOutboundParser = new SSLParser();
target.setSslParser(sslOutboundParser);
}
((ServiceProxyKey) key).setMethod("*");
} catch (MalformedURLException e) {
throw new IllegalArgumentException("WSDL endpoint location '" + location + "' is not an URL.", e);
}
return;
} catch (Exception e) {
Throwable f = e;
while (f.getCause() != null && !(f instanceof ResourceRetrievalException)) f = f.getCause();
if (f instanceof ResourceRetrievalException) {
ResourceRetrievalException rre = (ResourceRetrievalException) f;
if (rre.getStatus() >= 400)
throw rre;
Throwable cause = rre.getCause();
if (cause != null) {
if (cause instanceof UnknownHostException)
throw (UnknownHostException) cause;
else if (cause instanceof ConnectException)
throw (ConnectException) cause;
}
}
throw new IllegalArgumentException("Could not download the WSDL '" + wsdl + "'.", e);
}
}
Aggregations