public Configuration parseConfiguration()

in taverna-scufl2-t2flow/src/main/java/org/apache/taverna/scufl2/translator/t2flow/defaultdispatchstack/LoopParser.java [89:137]


	public Configuration parseConfiguration(T2FlowParser t2FlowParser,
			ConfigBean configBean, ParserState parserState)
			throws ReaderException {
		LoopConfig loopConfig = unmarshallConfig(t2FlowParser, configBean,
				"xstream", LoopConfig.class);

		final Configuration c = new Configuration();
		c.setType(scufl2Uri.resolve("Config"));

		ObjectNode json = (ObjectNode) c.getJson();

		json.put("runFirst", loopConfig.isRunFirst());

		for (Property prop : loopConfig.getProperties().getProperty())
			json.put(prop.getName(), prop.getValue());
		
		String conditionXml = loopConfig.getConditionXML();	
		if (conditionXml == null)
		    // activity is unconfigured (bug in T2). 
		    // Return c only if there are properties beyond "runFirst"
			return json.size() > 1 ? c : null;
		Activity conditionActivity = unmarshallXml(
				parserState.getT2FlowParser(), conditionXml, Activity.class);
		try {
			ConditionalActivityParser internalParser = new ConditionalActivityParser(
					parserState);

			org.apache.taverna.scufl2.api.activity.Activity newActivity = internalParser
					.parseActivity(conditionActivity);
			String name = parserState.getCurrentProcessor().getName() + "-loop";
			newActivity.setName(name);
			parserState.getCurrentProfile().getActivities()
					.addWithUniqueName(newActivity);
			newActivity.setParent(parserState.getCurrentProfile());

			Configuration newConfig = internalParser
					.parseConfiguration(conditionActivity.getConfigBean());
			newConfig.setName(name);
			newConfig.setConfigures(newActivity);
			parserState.getCurrentProfile().getConfigurations()
					.addWithUniqueName(newConfig);
			// URI uriActivity = uriTools.relativeUriForBean(newActivity, parserState.getCurrentProfile());
			json.put("conditionActivity", newActivity.getName());
		} catch (JAXBException e) {
			throw new ReaderException("Can't parse conditional loop activity",
					e);
		}
		return c;
	}