/* (c) 2016 Open Source Geospatial Foundation - all rights reserved
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.platform;
import java.util.Optional;
/**
* Report status of installed modules and extensions.
*
* Reporting static information such as module name and version, and dynamic information like configuration and drivers.
* @author Morgan Thompson - Boundless
*/
public interface ModuleStatus {
/**
* Module identifier based on artifact bundle
* Example: <code>gs-main</code>, <code>gs-oracle</code>
*/
String getModule();
/**
* Optional component identifier within module.
* Example: <code>rendering-engine</code>
*/
Optional <String> getComponent();
/** Human readable name (from GeoServer documentation), or as defined in the extension pom.xml, ie. <name>ArcSDE DataStore Extensions</name> */
String getName();
/** Human readable version, ie. for geotools it would be 15-SNAPSHOT **/
Optional<String> getVersion();
/** Returns whether the module is available to GeoServer **/
boolean isAvailable();
/** Returns whether the module is enabled in the current GeoServer configuration. **/
boolean isEnabled();
/** Optional status message such as what Java rendering engine is in use, or the library path if the module/driver is unavailable */
Optional <String> getMessage();
/** Optional relative link to GeoServer user manual */
Optional <String> getDocumentation();
}