Hi all,
I have been spending some time ploughing through GeoServer and GeoTools
code to get a big picture of how services are usually designed in
GeoServer. I can't say I know it inside-out, but think I have a pretty
good idea now how a WPS could be implemented GeoServer-style (the needed
classes etc, see below). However, any recommendations would be great!
Initially the WPS will support:
GET-Kvp for GetCapabilities request
GET-Kvp for DescribeProcess request
POST-XML for Execute request
One question is on my mind:
I have seen the use of Factory for, for example, the WFS to check if a
producer of a certain output-format is available. If I understand things
correctly, the use of Factory allows for nice things like adding new
supported output-formats at run-time. I think this could also be nice to
use for adding new processes to the WPS. That is, an Process interface
could be defined and a ProcessFactorySpi (what does Spi stand for
anyway?) could provide the supported processes upon request. Would this
be sensible at all?
In GeoServer-style, I think that these are at least the new classes that
are needed in a WPS-module (and there are some classes in the main
module that needs some editing):
********************************
org.vfny.geoserver.wps
Process (interface for all processes that this WPS supports)
ProcessFactory
WpsException
WpsExceptionHandler
org.vfny.geoserver.wps.requests
DescribeProcessRequest
ExecuteHandler
ExecuteRequest
WPSRequest
org.vfny.geoserver.wps.requests.readers
CapabilitiesKvpReader
DescribeProcessKvpReader
ExecuteXmlReader
org.vfny.geoserver.wps.responses
WPSCapabilitiesResponse
DescribeProcessResponse
ExecuteResponse
org.vfny.geoserver.wps.responses.helpers
WPSCapsTransformer
WPSDescTransformer
WPSExecTransformer
org.vfny.geoserver.wps.servlets
Capabilities
DescribeProcess
Execute
WPSDispatcher
WPService
Jonas
Comments inline.
Brent Owens
(The Open Planning Project)
Jonas Johansson wrote:
Hi all,
I have been spending some time ploughing through GeoServer and GeoTools
code to get a big picture of how services are usually designed in
GeoServer. I can't say I know it inside-out, but think I have a pretty
good idea now how a WPS could be implemented GeoServer-style (the needed
classes etc, see below). However, any recommendations would be great!
Initially the WPS will support:
GET-Kvp for GetCapabilities request
GET-Kvp for DescribeProcess request
POST-XML for Execute request
One question is on my mind:
I have seen the use of Factory for, for example, the WFS to check if a
producer of a certain output-format is available. If I understand things
correctly, the use of Factory allows for nice things like adding new
supported output-formats at run-time. I think this could also be nice to
use for adding new processes to the WPS. That is, an Process interface
could be defined and a ProcessFactorySpi (what does Spi stand for
anyway?) could provide the supported processes upon request. Would this
be sensible at all?
The factories were designed just for that. It is definitely a good idea to design yours to allow for different WPS processes.
Spi stands for Service Provider Interface (I think).
In GeoServer-style, I think that these are at least the new classes that
are needed in a WPS-module (and there are some classes in the main
module that needs some editing):
********************************
org.vfny.geoserver.wps
Process (interface for all processes that this WPS supports)
ProcessFactory
WpsException
WpsExceptionHandler
org.vfny.geoserver.wps.requests
DescribeProcessRequest
ExecuteHandler
ExecuteRequest
WPSRequest
org.vfny.geoserver.wps.requests.readers
CapabilitiesKvpReader
DescribeProcessKvpReader
ExecuteXmlReader
org.vfny.geoserver.wps.responses
WPSCapabilitiesResponse
DescribeProcessResponse
ExecuteResponse
org.vfny.geoserver.wps.responses.helpers
WPSCapsTransformer
WPSDescTransformer
WPSExecTransformer
org.vfny.geoserver.wps.servlets
Capabilities
DescribeProcess
Execute
WPSDispatcher
WPService
I don't know too much about WPS, so I don't have any tips yet on what may be needed. But it looks like you are on the right track.
Jonas
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel
Hi Jonas,
It looks like you are making some serious progress. It sounds like you are getting close to implementaiton. It would probably be a good idea for you to attend next weeks IRC meeting.
http://docs.codehaus.org/display/GEOS/IRC
Additional comments inline.
Jonas Johansson wrote:
Hi all,
I have been spending some time ploughing through GeoServer and GeoTools
code to get a big picture of how services are usually designed in
GeoServer. I can't say I know it inside-out, but think I have a pretty
good idea now how a WPS could be implemented GeoServer-style (the needed
classes etc, see below). However, any recommendations would be great!
Initially the WPS will support:
GET-Kvp for GetCapabilities request
GET-Kvp for DescribeProcess request
POST-XML for Execute request
One question is on my mind:
I have seen the use of Factory for, for example, the WFS to check if a
producer of a certain output-format is available. If I understand things
correctly, the use of Factory allows for nice things like adding new
supported output-formats at run-time. I think this could also be nice to
use for adding new processes to the WPS. That is, an Process interface
could be defined and a ProcessFactorySpi (what does Spi stand for
anyway?) could provide the supported processes upon request. Would this
be sensible at all?
It sure is, what you need is something similar to how the validation plugins work. Each "process" could be its own plugin.
Some food for thought. Spring has some nice utilities for doing stuff like looking up all implementations of a particular class or interface. Its an alternative to the FactorySPI mechanism.
In GeoServer-style, I think that these are at least the new classes that
are needed in a WPS-module (and there are some classes in the main
module that needs some editing):
********************************
org.vfny.geoserver.wps
Process (interface for all processes that this WPS supports)
ProcessFactory
WpsException
WpsExceptionHandler
org.vfny.geoserver.wps.requests
DescribeProcessRequest
ExecuteHandler
ExecuteRequest
WPSRequest
org.vfny.geoserver.wps.requests.readers
CapabilitiesKvpReader
DescribeProcessKvpReader
ExecuteXmlReader
org.vfny.geoserver.wps.responses
WPSCapabilitiesResponse
DescribeProcessResponse
ExecuteResponse
org.vfny.geoserver.wps.responses.helpers
WPSCapsTransformer
WPSDescTransformer
WPSExecTransformer
org.vfny.geoserver.wps.servlets
Capabilities
DescribeProcess
Execute
WPSDispatcher
WPService
It looks like you have hit all the high points, nice work on figuring out the codebase by the way. One thing that may be missing is on the persitance side of things. You will probably need to play with the configuration reading / writing.
-Justin
Jonas
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel