/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 2004-2008, Open Source Geospatial Foundation (OSGeo) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. */ package org.geotools.data.ows; import java.net.URL; /** * Provides support for the Open Web Service Specificaitons. * * <p> * This class operates as a Factory creating request for Open Web Services. * * <p> * The idea is that this class operates a Toolkit for all things assocated with * an Open Web Service specification. The various objects produced by this * toolkit are used as strategy objects for the top level AbstractOpenWebService * subclass. Example: * <ul> * <li> * WebMapServer - uses a GetCapabilitiesRequest during version negotiation. * </li> * </ul> * </p> * * <p> * Both name and version information that may be checked against a * GetCapabilities document during version negotiation. * </p> * * Specific Open Web Service implementations can extend this interface to * include details that are specific to their specification. Example: * The Web Map Service specification includes more operations such as GetMap * and GetFeatureInfo. * * <p> * <b>Q:</b> Why are these not static?<br> * <b>A:</b> Because we want to place new specifications into a data structure * for WebMapServer to search through dynamically * </p> * * @author Jody Garnett, Refractions Reasearch * @author rgould * * @source $URL$ */ public abstract class Specification { /** * Expected version attribute for root element. * @return the version as a String */ public abstract String getVersion(); /** * Factory method to create GetCapabilities Request * @param server the URL that points to the server's getCapabilities document * @return a configured GetCapabilitiesRequest that can be used to access the Document */ public abstract GetCapabilitiesRequest createGetCapabilitiesRequest( URL server); }