| java.lang.Object org.geotools.data.ows.AbstractOpenWebService
All known Subclasses: org.geotools.data.wms.WebMapServer,
AbstractOpenWebService | abstract public class AbstractOpenWebService (Code) | | This abstract class provides a building block for one to implement an
Open Web Service (OWS) client. Each OWS is usually defined by an OGC
specification, available at http://www.opengeospatial.org.
This class provides version negotiation, Capabilities document retrieval,
and a request/response infrastructure. Implementing subclasses need to
provide their own Specifications (representing versions of the OWS to be
implemented) and their own request/response instances.
author: Richard Gould |
Method Summary | |
String | after(List known, String version) | String | before(List known, String version) | protected Response | internalIssueRequest(Request request) Issues a request to the server and returns that server's response. | public GetCapabilitiesResponse | issueRequest(GetCapabilitiesRequest request) | protected Capabilities | 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.
The OGC tells us to repeat this process (or give up). | public void | setLoggingLevel(Level newLevel) | abstract protected void | setupSpecifications() Sets up the specifications/versions that this server is capable of
communicating with. |
specs | protected Specification[] specs(Code) | | Contains the specifications that are to be used with this service
|
AbstractOpenWebService | public AbstractOpenWebService(URL serverURL) throws IOException, ServiceException(Code) | | 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: IOException - if there is an error communicating with the server throws: ServiceException - if the server responds with an error |
after | String after(List known, String version)(Code) | | Utility method returning the known version, just after the provided version
Parameters: known - a List of all known versions Parameters: version - the boundary condition a version just after the provided boundary condition |
before | String before(List known, String version)(Code) | | Utility method returning the known version, just before the provided version
Parameters: known - List of all known versions Parameters: version - the boundary condition the version just below the provided boundary version |
internalIssueRequest | protected Response internalIssueRequest(Request request) throws IOException, ServiceException(Code) | | 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 a response from the server, which is created according to the specific Request throws: IOException - if there was a problem communicating with the server throws: ServiceException - if the server responds with an exception or returns bad content |
negotiateVersion | protected Capabilities negotiateVersion() throws IOException, ServiceException(Code) | |
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.
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.
a capabilities object that represents the Capabilities on the server throws: IOException - if there is an error communicating with the server, or the XML cannot be parsed throws: ServiceException - if the server returns a ServiceException |
setLoggingLevel | public void setLoggingLevel(Level newLevel)(Code) | | |
setupSpecifications | abstract protected void setupSpecifications()(Code) | | Sets up the specifications/versions that this server is capable of
communicating with.
|
|
|