public void findServiceDescriptionsAsync()

in taverna-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/GisServiceProvider.java [72:152]


	public void findServiceDescriptionsAsync(FindServiceDescriptionsCallBack callBack) {
		// Use callback.status() for long-running searches
		callBack.status("Resolving GIS services");

		List<ServiceDescription> results = new ArrayList<ServiceDescription>();

		// FIXME: Implement the actual service search/lookup instead
		// of dummy for-loop

		GisServiceDesc service = new GisServiceDesc();
		// Populate the service description bean
		ObjectNode conf = getConfiguration().getJsonAsObjectNode();
		String serviceUri = conf.get("osgiServiceUri").asText();
		service.setOgcServiceUri(URI.create(serviceUri));
		String processIdentifier = conf.get("processIdentifier").asText();
		service.setProcessIdentifier(processIdentifier);

		// TODO: Optional: set description (Set a better description
		service.setDescription(processIdentifier);

		// TODO: Exctract in a separate method
		// Get input ports

		WPSClientSession wpsClient = WPSClientSession.getInstance();

        ProcessDescriptionType processDescription;
		try {
			processDescription = wpsClient
			        .getProcessDescription(serviceUri, processIdentifier);

			InputDescriptionType[] inputList = processDescription.getDataInputs()
	                .getInputArray();

	        List<ActivityInputPortDefinitionBean> inputPortDefinitions = new ArrayList<ActivityInputPortDefinitionBean>();

	        for (InputDescriptionType input : inputList) {
	    		ActivityInputPortDefinitionBean newInputPort = new ActivityInputPortDefinitionBean();
	    		newInputPort.setName(input.getIdentifier().getStringValue());
	    		newInputPort.setDepth(0);
	    		newInputPort.setAllowsLiteralValues(true);
	    		newInputPort.setHandledReferenceSchemes(null);
	    		newInputPort.setTranslatedElementType(String.class);

	    		inputPortDefinitions.add(newInputPort);

	        }

	       // service.setInputPortDefinitions(inputPortDefinitions);


	        // Get output ports

	        OutputDescriptionType[] outputList = processDescription.getProcessOutputs().getOutputArray();
	        List<ActivityOutputPortDefinitionBean> outputPortDefinitions = new ArrayList<ActivityOutputPortDefinitionBean>();

	        for( OutputDescriptionType output : outputList )
	        {
	        	ActivityOutputPortDefinitionBean newOutputPort = new ActivityOutputPortDefinitionBean();
	        	newOutputPort.setName(output.getIdentifier().getStringValue());
	        	newOutputPort.setDepth(0);

	        	outputPortDefinitions.add(newOutputPort);

	        }

	        //service.setOutputPortDefinitions(outputPortDefinitions);

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		results.add(service);

		// partialResults() can also be called several times from inside
		// for-loop if the full search takes a long time
		callBack.partialResults(results);

		// No more results will be coming
		callBack.finished();
	}