Repository: brooklyn-ui Updated Branches: refs/heads/master a0cddab17 -> 777332a23
Allow to configure the blueprint loading methods Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/c4367b2d Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/c4367b2d Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/c4367b2d Branch: refs/heads/master Commit: c4367b2d51505947e9e3d4f6cbb777678f28dce5 Parents: a0cddab Author: Sylvain Ferot <sylvain.fe...@usharesoft.com> Authored: Wed Oct 24 12:04:29 2018 +0200 Committer: Sylvain Ferot <sylvain.fe...@usharesoft.com> Committed: Wed Oct 31 15:32:47 2018 +0100 ---------------------------------------------------------------------- .../providers/blueprint-loader-api.js | 37 ++++++++++ .../providers/blueprint-loader-api.provider.js | 71 ++++++++++++++++++++ ui-modules/blueprint-composer/app/index.js | 9 +-- .../app/views/main/main.controller.js | 20 +----- 4 files changed, 115 insertions(+), 22 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/c4367b2d/ui-modules/blueprint-composer/app/components/providers/blueprint-loader-api.js ---------------------------------------------------------------------- diff --git a/ui-modules/blueprint-composer/app/components/providers/blueprint-loader-api.js b/ui-modules/blueprint-composer/app/components/providers/blueprint-loader-api.js new file mode 100644 index 0000000..0f9206e --- /dev/null +++ b/ui-modules/blueprint-composer/app/components/providers/blueprint-loader-api.js @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 class BlueprintLoaderApi { + constructor($q, paletteApi) { + this.$q = $q; + this.paletteApi = paletteApi; + } + + loadBlueprint($stateParams) { + // no-op + return Promise.resolve(); + } + + loadYaml($stateParams) { + // no-op + return undefined; + } +} + +window.BlueprintLoaderApi = BlueprintLoaderApi; \ No newline at end of file http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/c4367b2d/ui-modules/blueprint-composer/app/components/providers/blueprint-loader-api.provider.js ---------------------------------------------------------------------- diff --git a/ui-modules/blueprint-composer/app/components/providers/blueprint-loader-api.provider.js b/ui-modules/blueprint-composer/app/components/providers/blueprint-loader-api.provider.js new file mode 100644 index 0000000..e511486 --- /dev/null +++ b/ui-modules/blueprint-composer/app/components/providers/blueprint-loader-api.provider.js @@ -0,0 +1,71 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 angular from 'angular'; +import {BlueprintLoaderApi} from './blueprint-loader-api'; + +const MODULE_NAME = 'brooklyn.composer.api.blueprint-loader'; + +angular.module(MODULE_NAME, []) + .provider('blueprintLoaderApi', blueprintLoaderApi); + +export default MODULE_NAME; + +export function blueprintLoaderApi() { + let implementation = BlueprintLoaderApiProvider; + + return { + implementation: function (impl) { + if (!(impl.prototype === BlueprintLoaderApi.prototype)) { + throw new Error(`Expected an implementation extending ${BlueprintLoaderApi} but got ${impl}`); + } + implementation = impl; + }, + $get: ['$stateParams', '$q', 'paletteApi', function ($stateParams, $q, paletteApi) { + return new implementation($stateParams, $q, paletteApi); + }] + } +} + +class BlueprintLoaderApiProvider extends BlueprintLoaderApi { + constructor($q, paletteApi) { + super($q, paletteApi); + } + + loadBlueprint($stateParams) { + let deferred = this.$q.defer(); + if (!($stateParams.bundleSymbolicName && $stateParams.bundleVersion && $stateParams.typeSymbolicName && $stateParams.typeVersion)) { + deferred.resolve(null); + } else if ($stateParams.bundleSymbolicName && $stateParams.bundleVersion && $stateParams.typeSymbolicName && $stateParams.typeVersion) { + this.$q.all([ + this.paletteApi.getBundle($stateParams.bundleSymbolicName, $stateParams.bundleVersion), + this.paletteApi.getBundleType($stateParams.bundleSymbolicName, $stateParams.bundleVersion, $stateParams.typeSymbolicName, $stateParams.typeVersion), + this.paletteApi.getTypeVersions($stateParams.typeSymbolicName) + ]).then(responses => { + deferred.resolve({bundle: responses[0], type: responses[1], versions: responses[2].map(item => item.version)}); + }).catch(response => deferred.reject(response.error.message)); + } else { + deferred.reject('Both bundle and type information must be supplied'); + } + return deferred.promise; + } + + loadYaml($stateParams) { + return $stateParams.yaml; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/c4367b2d/ui-modules/blueprint-composer/app/index.js ---------------------------------------------------------------------- diff --git a/ui-modules/blueprint-composer/app/index.js b/ui-modules/blueprint-composer/app/index.js index 199d8c5..7dc3720 100755 --- a/ui-modules/blueprint-composer/app/index.js +++ b/ui-modules/blueprint-composer/app/index.js @@ -40,6 +40,7 @@ import brSpecEditor from './components/spec-editor/spec-editor.directive'; import brooklynCatalogSaver from './components/catalog-saver/catalog-saver.directive'; import paletteApiProvider from "./components/providers/palette-api.provider"; import paletteServiceProvider from "./components/providers/palette-service.provider"; +import blueprintLoaderApiProvider from "./components/providers/blueprint-loader-api.provider"; import brooklynApi from "brooklyn-ui-utils/brooklyn.api/brooklyn.api"; import {designerDirective} from "./components/designer/designer.directive"; @@ -75,10 +76,10 @@ import bottomSheet from "brooklyn-ui-utils/bottom-sheet/bottom-sheet"; import stackViewer from 'angular-java-stack-viewer'; import {EntityFamily} from "./components/util/model/entity.model"; -angular.module('app', [ngAnimate, ngResource, ngCookies, ngClipboard, uiRouter, 'ui.router.state.events', brCore, - brServerStatus, brAutoFocus, brIconGenerator, brInterstitialSpinner, brooklynModuleLinks, brooklynUserManagement, - brYamlEditor, brUtils, brSpecEditor, brooklynCatalogSaver, brooklynApi, bottomSheet, stackViewer, brDragndrop, - customActionDirective, customConfigSuggestionDropdown, paletteApiProvider, paletteServiceProvider]) +angular.module('app', [ngAnimate, ngResource, ngCookies, ngClipboard, uiRouter, 'ui.router.state.events', brCore, + brServerStatus, brAutoFocus, brIconGenerator, brInterstitialSpinner, brooklynModuleLinks, brooklynUserManagement, + brYamlEditor, brUtils, brSpecEditor, brooklynCatalogSaver, brooklynApi, bottomSheet, stackViewer, brDragndrop, + customActionDirective, customConfigSuggestionDropdown, paletteApiProvider, paletteServiceProvider, blueprintLoaderApiProvider]) .directive('designer', ['$log', '$state', '$q', 'iconGenerator', 'catalogApi', 'blueprintService', 'brSnackbar', 'paletteDragAndDropService', designerDirective]) .directive('onError', onErrorDirective) .directive('catalogSelector', catalogSelectorDirective) http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/c4367b2d/ui-modules/blueprint-composer/app/views/main/main.controller.js ---------------------------------------------------------------------- diff --git a/ui-modules/blueprint-composer/app/views/main/main.controller.js b/ui-modules/blueprint-composer/app/views/main/main.controller.js index da932ff..d4204f8 100644 --- a/ui-modules/blueprint-composer/app/views/main/main.controller.js +++ b/ui-modules/blueprint-composer/app/views/main/main.controller.js @@ -251,23 +251,7 @@ export const mainState = { controller: ['$scope', '$element', '$log', '$state', '$stateParams', 'brBrandInfo', 'blueprintService', 'actionService', 'catalogApi', 'applicationApi', 'brSnackbar', 'brBottomSheet', 'edit', 'yaml', 'composerOverrides', MainController], controllerAs: 'vm', resolve: { - edit: ['$stateParams', '$q', 'paletteApi', ($stateParams, $q, paletteApi) => { - let deferred = $q.defer(); - if (!($stateParams.bundleSymbolicName && $stateParams.bundleVersion && $stateParams.typeSymbolicName && $stateParams.typeVersion)) { - deferred.resolve(null); - } else if ($stateParams.bundleSymbolicName && $stateParams.bundleVersion && $stateParams.typeSymbolicName && $stateParams.typeVersion) { - $q.all([ - paletteApi.getBundle($stateParams.bundleSymbolicName, $stateParams.bundleVersion), - paletteApi.getBundleType($stateParams.bundleSymbolicName, $stateParams.bundleVersion, $stateParams.typeSymbolicName, $stateParams.typeVersion), - paletteApi.getTypeVersions($stateParams.typeSymbolicName) - ]).then(responses => { - deferred.resolve({bundle: responses[0], type: responses[1], versions: responses[2].map(item => item.version)}); - }).catch(response => deferred.reject(response.error.message)); - } else { - deferred.reject('Both bundle and type information must be supplied'); - } - return deferred.promise; - }], - yaml: ['$stateParams', $stateParams => $stateParams.yaml] + edit: ['$stateParams', 'blueprintLoaderApi', ($stateParams, blueprintLoaderApi) => blueprintLoaderApi.loadBlueprint($stateParams)], + yaml: ['$stateParams', 'blueprintLoaderApi', ($stateParams, blueprintLoaderApi) => blueprintLoaderApi.loadYaml($stateParams)] } };