CordaInject

annotation class CordaInject

The CordaInject annotation should be used within Flows to inject Corda's platform services.

The annotation is placed onto a Flow's fields/properties and not on constructor parameters.

Example usage:

  • Kotlin:
    
    class MyFlow : ClientStartableFlow {
    
        
        lateinit var flowEngine: FlowEngine
    
        
        lateinit var flowMessaging: FlowMessaging
    
        
        override fun call(requestBody: RestRequestBody): String {
            ...
        }
    }
    
  • Java:
    
    class MyFlow implements ClientStartableFlow {
    
        
        public FlowEngine flowEngine;
    
        
        public FlowMessaging flowMessaging;
    
        
        
        public String call(RestRequestBody requestBody) {
            ...
        }
    }
    
The properties annotated with CordaInject can be public or private as the reflection that sets them can bypass their visibility modifiers. Making a Flow's properties public, internal or package private is convenient for unit testing and does not affect the Flow's runtime behaviour.

The injected properties cannot be accessed within a Flow's constructor and should only be used from within a Flow's call method or subsequently executed code.

Functions

Link copied to clipboard
abstract fun annotationType(): Class<out Annotation>
Link copied to clipboard
abstract fun equals(p: Any): Boolean
Link copied to clipboard
abstract fun hashCode(): Int
Link copied to clipboard
abstract fun toString(): String