Skip to content

Commit

Permalink
This closes #95
Browse files Browse the repository at this point in the history
  • Loading branch information
ahgittin committed Nov 2, 2018
2 parents a0cddab + c4367b2 commit 777332a
Show file tree
Hide file tree
Showing 4 changed files with 115 additions and 22 deletions.
@@ -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;
@@ -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;
}
}
9 changes: 5 additions & 4 deletions ui-modules/blueprint-composer/app/index.js
Expand Up @@ -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";
Expand Down Expand Up @@ -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)
Expand Down
20 changes: 2 additions & 18 deletions ui-modules/blueprint-composer/app/views/main/main.controller.js
Expand Up @@ -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)]
}
};

0 comments on commit 777332a

Please sign in to comment.