org.geotools.data.ows
Class AbstractWPS<C extends WPSCapabilitiesType,R>

java.lang.Object
  extended by org.geotools.data.ows.AbstractWPS<C,R>
Direct Known Subclasses:
WebProcessingService

public abstract class AbstractWPS<C extends WPSCapabilitiesType,R>
extends java.lang.Object

This abstract class provides a building block for one to implement a WPS client. This class provides version negotiation, Capabilities document retrieval, and a request/response infrastructure. Implementing subclasses need to provide their own Specifications

Author:
gdavis

Field Summary
protected  C capabilities
           
protected  ServiceInfo info
           
protected  java.util.Map<R,ResourceInfo> resourceInfo
           
protected  java.net.URL serverURL
           
protected  Specification specification
           
protected  Specification[] specs
          Contains the specifications that are to be used with this service
 
Constructor Summary
AbstractWPS(C capabilties, java.net.URL serverURL)
           
AbstractWPS(java.net.URL serverURL)
          Set up the specifications used and retrieve the Capabilities document given by serverURL.
 
Method Summary
protected abstract  ServiceInfo createInfo()
          Implemented by a subclass to describe service
protected abstract  ResourceInfo createInfo(R resource)
           
 ServiceInfo getInfo()
          Description of this service.
 ResourceInfo getInfo(R resource)
           
protected  Response internalIssueRequest(Request request)
          Issues a request to the server and returns that server's response.
 AbstractWPSGetCapabilitiesResponse issueRequest(GetCapabilitiesRequest request)
           
protected  C negotiateVersion()
           Version number negotiation occurs as follows (credit OGC): 1) If the server implements the requested version number, the server shall send that version. 2a) If a version unknown to the server is requested, the server shall send the highest version less than the requested version. 2b) If the client request is for a version lower than any of those known to the server, then the server shall send the lowest version it knows. 3a) If the client does not understand the new version number sent by the server, it may either cease communicating with the server or send a new request with a new version number that the client does understand but which is less than that sent by the server (if the server had responded with a lower version). 3b) If the server had responded with a higher version (because the request was for a version lower than any known to the server), and the client does not understand the proposed higher version, then the client may send a new request with a version number higher than that sent by the server.
 void setLoggingLevel(java.util.logging.Level newLevel)
           
protected abstract  void setupSpecifications()
          Sets up the specifications/versions that this server is capable of communicating with.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

serverURL

protected final java.net.URL serverURL

capabilities

protected C extends WPSCapabilitiesType capabilities

info

protected ServiceInfo info

resourceInfo

protected java.util.Map<R,ResourceInfo> resourceInfo

specs

protected Specification[] specs
Contains the specifications that are to be used with this service


specification

protected Specification specification
Constructor Detail

AbstractWPS

public AbstractWPS(java.net.URL serverURL)
            throws java.io.IOException,
                   ServiceException
Set up the specifications used and retrieve the Capabilities document given by serverURL.

Parameters:
serverURL - a URL that points to the capabilities document of a server
Throws:
java.io.IOException - if there is an error communicating with the server
ServiceException - if the server responds with an error

AbstractWPS

public AbstractWPS(C capabilties,
                   java.net.URL serverURL)
Method Detail

getInfo

public ServiceInfo getInfo()
Description of this service.

Provides a very quick description of the service, for more information please review the capabilitie document.

Returns:
description of this service.

createInfo

protected abstract ServiceInfo createInfo()
Implemented by a subclass to describe service

Returns:
ServiceInfo

getInfo

public ResourceInfo getInfo(R resource)

createInfo

protected abstract ResourceInfo createInfo(R resource)

setupSpecifications

protected abstract void setupSpecifications()
Sets up the specifications/versions that this server is capable of communicating with.


negotiateVersion

protected C negotiateVersion()
                                                  throws java.io.IOException,
                                                         ServiceException

Version number negotiation occurs as follows (credit OGC):

The OGC tells us to repeat this process (or give up). This means we are actually going to come up with a bit of setup cost in figuring out our GetCapabilities request. This means that it is possible that we may make multiple requests before being satisfied with a response. Also, if we are unable to parse a given version for some reason, for example, malformed XML, we will request a lower version until we have run out of versions to request with. Thus, a server that does not play nicely may take some time to parse and might not even succeed.

Returns:
a capabilities object that represents the Capabilities on the server
Throws:
java.io.IOException - if there is an error communicating with the server, or the XML cannot be parsed
ServiceException - if the server returns a ServiceException

internalIssueRequest

protected Response internalIssueRequest(Request request)
                                 throws java.io.IOException,
                                        ServiceException
Issues a request to the server and returns that server's response. It asks the server to send the response gzipped to provide a faster transfer time.

Parameters:
request - the request to be issued
Returns:
a response from the server, which is created according to the specific Request
Throws:
java.io.IOException - if there was a problem communicating with the server
ServiceException - if the server responds with an exception or returns bad content

issueRequest

public AbstractWPSGetCapabilitiesResponse issueRequest(GetCapabilitiesRequest request)
                                                throws java.io.IOException,
                                                       ServiceException
Throws:
java.io.IOException
ServiceException

setLoggingLevel

public void setLoggingLevel(java.util.logging.Level newLevel)


Copyright © 1996-2010 Geotools. All Rights Reserved.