net.corda.node.services.api

## Class ServiceHubInternal

- net.corda.node.services.api.ServiceHubInternal

- All Implemented Interfaces:
    PluginServiceHub, ServiceHub, ServicesForResolution

      public class ServiceHubInternal
      implements PluginServiceHub

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface net.corda.core.node.ServiceHub

      `ServiceHub.DefaultImpls`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ServiceHubInternal()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `FlowLogicRefFactory` | `getFlowLogicRefFactory()`
    `java.security.KeyPair` | `getLegalIdentityKey()` Helper property to shorten code for fetching the Node's KeyPair associated with the public legalIdentity Party from the key management service. Typical use is during signing in flows and for unit test signing.
    `MonitoringService` | `getMonitoringService()`
    `MessagingServiceInternal` | `getNetworkService()`
    `java.security.KeyPair` | `getNotaryIdentityKey()` Helper property to shorten code for fetching the Node's KeyPair associated with the public notaryIdentity Party from the key management service. It is assumed that this is only used in contexts where the Node knows it is hosting a Notary Service. Otherwise, it will throw an IllegalArgumentException. Typical use is during signing in flows and for unit test signing.
    `SchemaService` | `getSchemaService()`
    `<T> FlowStateMachine<T>` | `invokeFlowAsync(java.lang.Class<? extends net.corda.core.flows.FlowLogic<? extends T>> logicType, java.lang.Object args)` Will check logicType and args against a whitelist and if acceptable then construct and initiate the flow. Note that you must be on the server thread to call this method.
    `TransactionState<?>` | `loadState(StateRef stateRef)` Given a `class StateRef` loads the referenced transaction and looks up the specified output `interface ContractState`.
    `void` | `recordTransactions(net.corda.core.transactions.SignedTransaction txs)` Given some `class SignedTransaction`s, writes them to the local storage for validated transactions and then sends them to the vault for further processing.
    `<T> FlowStateMachine<T>` | `startFlow(FlowLogic<? extends T> logic)` Starts an already constructed flow. Note that you must be on the server thread to call this method.
    `<T extends ContractState> StateAndRef<T>` | `toStateAndRef(StateRef ref)` Will check logicType and args against a whitelist and if acceptable then construct and initiate the protocol.

    - ### Methods inherited from interface net.corda.core.node.PluginServiceHub

      `getFlowFactory, registerFlowInitiator`

    - ### Methods inherited from interface net.corda.core.node.ServiceHub

      `getClock, getKeyManagementService, getLegalIdentityKey, getMyInfo, getNetworkMapCache, getNetworkService, getNotaryIdentityKey, getSchedulerService, getStorageService, getVaultService, invokeFlowAsync, loadState, recordTransactions, recordTransactions, toStateAndRef`

    - ### Methods inherited from interface net.corda.core.node.ServicesForResolution

      `getIdentityService, getStorageService, loadState`

- - ### Constructor Detail

    - #### ServiceHubInternal

          public ServiceHubInternal()

  - ### Method Detail

    - #### getMonitoringService

          public MonitoringService getMonitoringService()

    - #### getFlowLogicRefFactory

          public FlowLogicRefFactory getFlowLogicRefFactory()

    - #### getSchemaService

          public SchemaService getSchemaService()

    - #### getNetworkService

          public MessagingServiceInternal getNetworkService()

    - #### startFlow

          public <T> FlowStateMachine<T> startFlow(FlowLogic<? extends T> logic)

      Starts an already constructed flow. Note that you must be on the server thread to call this method.

    - #### invokeFlowAsync

          public <T> FlowStateMachine<T> invokeFlowAsync(java.lang.Class<? extends net.corda.core.flows.FlowLogic<? extends T>> logicType,
                                                         java.lang.Object args)

      Will check logicType and args against a whitelist and if acceptable then construct and initiate the flow. Note that you must be on the server thread to call this method.

      Throws:
        - or IllegalArgumentException if there are problems with the logicType or args.

    - #### recordTransactions

          public void recordTransactions(net.corda.core.transactions.SignedTransaction txs)

      Given some `class SignedTransaction`s, writes them to the local storage for validated transactions and then sends them to the vault for further processing.

      Parameters:
        `txs` - The transactions to record.
      See Also:
        `class SignedTransaction`

    - #### loadState

          public TransactionState<?> loadState(StateRef stateRef)

      Given a `class StateRef` loads the referenced transaction and looks up the specified output `interface ContractState`.

      Throws:
        - if the `class StateRef` points to a non-existent transaction.
      See Also:
        `class StateRef`, `interface ContractState`

    - #### toStateAndRef

          public <T extends ContractState> StateAndRef<T> toStateAndRef(StateRef ref)

      Will check logicType and args against a whitelist and if acceptable then construct and initiate the protocol.

      Throws:
        - or IllegalArgumentException if there are problems with the logicType or args.
      See Also:
        logicType, args

    - #### getLegalIdentityKey

          public java.security.KeyPair getLegalIdentityKey()

      Helper property to shorten code for fetching the Node's KeyPair associated with the public legalIdentity Party from the key management service. Typical use is during signing in flows and for unit test signing.

      TODO: legalIdentity can now be composed of multiple keys, should we return a list of keyPairs here? Right now the logic assumes the legal identity has a composite key with only one node

    - #### getNotaryIdentityKey

          public java.security.KeyPair getNotaryIdentityKey()

      Helper property to shorten code for fetching the Node's KeyPair associated with the public notaryIdentity Party from the key management service. It is assumed that this is only used in contexts where the Node knows it is hosting a Notary Service. Otherwise, it will throw an IllegalArgumentException. Typical use is during signing in flows and for unit test signing.