[Geoserver-devel] WCS 1.1.1 implementation status and moving forward

Hi,
I'm sending this mail to give you a status report of my WCS 1.1.1
work and try to find a way forward.

First of all, some introductions. WCS 1.1.1 is published as a standard
on the OGC site, it's based on OWS 1.1 and GML 3.1, and protocol wise,
it's a complete rewrite of what WCS 1.0 used to be. This means that,
whilst semantically it may be similar, the xml does not share almost
anything of the old structure.
Not happy with that, the KVP structure radically changed too. And let's
not speak about the GetCoverage response. Please have a seat...
the WCS 1.1.1 GetCoverage response is not a coverage. No. It's a mime
multipart document where the first part is an XML description of the
response, the second part is the coverage encoded as the user requested
it, and the eventual third and subsequent parts are metadata documents
describing the returned coverage (the format of the metadata is open
afaik).

To mess the waters a little more, there is the new dispatcher and
xml parsing/encoding subsystem. wcs 1.1.1 module has been implemented
to use both of them.

Soo... long story short, there is not a split hope to share significant
amounts of code between the wcs 1.0 and wcs 1.1 implementations.
As long as GetCapabilities and DescribeCoverage are concerned, this
cannot be helped, the xml returned is simply too different.

GetCoverage request is a little different thougth, there I would like
to share some code, but I'm having troubles finding how. The old
code wants the old CoverageRequest, the new code will offer a GetCoverateType object that reflects the structure of the WCS 1.1
GetCoverage xsd type. It's not a tragedy, GetCoverage code is not
big, but it's annoying.

What I'm a little more concerned is how we do move forward. The
WFS way was to ditch the wfs 1.0 code and have the wfs 1.0 protocol
level generate the wfs 1.1 request objects. It seems with WCS
the same will be needed if we want to avoid mantainance headaches.
Again, this is probably not such a big issue, that can be addressed
by having the old parsers run, and instead of returning the old
request objects, perform a translation and return the new ones instead.
A direct parsing from the old protocol to the new request objects
seems harder, since at least for the GetCoverage request the new
xml tree and kvp params are totally different.

The nd coverage effort must be considered as well. How big are the
changes at the GetCoverage code level? So far I've tried to keep
the code I wrote dimension agnostic, yet I haven't implemented
the time request parsing (which, again, has changed) so some extras
are needed there too.

I know this mail opens more issues than it provide solutions, sorry
about that, but I guess it's time we start talking. If you need
more informations about what's going on on the wcs 1.1.1 side just
ask, I know I've been scarce on details but I did not want to
turn this mail into a poem (I did anyways...)

Cheers
Andrea