Annotations
On this page
Dana uses annotations to resolve inheritance or some patterns like singleton declaration.
@component
JSDoc declaration
A component declare an abstract class/model that must be implemented. Jsdoc declaration:
/**
* MyComponentClass
* @class
* ...
* @component
*/
Resolved configuration
"MyComponent":{ "implementation": "wiztivi.vendors.XXX.MyComponentClass" }
@implementation
An implementation is a class that implements an abstract class. When a class is marked with the @implementation
, we loop on the class hierarchy to discover the following annotations:
@service
@manager
@model
@component
As soon as one of these annotations is found, the founded annotation is applied to the class and the loop is stopped.
JSDoc declaration
/**
* MyImplementationClass
* @class
* ...
* @implementation
*/
Resolved configuration
Depends on the founded annotation.
@service
A service is a singleton that defines and implements a service. A service is inheritable, and so will be reached with the @implementation
annotation (see above).
JSDoc declaration
/**
* MyServiceClass
* @class
* ...
* @service
*/
Resolved configuration
"MyService":{ "implementation": "wiztivi.vendors.XXX.MyServiceClass", "singleton": "myService" }
@manager
A manager is a singleton that defines and implements a manager.
A manager is inheritable, and so will be reached with the @implementation
annotation (see above).
JSDoc declaration
/**
* MyManagerClass
* @class
* ...
* @manager
*/
Resolved configuration
"MyManager":{ "implementation": "wiztivi.vendors.XXX.MyManagerClass", "singleton": "myManager" }
@model
A model is a component that defines a model. A model is a javascript object that store properties, and sometimes specific data that comes from vendors API.
A model is inheritable, and so will be reached with the @implementation
annotation (see above).
JSDoc declaration
/**
* MyModelClass
* @class
* ...
* @model
*/
Resolved configuration
"MyModel":{ "implementation": "wiztivi.vendors.XXX.MyModelClass" }
@singleton
A singleton declares a component that will have a unique instance during all the life of the application. A singleton is not inheritable, and so won’t be reached with the @implementation
annotation (see above).
JSDoc declaration
/**
* MySingletonClass
* @class
* ...
* @singleton
*/
Resolved configuration
"MySingleton":{ "implementation": "wiztivi.vendors.XXX.MySingletonClass", "singleton": "mySingleton" }