Hi Andrea, List,

So I'm giving acceptversions a try and have come across quite a number of issues. I don't think they're my mistakes, but please do correct me if they are.
These are all against a 2.12.0 deployment

A) WCS AcceptVersions only accepts version 2.0.0 or 2.0.1
?request=getCapabilities&service=WCS&acceptversions=1.1.1

What I expect is a WCS 1.1.1 spec. What I get is a WCS 2.0 exception:

<ows:Exception exceptionCode="NoApplicableCode">
<ows:ExceptionText>
java.io.IOExceptionjava.lang.IllegalArgumentException: Not a GetCapabilitiesType: net.opengis.wcs20.impl.GetCapabilitiesTypeImpl@7416780e (updateSequence: null, baseUrl: http://inspire.misoportal.com:80/geoserver/) (service: WCS) Not a GetCapabilitiesType: net.opengis.wcs20.impl.GetCapabilitiesTypeImpl@7416780e (updateSequence: null, baseUrl: http://inspire.misoportal.com:80/geoserver/) (service: WCS) []
</ows:ExceptionText>

For all my tests it produces an exception if 2.0.0 or 2.0.1 isn't somewhere in the acceptVersions parameter.


B) If the request is changed to 1.0.0, the request becomes:
?request=getCapabilities&service=WCS&AcceptVersions=1.0.0,0.8.3
(That's copied-and-pasted the example from the OWSCS spec itself)
The Exception is 2.0

<ows:Exception exceptionCode="VersionNegotiationFailed">
<ows:ExceptionText>Could not find any matching version []</ows:ExceptionText>
</ows:Exception>

Which seems like it's mis-representing me, I didn't required "version []", I requested 1.0.0


C) Behaviour changes again if I throw back in the "version" parameter. The spec says it should be ignored if acceptversions is there. It turns out the AcceptVersions and version must match or you get an exception:

This request:
?request=getCapabilities&service=WCS&acceptversions=1.0.0,2.0.0&version=1.1.1

brings back a WCS 1.1.0 exception:
<ows:Exception exceptionCode="VersionNegotiationFailed">
<ows:ExceptionText>
Could not find any matching version [1.0.0, 2.0.0] in supported list: [1.0.0, 2.0.0]
</ows:ExceptionText>

But these two work as expected
request=getCapabilities&service=WCS&acceptversions=1.0.0,2.0.0&version=2.0.0
request=getCapabilities&service=WCS&acceptversions=1.0.0,2.0.0&version=1.0.0

-----
WMS doesn't do acceptVersions as best I can see in the specs and correctly ignores that parameter.

-----
WFS seems better than WCS. I'm not sure what to expect for this response - I'm using AcceptVersions which is a WFS 2.0.0 to request a 1.1.0 page (which didn't support it). I suspect I should get the 1.1.0 response, but the response is the 2.0.0 spec: ?request=getCapabilities&service=WFS&acceptversions=1.1.0,2.0.0,1.0.0 - returns the 2.0.0 spec

That said, GeoServer still ignores the acceptversions in this request and returns a 1.1.0 spec because that's what "version" is asking for - the spec says it should be 2.0.0
?request=getCapabilities&service=WFS&acceptversions=2.0.0&version=1.1.0

If these seem valid I'll update the ticket or create new a one if desired.
For my own purposes I think it's safest if I switch back to just "version" and don't include "AcceptVersions " at all.

Cheers,
Jonathan

p.s. - the Above is non-exhaustive manual testing. Some good unit-tests across all services may get more.



On 2018-03-30 19:27, Jonathan Moules wrote:
Hi Andrea,
Ok, I was getting quite confused there for a bit, but I've figured out what's going on now. The WCS specs build on another specification - "OGC Web Services Common Specification" - and *that* is the place they talk about version negotiation. I had assumed because it wasn't specified it just built on the previous version (that being 1.0.0). And you are (of course) correct, they have indeed replaced Version with AcceptVersions. Thanks for the correction!

> WCS 1.0 is probably based on 1.0, WCS 1.1 still probably based on OWS 1.0 but not sure, WCS 2.0 I believe is based on OWS 2.0

If you're curious, WCS 1.0 doesn't seem to be based on any - probably why it declares that stuff explicitly. WCS 1.1 is OWSC 1.0, WCS 1.1.1 and 1.1.2 are OWSC 1.1.1, and of course WCS 2 is OWSC 2. "Fun fun" indeed! :-)

