protected void parseActivityOutputMap()

in taverna-scufl2-t2flow/src/main/java/org/apache/taverna/scufl2/translator/t2flow/T2FlowParser.java [588:634]


	protected void parseActivityOutputMap(
			org.apache.taverna.scufl2.xml.t2flow.jaxb.Map outputMap)
			throws ReaderException {
		for (Mapping mapping : outputMap.getMap()) {
			String fromActivityOutput = mapping.getFrom();
			String toProcessorOutput = mapping.getTo();
			ProcessorOutputPortBinding processorOutputPortBinding = new ProcessorOutputPortBinding();

			OutputProcessorPort outputProcessorPort = findNamed(parserState
					.get().getCurrentProcessor().getOutputPorts(),
					toProcessorOutput);
			if (outputProcessorPort == null) {
				String message = "Invalid output port binding, "
						+ "unknown processor port: " + fromActivityOutput
						+ "->" + toProcessorOutput + " in "
						+ parserState.get().getCurrentProcessor();
				if (isStrict())
					throw new ReaderException(message);
				logger.warning(message);
				continue;
			}

			OutputActivityPort outputActivityPort = parserState.get()
					.getCurrentActivity().getOutputPorts()
					.getByName(fromActivityOutput);
			if (outputActivityPort == null) {
				outputActivityPort = new OutputActivityPort();
				outputActivityPort.setName(fromActivityOutput);
				outputActivityPort.setParent(parserState.get()
						.getCurrentActivity());
				parserState.get().getCurrentActivity().getOutputPorts()
						.add(outputActivityPort);
			}

			if (outputActivityPort.getDepth() == null)
				outputActivityPort.setDepth(outputProcessorPort.getDepth());
			if (outputActivityPort.getGranularDepth() == null)
				outputActivityPort.setGranularDepth(outputProcessorPort
						.getGranularDepth());

			processorOutputPortBinding.setBoundActivityPort(outputActivityPort);
			processorOutputPortBinding
					.setBoundProcessorPort(outputProcessorPort);
			parserState.get().getCurrentProcessorBinding()
					.getOutputPortBindings().add(processorOutputPortBinding);
		}
	}