public VisitReport visit()

in taverna-wsdl-activity/src/main/java/org/apache/taverna/activities/wsdl/WSDLActivityDescriptorChecker.java [70:128]


	public VisitReport visit(InputPortTypeDescriptorActivity o,
			List<Object> ancestry) {
		List<VisitReport> reports = new ArrayList<VisitReport>();
		try {
			Map<String, TypeDescriptor> typeMap = o.getTypeDescriptorsForInputPorts();
			Processor p = (Processor) VisitReport.findAncestor(ancestry, Processor.class);
			Dataflow d = (Dataflow) VisitReport.findAncestor(ancestry, Dataflow.class);
			
			
			for (Entry<String, TypeDescriptor> entry : typeMap.entrySet()) {
				TypeDescriptor descriptor = entry.getValue();
				if (!descriptor.getMimeType().contains("'text/xml'")) {
					continue;
				}
				if (!((descriptor instanceof ArrayTypeDescriptor) || (descriptor instanceof ComplexTypeDescriptor))) {
					continue;
				}
				// Find the processor port, if any that corresponds to the activity port
				ActivityInputPort aip = Tools.getActivityInputPort((Activity) o, entry.getKey());
				if (aip == null) {
					continue;
				}
				ProcessorInputPort pip = Tools.getProcessorInputPort(p, (Activity<?>) o, aip);
				
				if (pip == null) {
					continue;
				}
				
				for (Datalink dl : d.getLinks()) {

					if (dl.getSink().equals(pip)) {
						Port source = dl.getSource();
						Set<VisitReport> subReports = checkSource(source, d, (Activity) o, aip);
						for (VisitReport vr : subReports) {
						    vr.setProperty("activity", o);
						    vr.setProperty("sinkPort", pip);
						}
						reports.addAll(subReports);
					}
				}

			}
		} catch (UnknownOperationException e) {
			logger.error("Problem getting type descriptors for activity", e);
		} catch (IOException e) {
			logger.error("Problem getting type descriptors for activity", e);
		} catch (NullPointerException e) {
			logger.error("Problem getting type desciptors for activity", e);
		}
		if (reports.isEmpty()) {
			return null;
		}
		if (reports.size() == 1) {
			return reports.get(0);
		}
		else {
			return new VisitReport(HealthCheck.getInstance(), o, "Collation", HealthCheck.DEFAULT_VALUE, reports);
		}
	}