> it's not part of the OGC specifications. As such, it's free to behave as it pleases when you use it.

It's probably me again, but the OWSC subclause D.11 (both version 1.1 and 2.0, (it's subclause C.11 in 1.0)) does seem to cover these scenarios and does have provision for what to do if "version" is set. This seems to be the pertinent part:

"""
A server may also optionally implement the old-style version negotiation mechanism so that old clients that send GetCapabilities requests containing a “version” parameter can be served. If both a “version” and an AcceptVersions parameter exist in a GetCapabilities
request, the server shall ignore the “version” parameter.

a) The old-style version negotiation process using the GetCapabilities operation is as follows: The client initially makes a GetCapabilities operation request identifying the latest version it supports, and then the server responds to GetCapabilities operation
requests:
1) If no version number is specified in the request, the server shall respond with the
highest version it supports.
2) If the version number specified in the request is supported by the server, the
server shall respond with that version.
3) If the version number specified in the request is lower than the lowest version supported by the server, the server shall respond with the lowest version that it
supports.
4) If the version number specified in the request is higher than the lowest version supported by the server, the server shall respond with the highest version it
supports that is lower than the requested version.
"""

So while it's optional, it does seem to be specified what to do if the option is implemented. If I'm reading this right, this scenario falls under item (4).

But yes, this was mostly just a curious aside before I got drawn into the exciting world of OGC standards!

Thanks again!
Jonathan

On 2018-03-30 18:26, Andrea Aime wrote:
Hi Jonathan,
as said above, using "version" in GetCapabilities is a GeoServer vendor extension, it's not part of the OGC specifications.
As such, it's free to behave as it pleases when you use it.

The version negotiation protocol is described in the various OWS documents, each version of a protocol is based on a different version of OWS, e.g., WCS 1.0 is probably based on 1.0, WCS 1.1 still probably based on OWS 1.0 but not sure, WCS 2.0 I believe is based on OWS 2.0 (fun fun):
http://www.opengeospatial.org/standards/common

Go look for "GetCapabilities request KVP encoding" or something similar to find the requested behavior

Cheers
Andrea


