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)]
     }
 };

Reply via email to