52North / wps-client-lib

WPS client library written in Java. Support for WPS 1.0.0 and 2.0.
Apache License 2.0
6 stars 4 forks source link

javax.xml.stream.XMLStreamException: ParseError Message: unexpected tag: {http://www.opengis.net/ows/2.0}Metadata #28

Open robertodirienzo opened 2 years ago

robertodirienzo commented 2 years ago

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)

Thanks for the invaluable help