MapServer / MapServer-import

3 stars 2 forks source link

[OWS-Common] abstraction of common XML #1954

Open tbonfort opened 12 years ago

tbonfort commented 12 years ago

Reporter: tomkralidis Date: 2006/10/31 - 18:57

(I've put this as an SOS enhancement as I think this will be the best place for
initial implementation, since SOS is not used very much yet, but this applies an
an enhancement to all OGC MapServer code).

Future OGC specifications (including all the OWSs supported by
MapServer) will obey the OWS Common Specification 1.0.0.  More info about OWS
Common 1.0.0 is at:

http://www.opengeospatial.org/standards/common

It would be a good idea to begin to build this as OWS specs merge to OWS Common.
 Defining a set of msOWSCommon functions would mean simply calling them in
future code of supporting OGC Web Services (i.e. WFS 1.1.0 is already there, in
addition to the forthcoming SOS 1.0.0.).

This file would be a set of routines to cover the OWS Common Specification, and
return XML objects which adhere to OWS Common.
tbonfort commented 12 years ago

Author: tomkralidis Date: 2006/10/31 - 18:58


FYI: I've started working on mapowscommon.c / mapowscommon.h and will commit
after more testing.
tbonfort commented 12 years ago

Author: dmorissette Date: 2006/10/31 - 19:25

Reassigned bug to Tom.
tbonfort commented 12 years ago

Author: tomkralidis Date: 2006/11/10 - 03:04


Update:

- I've committed a first pass of mapowscommon.c/h to CVS.  See mapowscommon.h
for functions that can be used by calling code
- I've updated mapogcsos.c to use mapowscommon.c functions for exceptions,
ServiceIdentification, and ServiceProvider
- updated Makefile.in and Makefile.vc

I have tested this code with no errors or warnings on FC4.  Assefa has verified
that this works on Win32 as well from a copy of the code I emailed to him a few
days ago.

Issues:

- when running an OGC:SOS GetCapabilties through valgrind, I get complaints of
memory leak:

==15389== 1735 (660 direct, 1075 indirect) bytes in 33 blocks are definitely
lost in loss record 20 of 25
==15389==    at 0x1B909222: malloc (vg_replace_malloc.c:130)
==15389==    by 0x13DE49: xmlNewNs (in /usr/lib/libxml2.so.2.6.20)
==15389==    by 0x80D3CAD: msOWSCommonServiceIdentification (mapowscommon.c:65)
==15389==    by 0x80D090D: msSOSGetCapabilities (mapogcsos.c:956)
==15389==    by 0x80D29D8: msSOSDispatch (mapogcsos.c:1926)
==15389==    by 0x80A2BF5: msOWSDispatch (mapows.c:299)
==15389==    by 0x8055082: main (mapserv.c:1217)

I tried applying libxml2's xmlFreeNs function at the end of
msOWSCommonServiceIdenfitication, and that fixed the loss.  However, the XML on
output was not well-formed (??).  So I reverted for now.  NB: there are a slew
of other memory issues when running through valgrind, but I thought I'd specify
mapowscommon.c ones for now.

At any rate, if some folks can give this a go, and the code a 'once over', to
verify that I've done things in an acceptable manner to rest of the development
team, that would be much appreciated.
tbonfort commented 12 years ago

Author: anonymous Date: 2007/04/18 - 22:03 Replying to [ticket:1954 tomkralidis]:

(I've put this as an SOS enhancement as I think this will be the best place for
initial implementation, since SOS is not used very much yet, but this applies an
an enhancement to all OGC MapServer code).

Future OGC specifications (including all the OWSs supported by
MapServer) will obey the OWS Common Specification 1.0.0.  More info about OWS
Common 1.0.0 is at:

http://www.opengeospatial.org/standards/common

It would be a good idea to begin to build this as OWS specs merge to OWS Common.
 Defining a set of msOWSCommon functions would mean simply calling them in
future code of supporting OGC Web Services (i.e. WFS 1.1.0 is already there, in
addition to the forthcoming SOS 1.0.0.).

This file would be a set of routines to cover the OWS Common Specification, and
return XML objects which adhere to OWS Common.
tbonfort commented 12 years ago

Author: tomkralidis Date: 2007/04/21 - 04:53 Done. mapowscommon.c implemented and ready for use by calling code.