Uploaded image for project: 'GeoServer'
  1. GEOS-8645

WPS aggregate process always requires the type name to be prefixed with the workspace name

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Medium
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.14-RC
    • Component/s: WPS
    • Labels:

      Description

      In the context of the correct virtual service, WPS aggregate process requires the type name to be prefixed with the workspace name. This issue is probably no limited to the aggregate process only.

      This issue can be reproduced with the topp:states layers using the following request:

      <?xml version="1.0" encoding="UTF-8"?><wps:Execute version="1.0.0" service="WPS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.opengis.net/wps/1.0.0" xmlns:wfs="http://www.opengis.net/wfs" xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:gml="http://www.opengis.net/gml" xmlns:ogc="http://www.opengis.net/ogc" xmlns:wcs="http://www.opengis.net/wcs/1.1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd">
        <ows:Identifier>gs:Aggregate</ows:Identifier>
        <wps:DataInputs>
          <wps:Input>
            <ows:Identifier>features</ows:Identifier>
            <wps:Reference mimeType="text/xml" xlink:href="http://geoserver/wfs" method="POST">
              <wps:Body>
                <wfs:GetFeature service="WFS" version="1.0.0" outputFormat="GML2" xmlns:sf="http://www.openplans.org/spearfish">
                  <wfs:Query typeName="states"/>
                </wfs:GetFeature>
              </wps:Body>
            </wps:Reference>
          </wps:Input>
          <wps:Input>
            <ows:Identifier>aggregationAttribute</ows:Identifier>
            <wps:Data>
              <wps:LiteralData>PERSONS</wps:LiteralData>
            </wps:Data>
          </wps:Input>
          <wps:Input>
            <ows:Identifier>function</ows:Identifier>
            <wps:Data>
              <wps:LiteralData>Count</wps:LiteralData>
            </wps:Data>
          </wps:Input>
          <wps:Input>
            <ows:Identifier>function</ows:Identifier>
            <wps:Data>
              <wps:LiteralData>Average</wps:LiteralData>
            </wps:Data>
          </wps:Input>
          <wps:Input>
            <ows:Identifier>function</ows:Identifier>
            <wps:Data>
              <wps:LiteralData>Sum</wps:LiteralData>
            </wps:Data>
          </wps:Input>
          <wps:Input>
            <ows:Identifier>function</ows:Identifier>
            <wps:Data>
              <wps:LiteralData>Min</wps:LiteralData>
            </wps:Data>
          </wps:Input>
          <wps:Input>
            <ows:Identifier>function</ows:Identifier>
            <wps:Data>
              <wps:LiteralData>Max</wps:LiteralData>
            </wps:Data>
          </wps:Input>
          <wps:Input>
            <ows:Identifier>singlePass</ows:Identifier>
            <wps:Data>
              <wps:LiteralData>false</wps:LiteralData>
            </wps:Data>
          </wps:Input>
        </wps:DataInputs>
        <wps:ResponseForm>
          <wps:RawDataOutput mimeType="application/json">
            <ows:Identifier>result</ows:Identifier>
          </wps:RawDataOutput>
        </wps:ResponseForm>
      </wps:Execute>
      

      Targeting topp virtual service:

      http://<host>:<port>/geoserver/topp/wps
      

      This request will fail with the following exception:

      org.geoserver.wps.WPSException: Failed to retrieve value for input features
      	at org.geoserver.wps.executor.LazyInputMap.parseInputs(LazyInputMap.java:94)
      	at org.geoserver.wps.executor.LazyInputMap.get(LazyInputMap.java:50)
      	at org.geotools.process.factory.AnnotationDrivenProcessFactory$InvokeMethodProcess.buildProcessArguments(AnnotationDrivenProcessFactory.java:659)
      	at org.geotools.process.factory.AnnotationDrivenProcessFactory$InvokeMethodProcess.execute(AnnotationDrivenProcessFactory.java:544)
      	at org.geoserver.wps.executor.ProcessStartupFilter$ProcessStartupWrapper.execute(ProcessStartupFilter.java:51)
      	at org.geoserver.wps.executor.DefaultProcessManager$ProcessCallable.call(DefaultProcessManager.java:201)
      	at org.geoserver.wps.executor.DefaultProcessManager$ProcessCallable.call(DefaultProcessManager.java:169)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
      	at java.lang.Thread.run(Thread.java:748)
      Caused by: org.geoserver.wfs.WFSException: Could not locate {http://www.opengis.net/wfs}states in catalog.
      	at org.geoserver.wfs.GetFeature.featureTypeInfo(GetFeature.java:1256)
      	at org.geoserver.wfs.GetFeature.run(GetFeature.java:396)
      	at org.geoserver.wfs.DefaultWebFeatureService.getFeature(DefaultWebFeatureService.java:122)
      	at org.geoserver.wps.executor.InternalWFSInputProvider.getValueInternal(InternalWFSInputProvider.java:48)
      	at org.geoserver.wps.executor.AbstractInputProvider.getValue(AbstractInputProvider.java:97)
      	at org.geoserver.wps.executor.LazyInputMap.parseInputs(LazyInputMap.java:86)
      	... 10 more
      

        Attachments

          Activity

            People

            • Assignee:
              nmco Nuno Oliveira
              Reporter:
              nmco Nuno Oliveira
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: