1.2.1 High Level Structure
The main responsibility of the CTS2DF is to accept incoming HTTP requests and delegate to the appropriate Service Plugin implementations. At a high level, the logic of accepting an incoming request is as follows:
ACCEPT HTTP REQUEST
THEN: RETURN NOT_IMPLEMENTED_ERROR #If not found, assume CTS2 Service is not Implemented
ELSE: ServiceProviderSERVICE_INTERFACE.getServiceexecute().call() #If matching implementation is found, execute it
HTTP Requests are accepted and validated by a series of RestControllers. The responsibility of these RestControllers is to accept requests, parse parameters, and check all possible pre-conditions. They also connect the various HTTP requests to the appropriate CTS2 Profile Interfaces. Once the RestControllers have accepted the requests and identified the needed CTS2 Profile Interfaces to fulfill it, The process of discovering the available implementations of those needed CTS2 Profile Interfaces begins.
Service Discovery happens via the ServiceProvider interface. Each Service Plugin must register this Service as an OSGi Service. In this way, a Service Plugin advertises each CTS2 Profile that it implements.
NOTE: Service Plugins are not required to implement all of the CTS2 Profile Interfaces. They may implement one, or all, or (most likely) some subset that matches the desired CTS2 functionality.
1.2.2 Basic Request Sequence