/* (c) 2014 - 2015 Open Source Geospatial Foundation - all rights reserved * (c) 2001 - 2013 OpenPlans * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.wms; import java.util.List; import java.util.Set; import org.geoserver.catalog.PublishedInfo; import org.geotools.util.NumberRange; /** * Extension point that allows plugins to dynamically contribute extended properties * to the WMS capabilities document. * * @author Justin Deoliveira, OpenGeo * */ public interface ExtendedCapabilitiesProvider extends org.geoserver.ExtendedCapabilitiesProvider<WMSInfo, GetCapabilitiesRequest>{ /** * Returns the element names that are direct children of {@code VendorSpecificCapabilities} * contributed by this extended capabilities provider for WMS 1.1.1 DOCTYPE declaration. * <p> * This method returns only the element names that are direct children of * VendorSpecificCapabilities so that they can be aggregated in a single declaration like * {@code <!ELEMENT VendorSpecificCapabilities (ContributedElementOne*, ContributedElementTwo*) >} * . Implement {@link #getVendorSpecificCapabilitiesChildDecls()} to contribute the child * elements of these root ones. * </p> * * @return the name of the elements to be declared as direct children of * VendorSpecificCapabilities in a WMS 1.1.1 DOCTYPE internal DTD. */ List<String> getVendorSpecificCapabilitiesRoots(GetCapabilitiesRequest request); /** * Returns the list of internal DTD element declarations contributed to WMS 1.1.1 DOCTYPE * GetCapabilities document. * <p> * Example DTD element declaration that could be a member of the returned list: " * {@code <!ELEMENT Resolutions (#PCDATA) >}" * </p> * * @return the list of GetCapabilities internal DTD elements declarations, may be empty. */ List<String> getVendorSpecificCapabilitiesChildDecls(GetCapabilitiesRequest request); /** * Allows the provider to customize the srs list. For example, it can be used to provide * a user specific srs list * @param srs */ void customizeRootCrsList(Set<String> srs); /** * Allows the provider to customize the layer scale range, this can be used to advertise limited * visibility of the layer on a user by users basis. * * @param layer * @param scaleDenominators * */ NumberRange<Double> overrideScaleDenominators(PublishedInfo layer, NumberRange<Double> scaleDenominators); }