SDI Library
SDI Library is a java library designed to help developers interact with gCube SDI. It is the main entry point for developpers wanting to exploits client implementations towards the SDI subsystems (i.e. SDI-Service, GeoNetwork, GeoServer ). It offers static gCube-fw-clients that communicate with SDI-Service for the management of gCube SDI and common publication features. It also manages client implementation for third-parties SDI technologies, allowing for direct communication with these subsystems.
Contents
Design
Following diagram illustrate the relations between the various clients components in gcube-sdi-suite.
To external users, the main component of interest is sdi-library, built on top of the sdi-interface which contains common classes definition. SDI Library exposes basic gCube clients towards [[[SDI-Service]]] REST interfaces. SDI Library also exposes means to dynamically load and instantiate client implementations for specific SDI subsystems (e.g. GeoServer, GeoNetwork).
Each client imeplementation exposes :
- Information on internal implementation
- Information on the target engine
- Range of supported version for the declared target engine.
Philosophy
The library has been designed to maximize isolation of dependencies : common complex logic is supported on services and client implementations are discovered at runtime.
The main library sdi-ibrary offers ways to obtain specific client implementation based on :
- Information System Configuration : accessible third-parties services, configuration and version
- Available implementations at runtime
Static Clients
Static clients are directly defined in sdi-library, so no dynamic loading is needed. They are implemented as gCube-fw-clients towards [[[SDI Sevice]]] REST interfaces and cover most common use cases such as :
- Manage SDI configuration (instances, credentials, IS Resources)
- Manage Application Profiles
- Instantiate Dynamic clients
- Common basic publish logic
SDI Management
Instantiate specific client
SDI Management should be used to dynamically instantiate client implementations against runtime configuration. It deals with