Home Reference Source Repository

lib/Microservice/Injectable.js

/**
 * Created by AlexanderC on 6/10/15.
 */

'use strict';

import {Instance} from './Instance';
import Core from 'deep-core';
import {MissingWorkingMicroserviceException} from './Exception/MissingWorkingMicroserviceException';

/**
 * Microservice injectable object
 */
export class Injectable {
  constructor() {
    this._microservice = null;
  }

  /**
   * @param {Instance} microservice
   * @returns {Injectable}
   */
  bind(microservice) {
    this.microservice = microservice;

    return this;
  }

  /**
   * @returns {Instance}
   */
  get microservice() {
    if (this._microservice === null) {
      throw new MissingWorkingMicroserviceException();
    }

    return this._microservice;
  }

  /**
   * @param {Instance} instance
   */
  set microservice(instance) {
    if (!(instance instanceof Instance)) {
      throw new Core.Exception.InvalidArgumentException(microservice, 'Microservice');
    }

    this._microservice = instance;
  }
}