diff --git a/lib/core/api/api-client.factory.ts b/lib/core/api/api-client.factory.ts deleted file mode 100644 index 0d9af01f6a..0000000000 --- a/lib/core/api/api-client.factory.ts +++ /dev/null @@ -1,25 +0,0 @@ -/*! - * @license - * Copyright 2019 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { InjectionToken } from '@angular/core'; -import { Constructor } from './types'; - -export interface ApiClientFactory { - create(apiClass: Constructor): T; -} - -export const API_CLIENT_FACTORY_TOKEN = new InjectionToken('api-client-factory'); diff --git a/lib/core/api/api-clients.service.spec.ts b/lib/core/api/api-clients.service.spec.ts deleted file mode 100644 index df23b75349..0000000000 --- a/lib/core/api/api-clients.service.spec.ts +++ /dev/null @@ -1,66 +0,0 @@ -/*! - * @license - * Copyright 2019 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { AboutApi } from '@alfresco/js-api'; -import { TestBed } from '@angular/core/testing'; -import { ApiClientFactory, API_CLIENT_FACTORY_TOKEN } from './api-client.factory'; -import { ApiClientsService } from './api-clients.service'; -import { Constructor } from './types'; - -class MockApiClientFactory implements ApiClientFactory { - create(apiClass: Constructor): T { - return new apiClass(); - } -} - -describe('ApiService', () => { - let apiService: ApiClientsService; - - beforeEach(() => { - TestBed.configureTestingModule({ - providers: [ - ApiClientsService, - { provide: API_CLIENT_FACTORY_TOKEN, useClass: MockApiClientFactory } - ] - }); - apiService = TestBed.inject(ApiClientsService); - }); - - it('should add api to registry', () => { - apiService.register('ActivitiClient.about', AboutApi); - - expect(apiService.get('ActivitiClient.about') instanceof AboutApi).toBeTruthy(); - }); - - it('should throw error if we try to get unregisterd API', () => { - expect(() => apiService.get('ActivitiClient.about')).toThrowError(); - - apiService.register('ActivitiClient.about', AboutApi); - - expect(() => apiService.get('ActivitiClient.about')).not.toThrowError(); - }); - - it('should create only single instance of API', () => { - apiService.register('ActivitiClient.about', AboutApi); - - const a = apiService.get('ActivitiClient.about'); - const b = apiService.get('ActivitiClient.about'); - - expect(a).toBe(b); - }); - -}); diff --git a/lib/core/api/api-clients.service.ts b/lib/core/api/api-clients.service.ts deleted file mode 100644 index a1147484c4..0000000000 --- a/lib/core/api/api-clients.service.ts +++ /dev/null @@ -1,54 +0,0 @@ -/*! - * @license - * Copyright 2019 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Inject, Injectable } from '@angular/core'; -import { ApiClientFactory, API_CLIENT_FACTORY_TOKEN } from './api-client.factory'; -import { Constructor, Dictionary } from './types'; - -@Injectable() -export class ApiClientsService { - - constructor(@Inject(API_CLIENT_FACTORY_TOKEN) private apiCreateFactory: ApiClientFactory) { } - - private registry: Dictionary> = {}; - private instances: Partial = {}; - - get(apiName: T): Api.ApiRegistry[T] { - - const ApiClass = this.registry[apiName]; - - if (!ApiClass) { - throw new Error(`Api not registred: ${apiName}`); - } - - return this.instances[apiName] as Api.ApiRegistry[T] ?? this.instantiateApi(apiName); - } - - - register(apiName: T, api: Constructor): void { - this.registry[apiName] = api; - } - - private instantiateApi(apiName: T): Api.ApiRegistry[T] { - const ApiClass = this.registry[apiName]; - const instance = this.apiCreateFactory.create(ApiClass); - this.instances[apiName] = instance; - - return instance; - } -} - diff --git a/lib/core/api/api.module.ts b/lib/core/api/api.module.ts deleted file mode 100644 index e4f9b3ab77..0000000000 --- a/lib/core/api/api.module.ts +++ /dev/null @@ -1,29 +0,0 @@ -/*! - * @license - * Copyright 2019 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { NgModule } from '@angular/core'; -import { API_CLIENT_FACTORY_TOKEN } from './api-client.factory'; -import { ApiClientsService } from './api-clients.service'; -import { LegacyClientFactory } from './legacy-api-client.factory'; - -@NgModule({ - providers: [ - ApiClientsService, - { provide: API_CLIENT_FACTORY_TOKEN, useClass: LegacyClientFactory } - ] -}) -export class ApiModule { } diff --git a/lib/core/api/clients/activiti/activiti-client.module.ts b/lib/core/api/clients/activiti/activiti-client.module.ts deleted file mode 100644 index 19270158dc..0000000000 --- a/lib/core/api/clients/activiti/activiti-client.module.ts +++ /dev/null @@ -1,38 +0,0 @@ -/*! - * @license - * Copyright 2019 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { AboutApi, SystemPropertiesApi } from '@alfresco/js-api'; -import { NgModule } from '@angular/core'; -import { ApiClientsService } from '../../api-clients.service'; - -declare global { - // eslint-disable-next-line @typescript-eslint/no-namespace - namespace Api { - interface ApiRegistry { - ['ActivitiClient.about']: AboutApi; - ['ActivitiClient.system-properties']: SystemPropertiesApi; - } - } -} - -@NgModule({}) -export class ActivitiClientModule { - constructor(private apiClientsService: ApiClientsService) { - this.apiClientsService.register('ActivitiClient.about', AboutApi); - this.apiClientsService.register('ActivitiClient.system-properties', SystemPropertiesApi); - } -} diff --git a/lib/core/api/clients/alfresco-js-clients.module.ts b/lib/core/api/clients/alfresco-js-clients.module.ts deleted file mode 100644 index 61d4446ac1..0000000000 --- a/lib/core/api/clients/alfresco-js-clients.module.ts +++ /dev/null @@ -1,28 +0,0 @@ -/*! - * @license - * Copyright 2019 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { NgModule } from '@angular/core'; -import { ActivitiClientModule } from './activiti/activiti-client.module'; -import { DiscoveryClientModule } from './discovery/discovery-client.module'; - -@NgModule({ - imports: [ - ActivitiClientModule, - DiscoveryClientModule - ] -}) -export class AlfrescoJsClientsModule { } diff --git a/lib/core/api/clients/discovery/discovery-client.module.ts b/lib/core/api/clients/discovery/discovery-client.module.ts deleted file mode 100644 index ce1c9412b2..0000000000 --- a/lib/core/api/clients/discovery/discovery-client.module.ts +++ /dev/null @@ -1,36 +0,0 @@ -/*! - * @license - * Copyright 2019 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { DiscoveryApi } from '@alfresco/js-api'; -import { NgModule } from '@angular/core'; -import { ApiClientsService } from '../../api-clients.service'; - -declare global { - // eslint-disable-next-line @typescript-eslint/no-namespace - namespace Api { - interface ApiRegistry { - ['DiscoveryClient.discovery']: DiscoveryApi; - } - } -} - -@NgModule({}) -export class DiscoveryClientModule { - constructor(private apiClientsService: ApiClientsService) { - this.apiClientsService.register('DiscoveryClient.discovery', DiscoveryApi); - } -} diff --git a/lib/core/api/clients/index.ts b/lib/core/api/clients/index.ts deleted file mode 100644 index 1ed1d0bf2d..0000000000 --- a/lib/core/api/clients/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './activiti/activiti-client.module'; -export * from './alfresco-js-clients.module'; diff --git a/lib/core/api/index.ts b/lib/core/api/index.ts deleted file mode 100644 index 6b687d926a..0000000000 --- a/lib/core/api/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from './api-client.factory'; -export * from './api-clients.service'; -export * from './api.module'; -export * from './clients'; - diff --git a/lib/core/api/legacy-api-client.factory.ts b/lib/core/api/legacy-api-client.factory.ts deleted file mode 100644 index cdda0e7219..0000000000 --- a/lib/core/api/legacy-api-client.factory.ts +++ /dev/null @@ -1,30 +0,0 @@ -/*! - * @license - * Copyright 2019 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Injectable } from '@angular/core'; -import { AlfrescoApiService } from '../services/alfresco-api.service'; -import { ApiClientFactory } from './api-client.factory'; -import { Constructor } from './types'; - -@Injectable() -export class LegacyClientFactory implements ApiClientFactory { - constructor(private alfrescoApiService: AlfrescoApiService) { } - - create(apiClass: Constructor): T { - return new apiClass(this.alfrescoApiService.getInstance()); - } -} diff --git a/lib/core/api/types.ts b/lib/core/api/types.ts deleted file mode 100644 index 356d4ceb4f..0000000000 --- a/lib/core/api/types.ts +++ /dev/null @@ -1,22 +0,0 @@ -/*! - * @license - * Copyright 2019 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export interface Dictionary { - [key: string]: T; -}; - -export type Constructor = new (...args: any[]) => T; diff --git a/lib/core/core.module.ts b/lib/core/core.module.ts index bba15a0a1c..3f466dd708 100644 --- a/lib/core/core.module.ts +++ b/lib/core/core.module.ts @@ -60,9 +60,6 @@ import { DirectionalityConfigService } from './services/directionality-config.se import { SearchTextModule } from './search-text/search-text-input.module'; import { versionCompatibilityFactory } from './services/version-compatibility-factory'; import { VersionCompatibilityService } from './services/version-compatibility.service'; -import { ApiModule } from './api/api.module'; -import { AlfrescoJsClientsModule } from './api/clients/alfresco-js-clients.module'; - @NgModule({ imports: [ TranslateModule, @@ -97,9 +94,7 @@ import { AlfrescoJsClientsModule } from './api/clients/alfresco-js-clients.modul SortingPickerModule, NotificationHistoryModule, SearchTextModule, - BlankPageModule, - ApiModule, - AlfrescoJsClientsModule + BlankPageModule ], exports: [ AboutModule, diff --git a/lib/core/index.ts b/lib/core/index.ts index d3c602cbcf..679146759a 100644 --- a/lib/core/index.ts +++ b/lib/core/index.ts @@ -53,5 +53,4 @@ export * from './mock/index'; export * from './testing'; export * from './material.module'; -export * from './api'; export * from './core.module'; diff --git a/lib/core/services/discovery-api.service.ts b/lib/core/services/discovery-api.service.ts index 70a0680e5e..be9310ec9b 100644 --- a/lib/core/services/discovery-api.service.ts +++ b/lib/core/services/discovery-api.service.ts @@ -18,13 +18,11 @@ import { Injectable } from '@angular/core'; import { from, Observable, throwError, Subject } from 'rxjs'; import { catchError, map, switchMap, filter, take } from 'rxjs/operators'; -import { RepositoryInfo, SystemPropertiesRepresentation } from '@alfresco/js-api'; +import { AboutApi, DiscoveryApi, RepositoryInfo, SystemPropertiesApi, SystemPropertiesRepresentation } from '@alfresco/js-api'; import { BpmProductVersionModel } from '../models/product-version.model'; import { AlfrescoApiService } from './alfresco-api.service'; import { AuthenticationService } from './authentication.service'; -import { ApiClientsService } from '../api'; - @Injectable({ providedIn: 'root' @@ -38,8 +36,7 @@ export class DiscoveryApiService { constructor( private apiService: AlfrescoApiService, - private authenticationService: AuthenticationService, - private apiClientsService: ApiClientsService) { + private authenticationService: AuthenticationService) { this.authenticationService.onLogin .pipe( @@ -50,14 +47,13 @@ export class DiscoveryApiService { .subscribe((info) => this.ecmProductInfo$.next(info)); } - /** * Gets product information for Content Services. * * @returns ProductVersionModel containing product details */ getEcmProductInfo(): Observable { - const discoveryApi = this.apiClientsService.get('DiscoveryClient.discovery'); + const discoveryApi = new DiscoveryApi(this.apiService.getInstance()); return from(discoveryApi.getRepositoryInformation()) .pipe( @@ -72,7 +68,7 @@ export class DiscoveryApiService { * @returns ProductVersionModel containing product details */ getBpmProductInfo(): Observable { - const aboutApi = this.apiClientsService.get('ActivitiClient.about'); + const aboutApi = new AboutApi(this.apiService.getInstance()); return from(aboutApi.getAppVersion()) .pipe( @@ -82,7 +78,7 @@ export class DiscoveryApiService { } getBPMSystemProperties(): Observable { - const systemPropertiesApi = this.apiClientsService.get('ActivitiClient.system-properties'); + const systemPropertiesApi = new SystemPropertiesApi(this.apiService.getInstance()); return from(systemPropertiesApi.getProperties()) .pipe(