On Fri, Mar 30, 2018 at 7:20 PM, Jonathan Moules <jonathan-li...@lightpear.com <mailto:jonathan-li...@lightpear.com>> wrote:

    Hi Andrea,
    Interesting, I'd not come across AcceptBersions before. A quick
    search through the WCS specs (Ctrl-F) indicates it first appears
    in 1.1.0, then the 1.1.1, and 1.1.2, and finally a single
    reference in 2.0.1. However none of them actually seem to explain
    it (they're either UML or XML examples), though I can guess what
    it does.

    I've opened a ticket for it (8670).

    (Incidentally, it's my first ticket using this new portal and I
    have to say - it's a real chore. Absurdly slow page loads, lots
    of login/redirect problems across two browsers, and once logged
    in it's non-obvious how to create a ticket.
    Also, I there was a big friendly "ACCESS DENIED" which may be as
    a result of the link I followed to get there - it's repeatable
    for me if I use the link from here to login -
    https://osgeo-org.atlassian.net/projects/GEOS/summary - the
    sign-up link there has the word "admin" in the URL, so I wonder
    if you're trying to get people to log in to the admin account by
    accident?)

    Thanks,
    Jonathan


    On 2018-03-30 17:33, Andrea Aime wrote:
    Hi Jonathan,
    there migth well be some issue in version negotiation, but the
    parameter to be used normally
    is acceptVersions, not version (version works for any other call
    but GetCapabiltiies, GeoServer still uses it
    in case there is an exact match). That might play a role too.

    Cheers
    Andrea


    On Fri, Mar 30, 2018 at 5:52 PM, Jonathan Moules
    <jonathan-li...@lightpear.com> wrote:

        Hi List,
            I have a version negotiation question for WCS.

        I'm making GetCapabilities requests to various public boxes
        for WCS version 1.1.2, and GeoServer doesn't seem to support
        this particular version. GeoServer seems to go from 1.1.1,
        then straight to 2.0.1; I guess that's what got funded.

            The odd thing is in this scenario, GeoServer is
        returning the 2.0.1 GetCap. I would have expected the 1.1.1
        GetCapabilities.
            The only WCS spec I can see that discusses version
        negotiation is the WCS 1.0.0 spec. Section 6.2.4 says:

            " If no version number is specified in the request, the
        server must respond with the highest version it understands
        and label the response accordingly."

            Ok, but I *did* specify a version number. My query is
        something like:
        
http://example.com/geoserver/ows?request=GetCapabilities&service=WCS&version=1.1.2
        
<http://example.com/geoserver/ows?request=GetCapabilities&service=WCS&version=1.1.2>

            So these are the negotiation rules in the spec:
            "a) If the server implements the requested version
        number, the server must send that version.

            b) If a version unknown to the server is requested, the
        server must send the highest version it knows that is less
        than the requested version.

            c) If the client request is for a version lower than any
        of those known to the server, then the server must send the
        lowest version it knows.
            [snip]"

            So my question is, which of these rules is triggering?
        To my mind it should be rule (b) - I'm requesting an unknown
        number, so the server should be returning the highest
        version that's *less* than it, so 1.1.1.
            Am I misreading the spec/situation or is this a bug in
        GeoServer's negotiating?
            Cheers,
            Jonathan


        
------------------------------------------------------------------------------
        Check out the vibrant tech community on one of the world's most
        engaging tech sites, Slashdot.org! http://sdm.link/slashdot
        _______________________________________________
        Geoserver-users mailing list

        Please make sure you read the following two resources before
        posting to this list:
        - Earning your support instead of buying it, but Ian Turton:
        http://www.ianturton.com/talks/foss4g.html#/
        <http://www.ianturton.com/talks/foss4g.html#/>
        - The GeoServer user list posting guidelines:
        http://geoserver.org/comm/userlist-guidelines.html

        If you want to request a feature or an improvement, also see
        this:
        
https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer


        Geoserver-users@lists.sourceforge.net
        <mailto:Geoserver-users@lists.sourceforge.net>
        https://lists.sourceforge.net/lists/listinfo/geoserver-users
        <https://lists.sourceforge.net/lists/listinfo/geoserver-users>




--
    Regards,

    Andrea Aime

    ==GeoServer Professional Services from the experts! Visit
    http://goo.gl/it488V for more information.==Ing. Andrea Aime
    @geowolfTechnical LeadGeoSolutions S.A.S.Via di Montramito 3/A
    
<https://maps.google.com/?q=Via+di+Montramito+3/A+%0D%0A+55054+%C2%A0Massarosa&entry=gmail&source=g>55054
     Massarosa
    
<https://maps.google.com/?q=Via+di+Montramito+3/A+%0D%0A+55054+%C2%A0Massarosa&entry=gmail&source=g>
    (LU)phone: +39 0584 962313 <tel:+39%200584%20962313>fax: +39
    0584 1660272 <tel:+39%200584%20166%200272>mob: +39  339 8844549
    
