Skip to content
Snippets Groups Projects
README.md 1.82 KiB
Newer Older
## API Module

The API-module contains interfaces and domain model value 
classes that provide the basic functionality to build an sdk-client.

Martin Vogel's avatar
Martin Vogel committed

The SDk is set up as a maven multi module to separate the (internal) API from implementation details

##### API Module

The api module consists of all domain model classes and (api-) public interfaces needed to build an sdk-client

#### Client Module

Factories and Helper to create Sender and Subscriber. It acts as the actual user client.

#### Impl Module

Interface implementations

### Service Architecture



```mermaid
classDiagram

  class CryptoService{
    + decryptString
    + decryptBytes 
    + encryptString
    + encryptBytes 
   }


   class CertificateValidator{
        + validatePublicKey
  }

  class MetadataValidator{
    + validateMetadataSchema
    + validateMetadataHashValues
  }

  class MetadataService{
    + createMetadata
  }

  class OAuthService{
   + authenticate
  }

  class Sender {
    + retrieveOAuthToken
    + validatePublicKey
    + encryptSubmissionData
    + encryptAttachment
    + MetadataService
    + createMetadata
  }

   class Subscriber {
    + retrieveOAuthToken
    + decryptSubmissionData
    + decryptAttachment
    + validateMetadataSchema
    + validateMetadataHashValues
  }

Martin Vogel's avatar
Martin Vogel committed
  class SenderClient{
Martin Vogel's avatar
Martin Vogel committed
        Sender
Martin Vogel's avatar
Martin Vogel committed
  
   class SubscriberClient{
Martin Vogel's avatar
Martin Vogel committed
        Subscriber
  }
  
  class SdkClientFactory {
        SdkModule (Guice DI)
Martin Vogel's avatar
Martin Vogel committed
SdkClientFactory  ..> SenderClient : Creates
SdkClientFactory  ..> SubscriberClient : Creates
Martin Vogel's avatar
Martin Vogel committed
SenderClient ..> Sender : Uses
SubscriberClient ..> Subscriber : Uses

Sender ..> CertificateValidator : Uses

Sender ..> MetadataService : Uses
Sender ..> OAuthService : Uses
Sender ..> CryptoService : Uses


Subscriber ..> OAuthService : Uses
Subscriber ..> CryptoService : Uses
Subscriber ..> MetadataValidator : Uses

```