Hi, I noticed that for the WPS2.0.0 version of DescribeProcess the client fails when it encounters the Metadata Tag.
Here is an example that can be easily tested using the integrated tests:
<?xml version="1.0" encoding="UTF-8"?>
<wps:ProcessOfferings xmlns:ows="http://www.opengis.net/ows/2.0" xmlns:wps="http://www.opengis.net/wps/2.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wps/2.0 http://schemas.opengis.net/wps/2.0/wps.xsd">
<wps:ProcessOffering processVersion="1.0.0" jobControlOptions="sync-execute async-execute dismiss" outputTransmission="value reference">
<wps:Process>
<ows:Title>Demo long process. </ows:Title>
<ows:Abstract>This service doesn't do anything except taking its time, it demonstrates how to use the updateStatus function from your ZOO Service. </ows:Abstract>
<ows:Identifier>longProcess</ows:Identifier>
<ows:Metadata xlink:title="Demo XSL use case"/>
<wps:Input minOccurs="0" maxOccurs="1">
<ows:Title>Service ID</ows:Title>
<ows:Abstract>A ZOO Service ID (unused).</ows:Abstract>
<ows:Identifier>sid</ows:Identifier>
<wps:LiteralData>
<wps:Format mimeType="text/plain" default="true"/>
<LiteralDataDomain default="true">
<ows:AnyValue/>
<ows:DataType ows:reference="http://www.w3.org/TR/xmlschema-2/#integer">integer</ows:DataType>
</LiteralDataDomain>
</wps:LiteralData>
</wps:Input>
<wps:Output>
<ows:Title>ExecuteResponse document</ows:Title>
<ows:Abstract>The resulting ExecuteResponse document.</ows:Abstract>
<ows:Identifier>Result</ows:Identifier>
<ows:Metadata xlink:title="Demo XSL use case"/>
<wps:LiteralData>
<wps:Format mimeType="text/plain" default="true"/>
<LiteralDataDomain default="true">
<ows:AnyValue/>
<ows:DataType ows:reference="http://www.w3.org/TR/xmlschema-2/#string">string</ows:DataType>
</LiteralDataDomain>
</wps:LiteralData>
</wps:Output>
</wps:Process>
</wps:ProcessOffering>
</wps:ProcessOfferings>
@Test
public void xxxxx() throws XMLStreamException, IOException {
final Path basePath = RESOURCES_PATH.resolve("wps200").resolve("v2.xml");
XMLEventReader xmlReader = null;
try(InputStream inputStream = Files.newInputStream(basePath)) {
xmlReader = XMLInputFactory.newInstance().createXMLEventReader(new InputStreamReader(inputStream));
Object o = new WPSResponseReader().readElement(xmlReader);
}
}
ParseError at [row,col]:[25,64]
Message: unexpected tag: {http://www.opengis.net/ows/2.0}Metadata
javax.xml.stream.XMLStreamException: ParseError at [row,col]:[25,64]
Message: unexpected tag: {http://www.opengis.net/ows/2.0}Metadata
at org.n52.iceland.util.XmlFactories.unexpectedTag(XmlFactories.java:142)
at org.n52.geoprocessing.wps.client.decoder.stream.DescribeProcessResponseDecoder.readOutput(DescribeProcessResponseDecoder.java:207)
at org.n52.geoprocessing.wps.client.decoder.stream.DescribeProcessResponseDecoder.readProcess(DescribeProcessResponseDecoder.java:168)
at org.n52.geoprocessing.wps.client.decoder.stream.DescribeProcessResponseDecoder.readProcessOffering(DescribeProcessResponseDecoder.java:119)
at org.n52.geoprocessing.wps.client.decoder.stream.DescribeProcessResponseDecoder.readProcessOfferings(DescribeProcessResponseDecoder.java:98)
at org.n52.geoprocessing.wps.client.xml.WPSResponseReader.readProcessOfferingsResponse(WPSResponseReader.java:110)
at org.n52.geoprocessing.wps.client.xml.WPSResponseReader.readElement(WPSResponseReader.java:50)
at com.cgi.eoss.platform.harvesters.wps.client.v2.ClientExecuteResponseMapperTest.xxxxx(ClientExecuteResponseMapperTest.java:111)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:114)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:57)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:66)
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
at com.sun.proxy.$Proxy1.processTestClass(Unknown Source)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:109)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:146)
at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:128)
at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.lang.Thread.run(Thread.java:748)
Hi, I noticed that for the WPS2.0.0 version of DescribeProcess the client fails when it encounters the Metadata Tag. Here is an example that can be easily tested using the integrated tests:
Thanks for the invaluable help