<tel:+39%20339%20884%204549>http://www.geo-solutions.ithttp://twitter.com/geosolutions_it
    <http://twitter.com/geosolutions_it>

    AVVERTENZE AI SENSI DEL D.Lgs. 196/2003

    Le informazioni contenute in questo messaggio di posta
    elettronica e/o nel/i file/s allegato/i sono da considerarsi
    strettamente riservate. Il loro utilizzo è consentito
    esclusivamente al destinatario del messaggio, per le finalità
    indicate nel messaggio stesso. Qualora riceviate questo
    messaggio senza esserne il destinatario, Vi preghiamo
    cortesemente di darcene notizia via e-mail e di procedere alla
    distruzione del messaggio stesso, cancellandolo dal Vostro
    sistema. Conservare il messaggio stesso, divulgarlo anche in
    parte, distribuirlo ad altri soggetti, copiarlo, od utilizzarlo
    per finalità diverse, costituisce comportamento contrario ai
    principi dettati dal D.Lgs. 196/2003.

    The information in this message and/or attachments, is intended
    solely for the attention and use of the named addressee(s) and
    may be confidential or proprietary in nature or covered by the
    provisions of privacy act (Legislative Decree June, 30 2003,
    no.196 - Italy's New Data Protection Code).Any use not in accord
    with its purpose, any disclosure, reproduction, copying,
    distribution, or either dissemination, either whole or partial,
    is strictly forbidden except previous formal approval of the
    named addressee(s). If you are not the intended recipient,
    please contact immediately the sender by telephone, fax or
    e-mail and delete the information in this message that has been
    received in error. The sender does not give any warranty or
    accept liability as the content, accuracy or c ompleteness of
    sent mes sages and accepts no responsibility  for changes made
    after they were sent or for other risks which arise as a result
    of e-mail transmission, viruses, etc.

--

Regards,

Andrea Aime

==GeoServer Professional Services from the experts! Visit http://goo.gl/it488V for more information.==Ing. Andrea Aime @geowolfTechnical LeadGeoSolutions S.A.S.Via di Montramito 3/A55054 Massarosa (LU)phone: +39 0584 962313fax: +39 0584 1660272mob: +39 339 8844549http://www.geo-solutions.ithttp://twitter.com/geosolutions_it

AVVERTENZE AI SENSI DEL D.Lgs. 196/2003

Le informazioni contenute in questo messaggio di posta elettronica e/o nel/i file/s allegato/i sono da considerarsi strettamente riservate. Il loro utilizzo è consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora riceviate questo messaggio senza esserne il destinatario, Vi preghiamo cortesemente di darcene notizia via e-mail e di procedere alla distruzione del messaggio stesso, cancellandolo dal Vostro sistema. Conservare il messaggio stesso, divulgarlo anche in parte, distribuirlo ad altri soggetti, copiarlo, od utilizzarlo per f inalità diverse, costituisce comportamento contrario ai principi dettati dal D.Lgs. 196/2003.

The information in this message and/or attachments, is intended solely for the attention and use of the named addressee(s) and may be confidential or proprietary in nature or covered by the provisions of privacy act (Legislative Decree June, 30 2003, no.196 - Italy's New Data Protection Code).Any use not in accord with its purpose, any disclosure, reproduction, copying, distribution, or either dissemination, either whole or partial, is strictly forbidden except previous formal approval of the named addressee(s). If you are not the inte nded recipient, please contact immediately the sender by telephone, fax or e-mail and delete the information in this message that has been received in error. The sender does not give any warranty or accept liability as the content, accuracy or completeness of sent messages and accepts no responsibility for changes made after they were sent or for other risks which arise as a result of e-mail transmission, viruses, etc.

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Geoserver-users mailing list

Please make sure you read the following two resources before posting to this 
list:
- Earning your support instead of buying it, but Ian Turton: 
http://www.ianturton.com/talks/foss4g.html#/
- The GeoServer user list posting guidelines: 
http://geoserver.org/comm/userlist-guidelines.html

If you want to request a feature or an improvement, also see this: 
https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer


Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Reply via email to