Package com.orchestranetworks.d3

# Interface D3NodeAsSlaveOnStartup

All Superinterfaces:
  `D3Node`, `D3NodeAsSlave`

public interface D3NodeAsSlaveOnStartup extends D3NodeAsSlave
Context having specific repository privileges to set up a D3 replica node, during EBX® module registration.

Since:
  5.9.0
See Also:
  - `ModuleRegistrationAdvancedD3.handleRepositoryStartup(D3NodeAsSlaveOnStartup)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `AdaptationHome`
  `createDeliveryDataspace(BranchKey aDataspaceKey)`
  Creates a delivery dataspace or gets the existing one.
  `Session`
  `createSystemUserSession(String aTrackingInformationComplementOrNull)`
  Creates a session executing as the "system user".
  `Class<? extends D3ReceiveBroadcastTrigger>`
  `getRegisteredBroadcastTrigger(AdaptationHome aDataspace)`
  Returns the 'D3 receive broadcast trigger' class registered according to a delivery dataspace.
  `void`
  `registerBroadcastTrigger(AdaptationHome aDataspace, Class<? extends D3ReceiveBroadcastTrigger> aTriggerOrNull)`
  Registers or unregisters the 'D3 receive broadcast trigger'.
  `void`
  `registerDeliveryDataspace(AdaptationHome aDataspace)`
  Registers the delivery dataspace.

  ### Methods inherited from interface com.orchestranetworks.d3.D3Node

  `getBroadcastVersion, getD3SlaveFromRepositoryId, getD3SlaveFromRepositoryLabel, getRegisteredSlaves, getRepositoryId, getRepositoryLabel, isMasterHome, isSlaveHome`

- ## Method Details

  - ### createDeliveryDataspace

    AdaptationHome createDeliveryDataspace(BranchKey aDataspaceKey) throws OperationException
    Creates a delivery dataspace or gets the existing one. The dataspace will be created under '[D3] reference dataspaces'.

    To prepare advanced D3 environment, create all root datasets for each dataspace. Then, refresh all data models (with `boolean` value defined to `true`). Finally, register the delivery dataspace.

    Parameters:
      `aDataspaceKey` - the dataspace identifier.
    Returns:
      the delivery dataspace.
    Throws:
      `IllegalArgumentException` - if the `aDataspaceKey` already exists and location is not under '[D3] reference dataspaces'.
      `OperationException` - if the dataspace creation aborts.
    See Also:
      - `Repository.lookupHome(boolean, HomeKey)`
      - `ModuleContextOnRepositoryStartup.createSystemUserSession(String)`
      - `ProcedureContext.doCreateRoot(com.orchestranetworks.schema.SchemaLocation, AdaptationReference, Profile)`
      - `registerDeliveryDataspace(AdaptationHome)`
      - `Repository.refreshSchemas(boolean)`

  - ### createSystemUserSession

    Session createSystemUserSession(String aTrackingInformationComplementOrNull)
    Creates a session executing as the "system user".

    This means that this session will have all privileges.

    Parameters:
      `aTrackingInformationComplementOrNull` - the tracking information complement is added to a specific tracking information.

  - ### getRegisteredBroadcastTrigger

    Class<? extends D3ReceiveBroadcastTrigger> getRegisteredBroadcastTrigger(AdaptationHome aDataspace) throws OperationException
    Returns the 'D3 receive broadcast trigger' class registered according to a delivery dataspace.
    Parameters:
      `aDataspace` - the dataspace identifier.
    Throws:
      `IllegalArgumentException` - if the `aDataspace` does not exist or the location is not under '[D3] reference dataspaces'.
      `OperationException` - if the trigger's class could not be loaded
    See Also:
      - `registerDeliveryDataspace(AdaptationHome)`
      - `D3ReceiveBroadcastTrigger`

  - ### registerBroadcastTrigger

    void registerBroadcastTrigger(AdaptationHome aDataspace, Class<? extends D3ReceiveBroadcastTrigger> aTriggerOrNull) throws OperationException
    Registers or unregisters the 'D3 receive broadcast trigger'. It declares the 'receive broadcast' trigger to the current node into the '[D3] Replica configuration' > 'Delivery dataspaces' tables.
    Parameters:
      `aDataspace` - the dataspace identifier.
      `aTriggerOrNull` - the trigger class to register or `null` to unregister.
    Throws:
      `IllegalArgumentException` - if the `aDataspace` does not exist or the location is not under '[D3] reference dataspaces'.
      `OperationException` - if the trigger registration aborts.
    See Also:
      - `registerDeliveryDataspace(AdaptationHome)`
      - `D3ReceiveBroadcastTrigger`

  - ### registerDeliveryDataspace

    void registerDeliveryDataspace(AdaptationHome aDataspace) throws OperationException
    Registers the delivery dataspace. It declares the replica delivery dataspace in the current node into the '[D3] Replica configuration' > 'Delivery dataspaces' tables. If the delivery dataspace is already registered, there is no change.

    Optional: Register or unregister a broadcast trigger after the delivery dataspace registration.

    Parameters:
      `aDataspace` - the dataspace identifier.
    Throws:
      `IllegalArgumentException` - if the `aDataspace` does not exist or the location is not under '[D3] reference dataspaces'.
      `OperationException` - if the dataspace registration aborts.
    See Also:
      - `createDeliveryDataspace(BranchKey)`
      - `registerBroadcastTrigger(AdaptationHome, Class)`