in taverna-wsdl-activity/src/main/java/org/apache/taverna/activities/wsdl/WSDLActivityHealthChecker.java [61:123]
public VisitReport visit(Object o, List<Object> ancestors) {
List<VisitReport> reports = new ArrayList<VisitReport>();
activity = (Activity<?>) o;
String endpoint = null;
WSDLParser parser;
try {
JsonNode configuration = null;
if (activity instanceof WSDLActivity) {
configuration = ((WSDLActivity)activity).getConfiguration();
} else if (activity instanceof DisabledActivity) {
configuration = (JsonNode) ((DisabledActivity) activity).getActivityConfiguration();
}
endpoint = configuration.get("operation").get("wsdl").asText();
VisitReport wsdlEndpointReport = RemoteHealthChecker.contactEndpoint(activity, endpoint);
reports.add(wsdlEndpointReport);
if (!wsdlEndpointReport.getStatus().equals(Status.SEVERE)) {
parser = new WSDLParser(endpoint);
String operationName = configuration.get("operation").get("name").asText();
try {
reports.add(testStyleAndUse(endpoint,
parser,
operationName));
reports.add(testEndpoint(parser, operationName));
} catch (UnknownOperationException e) {
VisitReport vr = new VisitReport(HealthCheck.getInstance(), activity,
"Operation not found", HealthCheck.UNKNOWN_OPERATION,
Status.SEVERE);
vr.setProperty("operationName", operationName);
vr.setProperty("endpoint", endpoint);
reports.add(vr);
}
}
} catch (ParserConfigurationException e) {
VisitReport vr = new VisitReport(HealthCheck.getInstance(), activity, "Invalid WSDL", HealthCheck.BAD_WSDL, Status.SEVERE);
vr.setProperty("exception", e);
vr.setProperty("endpoint", endpoint);
reports.add(vr);
} catch (WSDLException e) {
VisitReport vr = new VisitReport(HealthCheck.getInstance(), activity, "Invalid WSDL", HealthCheck.BAD_WSDL, Status.SEVERE);
vr.setProperty("exception", e);
vr.setProperty("endpoint", endpoint);
reports.add(vr);
} catch (IOException e) {
VisitReport vr = new VisitReport(HealthCheck.getInstance(), activity, "Read problem", HealthCheck.IO_PROBLEM, Status.SEVERE);
vr.setProperty("exception", e);
vr.setProperty("endpoint", endpoint);
reports.add(vr);
} catch (SAXException e) {
VisitReport vr = new VisitReport(HealthCheck.getInstance(), activity, "Invalid WSDL", HealthCheck.BAD_WSDL, Status.SEVERE);
vr.setProperty("exception", e);
vr.setProperty("endpoint", endpoint);
reports.add(vr);
}
Status status = VisitReport.getWorstStatus(reports);
VisitReport report = new VisitReport(HealthCheck.getInstance(), activity, "WSDL Activity report", HealthCheck.NO_PROBLEM,
status, reports);
return report;
}