Create wt-odlux directory
[ccsdk/features.git] / sdnr / wt-odlux / odlux / framework / src / services / applicationManager.ts
1 /**
2  * ============LICENSE_START========================================================================
3  * ONAP : ccsdk feature sdnr wt odlux
4  * =================================================================================================
5  * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.
6  * =================================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
8  * in compliance with the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software distributed under the License
13  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
14  * or implied. See the License for the specific language governing permissions and limitations under
15  * the License.
16  * ============LICENSE_END==========================================================================
17  */
18 import { ApplicationInfo } from '../models/applicationInfo';
19 import { Event } from '../common/event';
20
21 import { applicationApi } from './applicationApi';
22
23 /** Represents registry to manage all applications. */
24 class ApplicationManager {
25     
26   /** Stores all registered applications.  */
27   private _applications: { [key: string]: ApplicationInfo }; 
28   
29   /** Initializes a new instance of this class. */
30   constructor() {
31     this._applications = {};
32     this.changed = new Event<void>(); 
33   }
34
35   /** The changed event will fire if the registration has changed. */
36   public changed: Event<void>;
37
38   /** Registers a new application. */
39   public registerApplication(applicationInfo: ApplicationInfo) {
40     this._applications[applicationInfo.name] = applicationInfo;
41     this.changed.invoke();
42     return applicationApi;
43   }
44
45   /** Gets all registered applications. */
46   public get applications() {
47     return this._applications;
48   }
49 }
50
51 /** A singleton instance of the application manager. */
52 export const applicationManager = new ApplicationManager();
53 export default applicationManager;