use of org.apache.cxf.tools.validator.internal.model.XNode in project cxf by apache.
the class WSDLRefValidator method collectValidationPointsForPortTypes.
private void collectValidationPointsForPortTypes() {
for (QName ptName : portTypeRefNames) {
PortType portType = getPortType(ptName);
if (portType == null) {
vResults.addError(new Message("NO_PORTTYPE", LOG, ptName));
continue;
}
XNode vPortTypeNode = getXNode(portType);
for (Operation operation : getOperations(portType).values()) {
XNode vOperationNode = getOperationXNode(vPortTypeNode, operation.getName());
if (operation.getInput() == null) {
vResults.addError(new Message("WRONG_MEP", LOG, operation.getName(), portType.getQName()));
continue;
}
javax.wsdl.Message inMsg = operation.getInput().getMessage();
if (inMsg == null) {
addWarning("Operation " + operation.getName() + " in PortType: " + portType.getQName() + " has no input message");
} else {
XNode vInMsgNode = getXNode(inMsg);
vInMsgNode.setFailurePoint(getInputXNode(vOperationNode, operation.getInput().getName()));
vNodes.add(vInMsgNode);
messageRefNames.add(inMsg.getQName());
}
if (operation.getOutput() != null) {
javax.wsdl.Message outMsg = operation.getOutput().getMessage();
if (outMsg == null) {
addWarning("Operation " + operation.getName() + " in PortType: " + portType.getQName() + " has no output message");
} else {
XNode vOutMsgNode = getXNode(outMsg);
vOutMsgNode.setFailurePoint(getOutputXNode(vOperationNode, operation.getOutput().getName()));
vNodes.add(vOutMsgNode);
messageRefNames.add(outMsg.getQName());
}
}
for (Iterator<?> iter = operation.getFaults().values().iterator(); iter.hasNext(); ) {
Fault fault = (Fault) iter.next();
javax.wsdl.Message faultMsg = fault.getMessage();
XNode vFaultMsgNode = getXNode(faultMsg);
vFaultMsgNode.setFailurePoint(getFaultXNode(vOperationNode, fault.getName()));
vNodes.add(vFaultMsgNode);
messageRefNames.add(faultMsg.getQName());
}
}
}
}
use of org.apache.cxf.tools.validator.internal.model.XNode in project cxf by apache.
the class WSDLRefValidator method getXNode.
private XNode getXNode(Service service, Port port) {
XNode vService = getXNode(service);
XPort pNode = new XPort();
pNode.setName(port.getName());
pNode.setParentNode(vService);
return pNode;
}
use of org.apache.cxf.tools.validator.internal.model.XNode in project cxf by apache.
the class WSDLRefValidatorTest method testWSDLImport2.
@Test
public void testWSDLImport2() throws Exception {
String wsdl = getClass().getResource("resources/physicalpt.wsdl").toURI().toString();
WSDLRefValidator validator = new WSDLRefValidator(getWSDL(wsdl), null);
assertTrue(validator.isValid());
String expected = "/wsdl:definitions[@targetNamespace='http://schemas.apache.org/yoko/idl/OptionsPT']" + "/wsdl:portType[@name='foo.bar']";
Set<String> xpath = new HashSet<>();
for (XNode node : validator.vNodes) {
xpath.add(node.toString());
}
assertTrue(xpath.contains(expected));
}
use of org.apache.cxf.tools.validator.internal.model.XNode in project cxf by apache.
the class WSDLRefValidator method isValid.
public boolean isValid() {
try {
loadServices();
collectValidationPoints();
List<Document> wsdlDocs = getWSDLDocuments();
for (XNode vNode : vNodes) {
if (!isExist(wsdlDocs, vNode)) {
// System.out.println("Fail: " + vNode.getXPath());
FailureLocation loc = getFailureLocation(wsdlDocs, vNode.getFailurePoint());
vResults.addError(new Message("FAILED_AT_POINT", LOG, loc.getLocation().getLineNumber(), loc.getLocation().getColumnNumber(), loc.getDocumentURI(), vNode.getPlainText()));
}
}
} catch (Exception e) {
this.vResults.addError(e.getMessage());
return false;
}
return vResults.isSuccessful();
}
use of org.apache.cxf.tools.validator.internal.model.XNode in project cxf by apache.
the class WSDLRefValidator method getBindings.
private Map<QName, XNode> getBindings(Service service) {
Map<QName, XNode> bindings = new HashMap<>();
if (service.getPorts().values().isEmpty()) {
throw new ToolException("Service " + service.getQName() + " does not contain any usable ports");
}
Collection<Port> ports = CastUtils.cast(service.getPorts().values());
for (Port port : ports) {
Binding binding = port.getBinding();
bindings.put(binding.getQName(), getXNode(service, port));
if (WSDLConstants.NS_WSDL11.equals(binding.getQName().getNamespaceURI())) {
throw new ToolException("Binding " + binding.getQName().getLocalPart() + " namespace set improperly.");
}
}
return bindings;
}
Aggregations