public Configuration parseConfiguration()

in taverna-scufl2-t2flow/src/main/java/org/apache/taverna/scufl2/translator/t2flow/t23activities/ExternalToolActivityParser.java [117:202]


	public Configuration parseConfiguration(T2FlowParser t2FlowParser,
			ConfigBean configBean, ParserState parserState)
			throws ReaderException {
		ExternalToolConfig externalToolConfig = null;
		UsecaseConfig usecaseConfig = null;

		try {
			externalToolConfig = unmarshallConfig(t2FlowParser, configBean,
					"xstream", ExternalToolConfig.class);
		} catch (ReaderException ex) {
			usecaseConfig = unmarshallConfig(t2FlowParser, configBean,
					"xstream", UsecaseConfig.class);
		}

		Configuration configuration = new Configuration();
		configuration.setParent(parserState.getCurrentProfile());
		parserState.setCurrentConfiguration(configuration);
		try {
			ObjectNode json = configuration.getJsonAsObjectNode();

			configuration.setType(ACTIVITY_URI.resolve("#Config"));

			if (usecaseConfig != null) {
				if (usecaseConfig.getRepositoryUrl() != null)
					json.put("repositoryUrl", usecaseConfig.getRepositoryUrl());
				json.put("toolId", usecaseConfig.getUsecaseid());
			} else if (externalToolConfig != null) {
				if (externalToolConfig.getRepositoryUrl() != null)
					json.put("repositoryUrl",
							externalToolConfig.getRepositoryUrl());
				json.put("toolId", externalToolConfig.getExternaltoolid());
				if (externalToolConfig.isEdited())
					json.put("edited", externalToolConfig.isEdited());
			}

			if (externalToolConfig != null) {
				Group group = externalToolConfig.getGroup();
				if (group != null) {
					ObjectNode invocationGroup = json.objectNode();
					json.put("invocationGroup", invocationGroup);
					invocationGroup.put("name", group.getInvocationGroupName());
					invocationGroup.put("mechanismType",
							group.getMechanismType());
					invocationGroup.put("mechanismName",
							group.getMechanismName());
					invocationGroup
							.put("mechanismXML", group.getMechanismXML());
				} else {
					json.put("mechanismType",
							externalToolConfig.getMechanismType());
					json.put("mechanismName",
							externalToolConfig.getMechanismName());
					json.put("mechanismXML",
							externalToolConfig.getMechanismXML());
				}
//				URI mechanismTypeURI = ACTIVITY_URI.resolve("#"
//						+ uriTools.validFilename(mechanismType));
//				if (mappedMechanismTypes.containsKey(mechanismTypeURI)) {
//					mechanismTypeURI = mappedMechanismTypes.get(mechanismTypeURI);
//				}
//				invocation.addPropertyReference(ACTIVITY_URI.resolve("#mechanismType"),
//						mechanismTypeURI);
//
//				invocation.addPropertyAsString(ACTIVITY_URI.resolve("#mechanismName"),
//						mechanismName);
//				invocation.addProperty(ACTIVITY_URI.resolve("#mechanismXML"), new PropertyLiteral(
//						mechanismXML, PropertyLiteral.XML_LITERAL));
                
                // TODO: Extract SSH hostname etc. from mechanismXML
//				parseMechanismXML(json);

				ObjectNode toolDescription = json.objectNode();
				parseToolDescription(toolDescription,
						externalToolConfig.getUseCaseDescription(), parserState);
				json.put("toolDescription", toolDescription);

//				configResource.addProperty(ACTIVITY_URI.resolve("#invocationGroup"),
//						parseGroup(externalToolConfig.getGroup()));

			}

			return configuration;
		} finally {
			parserState.setCurrentConfiguration(null);
		}
	}