/**
* Copyright (C) 2007 - 2016 52°North Initiative for Geospatial Open Source
* Software GmbH
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.n52.wps.client.example;
import java.io.IOException;
import java.util.Random;
import javax.xml.transform.TransformerException;
import net.opengis.wps.x100.ExecuteDocument;
import net.opengis.wps.x100.ExecuteResponseDocument;
import net.opengis.wps.x100.ProcessDescriptionType;
import org.apache.xpath.XPathAPI;
import org.apache.xpath.objects.XObject;
import org.n52.wps.client.ExecuteRequestBuilder;
import org.n52.wps.client.WPSClientException;
import org.n52.wps.client.WPSClientSession;
public class EchoProcessExample {
private String url = "http://localhost:8080/wps/WebProcessingService";
private String processID = "org.n52.wps.server.algorithm.test.EchoProcess";
private Random rand = new Random();
public static void main(String[] args) {
EchoProcessExample example = new EchoProcessExample();
try {
example.run();
}
catch (IOException e) {
e.printStackTrace();
}
catch (WPSClientException e) {
e.printStackTrace();
}
catch (TransformerException e) {
e.printStackTrace();
}
}
private void run() throws IOException, WPSClientException, TransformerException {
System.out.println("EchoProcess Example");
// connect session
WPSClientSession wpsClient = WPSClientSession.getInstance();
boolean connected = wpsClient.connect(url);
if ( !connected) {
System.out.println("Could not connect to WPS.");
return;
}
// take a look at the process description
ProcessDescriptionType processDescription = wpsClient.getProcessDescription(url, processID);
System.out.println("Echo process description:\n" + processDescription.xmlText() + "\n");
// create the request, add literal input
ExecuteRequestBuilder executeBuilder = new ExecuteRequestBuilder(processDescription);
String input = "Hello lucky number " + rand.nextInt(42) + "!";
String parameterIn = "literalInput";
executeBuilder.addLiteralData(parameterIn, input);
String parameterOut = "literalOutput";
executeBuilder.setResponseDocument(parameterOut, null, null, null);
if ( !executeBuilder.isExecuteValid())
System.out.println("Created execute request is NOT valid.");
// build and send the request document
ExecuteDocument executeRequest = executeBuilder.getExecute();
System.out.println("Sending execute request:\n" + executeRequest.xmlText() + "\n");
Object response = wpsClient.execute(url, executeRequest);
System.out.println("Got response:\n" + response.toString() + "\n");
// compare input and output
if (response instanceof ExecuteResponseDocument) {
ExecuteResponseDocument responseDoc = (ExecuteResponseDocument) response;
XObject data = XPathAPI.eval(responseDoc.getDomNode(), "//wps:LiteralData");
String output = data.toString();
if (output.equals(input))
System.out.println("Echo received!");
}
}
}