You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2016/02/01 18:52:38 UTC

[20/51] [abbrv] [partial] brooklyn-ui git commit: move subdir from incubator up a level as it is promoted to its own repo (first non-incubator commit!)

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/18b073a9/brooklyn-ui/src/test/javascript/specs/view/application-tree-spec.js
----------------------------------------------------------------------
diff --git a/brooklyn-ui/src/test/javascript/specs/view/application-tree-spec.js b/brooklyn-ui/src/test/javascript/specs/view/application-tree-spec.js
deleted file mode 100644
index 410f6d4..0000000
--- a/brooklyn-ui/src/test/javascript/specs/view/application-tree-spec.js
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * 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.
-*/
-define([
-    "underscore", "jquery", "model/app-tree", "view/application-tree",
-    "model/entity-summary", "model/application"
-], function (_, $, AppTree, ApplicationTreeView, EntitySummary, Application) {
-
-    // TODO json content must be updated to reflect new "batch" style result
-    // now used by the tree
-    
-//    var apps = new AppTree.Collection
-//    apps.url = 'fixtures/application-tree.json'
-//    apps.fetch({async:true})
-//
-//    describe('view/application-tree renders the list of applications as a tree', function () {
-//        var view, entityFetch, applicationFetch, defer;
-//
-//        beforeEach(function () {
-//            // ApplicationTree makes fetch requests to EntitySummary and Application models
-//            // with hard-coded URLs, causing long stacktraces in mvn output. This workaround
-//            // turns their fetch methods into empty functions.
-//            entityFetch = EntitySummary.Model.prototype.fetch;
-//            applicationFetch = Application.Model.prototype.fetch;
-//            defer = _.defer;
-//            _.defer = EntitySummary.Model.prototype.fetch = Application.Model.prototype.fetch = function() {};
-//
-//            // Append a #details div for not found test
-//            $("body").append('<div id="details"></div>');
-//
-//            view = new ApplicationTreeView({
-//                collection:apps
-//            }).render()
-//        })
-//
-//        // Restore EntitySummary and Application fetch.
-//        afterEach(function() {
-//            EntitySummary.Model.prototype.fetch = entityFetch;
-//            Application.Model.prototype.fetch = applicationFetch;
-//            _.defer = defer;
-//            $("#details").remove();
-//        });
-//
-//        it("builds the entity tree for each application", function () {
-//            expect(view.$("#riBZUjMq").length).toBe(1)
-//            expect(view.$("#fXyyQ7Ap").length).toBe(1)
-//            expect(view.$("#child-02").length).toBe(1)
-//            expect(view.$("#child-03").length).toBe(1)
-//            expect(view.$("#child-04").length).toBe(1)
-//            
-//            expect(view.$("#child-nonesuch").length).toBe(0)
-//        })
-//
-//        it("shows a 'not found' error for unknown entities", function() {
-//            view.displayEntityId("nonexistant");
-//            expect($("#details").text().toLowerCase()).toContain("failed to load entity nonexistant");
-//        });
-//    })
-    
-})
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/18b073a9/brooklyn-ui/src/test/javascript/specs/view/effector-invoke-spec.js
----------------------------------------------------------------------
diff --git a/brooklyn-ui/src/test/javascript/specs/view/effector-invoke-spec.js b/brooklyn-ui/src/test/javascript/specs/view/effector-invoke-spec.js
deleted file mode 100644
index a2685bc..0000000
--- a/brooklyn-ui/src/test/javascript/specs/view/effector-invoke-spec.js
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * 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.
-*/
-define([
-    "underscore", "view/effector-invoke", "model/effector-summary", "model/entity", "model/location"
-], function (_, EffectorInvokeView, EffectorSummary, Entity, Location) {
-
-    var collection = new EffectorSummary.Collection()
-    collection.url = "fixtures/effector-summary-list.json"
-    collection.fetch()
-    
-    var entityFixture = new Entity.Collection
-    entityFixture.url = 'fixtures/entity.json'
-    entityFixture.fetch()
-    
-    var locationsFixture = new Location.Collection
-    locationsFixture.url = 'fixtures/location-list.json'
-    locationsFixture.fetch()
-
-    const effector = collection.at(0);
-
-    var modalView = new EffectorInvokeView({
-        tagName:"div",
-        className:"modal",
-        model: effector,
-        entity:entityFixture.at(0),
-        locations: locationsFixture
-    })
-
-    describe("view/effector-invoke", function () {
-        // render and keep the reference to the view
-        modalView.render()
-
-        it("must render a bootstrap modal", function () {
-            expect(modalView.$(".modal-header").length).toBe(1)
-            expect(modalView.$(".modal-body").length).toBe(1)
-            expect(modalView.$(".modal-footer").length).toBe(1)
-        })
-
-        it("must have effector name, entity name, and effector description in header", function () {
-            expect(modalView.$(".modal-header h3").html()).toContain("start")
-            expect(modalView.$(".modal-header h3").html()).toContain("Vanilla")
-            expect(modalView.$(".modal-header p").html()).toBe("Start the process/service represented by an entity")
-        })
-
-        it("must have the list of parameters in body", function () {
-            expect(modalView.$(".modal-body table").length).toBe(1);
-            // +1 because one <tr> from table head
-            expect(modalView.$(".modal-body tr").length).toBe(effector.get("parameters").length + 1)
-        });
-
-        it("must properly extract parameters from table", function () {
-            // Select the third item in the option list rather than the "None" and
-            // horizontal bar placeholders.
-            window.m = modalView;
-            modalView.$(".select-location option:eq(2)").attr("selected", "selected");
-
-            var params = modalView.extractParamsFromTable();
-            console.log(params);
-            expect(params["locations"]).toBe("123")
-            expect(params).toEqual({
-                "locations": "123",
-                "booleanValue": "true"
-            });
-        });
-    })
-})
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/18b073a9/brooklyn-ui/src/test/javascript/specs/view/entity-activities-spec.js
----------------------------------------------------------------------
diff --git a/brooklyn-ui/src/test/javascript/specs/view/entity-activities-spec.js b/brooklyn-ui/src/test/javascript/specs/view/entity-activities-spec.js
deleted file mode 100644
index 310eb11..0000000
--- a/brooklyn-ui/src/test/javascript/specs/view/entity-activities-spec.js
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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.
-*/
-define([
-    "model/task-summary", "view/entity-activities"
-], function (TaskSummary, ActivityView) {
-
-    describe("view/entity-activity", function () {
-        var entity, view
-
-        beforeEach(function () {
-            entity = new Entity()
-            entity.url = "fixtures/entity-summary.json"
-            entity.fetch({async:false})
-            view = new ActivityView({ model:entity})
-        })
-    })
-
-})
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/18b073a9/brooklyn-ui/src/test/javascript/specs/view/entity-details-spec.js
----------------------------------------------------------------------
diff --git a/brooklyn-ui/src/test/javascript/specs/view/entity-details-spec.js b/brooklyn-ui/src/test/javascript/specs/view/entity-details-spec.js
deleted file mode 100644
index 3ca76ef..0000000
--- a/brooklyn-ui/src/test/javascript/specs/view/entity-details-spec.js
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * 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.
-*/
-define([
-    "underscore", "jquery", "backbone", "model/entity-summary", "view/entity-details", "view/entity-summary",
-    "view/entity-sensors", "model/application"
-], function (_, $, Backbone, EntitySummary, EntityDetailsView, EntitySummaryView, EntitySensorsView, Application) {
-
-    EntitySummary.Model.prototype.getSensorUpdateUrl = function () {
-        return "fixtures/sensor-current-state.json";
-    };
-
-    // TODO test complains about various things; $.get in entity-config gives weird errors;
-    // previously complains about 'url' needing to be set
-    // but i can't figure out where 'url' is missing
-    // (may get sorted out if state is stored centrally)
-//    describe('view/entity-details-spec EntityDetailsView', function () {
-//        var entity, view, app
-//
-//        beforeEach(function () {
-//            entity = new EntitySummary.Model
-//            entity.url = 'fixtures/entity-summary.json'
-//            entity.fetch({async:false})
-//            app = new Application.Model
-//            app.url = "fixtures/application.json"
-//            app.fetch({async:false})
-//            
-//            // entity-summary calls $.ajax on a sensor url that doesn't exist in tests.
-//            // make $.ajax a black hole for the creation of the view. Note it's important
-//            // that this is done _after_ the fetches above!
-////            jqueryGet = $.get;
-////            $.get = function() {
-////                return {
-////                    fail: function() {}
-////                };
-////            };
-//
-//            view = new EntityDetailsView({
-//                model:entity,
-//                application:app
-//            });
-//            view.render();
-//        });
-//
-//        //
-//        // Restore $.ajax
-////        afterEach(function() {
-////            $.get = jqueryGet;
-////        });
-//
-//        it('renders to a bootstrap tabbable', function () {
-//            expect(view.$('#summary').length).toBe(1)
-//            expect(view.$('#sensors').length).toBe(1)
-//            expect(view.$('#effectors').length).toBe(1)
-//        })
-//    })
-
-    describe('view/entity-details-spec/Summary', function () {
-        var view=null;
-
-        beforeEach(function () {
-            var entity, app;
-            entity = new EntitySummary.Model;
-            entity.url = 'fixtures/entity-summary.json';
-            entity.fetch({async:false});
-            app = new Application.Model;
-            app.url = "fixtures/application.json";
-            app.fetch({async:false});
-
-            view = new EntitySummaryView({
-                model:entity,
-                application:app
-            });
-            view.render();
-        });
-
-    });
-
-    // TODO complains about instanceof on a non-object in underscore; probably because we are now doing $.get 
-    // rather than collections.fetch 
-//    describe('view/entity-details-spec/Summary', function () {
-//        var sampleEntity, view
-//
-//        beforeEach(function () {
-//            sampleEntity = new EntitySummary.Model
-//            sampleEntity.url = 'fixtures/entity-summary.json'
-//            sampleEntity.fetch({async:false})
-//            view = new EntitySensorsView({ model:sampleEntity}).render()
-//            view.toggleFilterEmpty()
-//        })
-//
-//        it('must render as a table with sensor data', function () {
-//            expect(view.$('table#sensors-table').length).toBe(1)
-//            expect(view.$('th').length).toBe(3)
-//            var $body
-//            $body = view.$('tbody')
-//
-//            expect($body.find('tr:first .sensor-name').html()).toBe('jmx.context')
-//            expect($body.find('tr:first .sensor-name').attr('data-original-title')).toMatch("JMX context path")
-//            expect($body.find('tr:last .sensor-name').attr('data-original-title')).toMatch("Suggested shutdown port")
-//            expect($body.find("tr:last .sensor-name").attr("rel")).toBe("tooltip")
-//        })
-//    })
-    
-});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/18b073a9/brooklyn-ui/src/test/javascript/specs/view/entity-effector-view-spec.js
----------------------------------------------------------------------
diff --git a/brooklyn-ui/src/test/javascript/specs/view/entity-effector-view-spec.js b/brooklyn-ui/src/test/javascript/specs/view/entity-effector-view-spec.js
deleted file mode 100644
index eae2101..0000000
--- a/brooklyn-ui/src/test/javascript/specs/view/entity-effector-view-spec.js
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.
-*/
-define([
-    "underscore", "jquery", "backbone", "view/entity-effectors", "model/entity-summary"
-], function (_, $, Backbone, EntityEffectorsView, EntitySummary) {
-
-    var entitySummary = new EntitySummary.Model
-    entitySummary.url = "fixtures/entity-summary.json"
-
-    entitySummary.fetch({success:function () {
-
-        var $ROOT = $("<div/>"),
-            entityEffectorsView = new EntityEffectorsView({
-                el:$ROOT,
-                model:entitySummary
-            })
-
-        describe("view/entity-effectors", function () {
-
-            it("has table#effectors-table after initialization", function () {
-                expect($ROOT.find('table#effectors-table').length).toBe(1)
-            })
-
-            it("renders 3 effectors in the table", function () {
-                entityEffectorsView.render()
-                var $table = $ROOT.find("tbody")
-                expect($table.find("tr").length).toBe(3)
-                expect($table.find("tr:first .effector-name").html()).toBe("start")
-                expect($table.find("tr:last .effector-name").html()).toBe("stop")
-            })
-        })
-    }})
-})
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/18b073a9/brooklyn-ui/src/test/javascript/specs/view/entity-sensors-spec.js
----------------------------------------------------------------------
diff --git a/brooklyn-ui/src/test/javascript/specs/view/entity-sensors-spec.js b/brooklyn-ui/src/test/javascript/specs/view/entity-sensors-spec.js
deleted file mode 100644
index d2bea28..0000000
--- a/brooklyn-ui/src/test/javascript/specs/view/entity-sensors-spec.js
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.
-*/
-define([
-    "underscore", "view/entity-sensors",
-    "text!tpl/apps/sensor-name.html"
-], function (_, EntitySensorsView, SensorNameHtml) {
-
-    function contains(string, value) {
-        return string.indexOf(value) != -1;
-    }
-
-    describe("template/sensor-name", function () {
-        var sensorNameHtml = _.template(SensorNameHtml);
-        var context = {name: "name", description: "description", type: "type"};
-
-        it("should not create an anchor tag in name", function() {
-            var templated = sensorNameHtml(_.extend(context, {href: "href"}));
-            expect(contains(templated, "<a href=\"href\"")).toBe(false);
-        });
-        
-        it("should not fail if context.href is undefined", function() {
-            var templated = sensorNameHtml(_.extend(context, {href: undefined}));
-            expect(contains(templated, "<a href=")).toBe(false);
-        });
-    })
-
-})
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/18b073a9/brooklyn-ui/src/test/license/DISCLAIMER
----------------------------------------------------------------------
diff --git a/brooklyn-ui/src/test/license/DISCLAIMER b/brooklyn-ui/src/test/license/DISCLAIMER
deleted file mode 100644
index 9e6119b..0000000
--- a/brooklyn-ui/src/test/license/DISCLAIMER
+++ /dev/null
@@ -1,8 +0,0 @@
-
-Apache Brooklyn is an effort undergoing incubation at The Apache Software Foundation (ASF), 
-sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until 
-a further review indicates that the infrastructure, communications, and decision making process 
-have stabilized in a manner consistent with other successful ASF projects. While incubation 
-status is not necessarily a reflection of the completeness or stability of the code, it does 
-indicate that the project has yet to be fully endorsed by the ASF.
-

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/18b073a9/brooklyn-ui/src/test/license/LICENSE
----------------------------------------------------------------------
diff --git a/brooklyn-ui/src/test/license/LICENSE b/brooklyn-ui/src/test/license/LICENSE
deleted file mode 100644
index 67db858..0000000
--- a/brooklyn-ui/src/test/license/LICENSE
+++ /dev/null
@@ -1,175 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/18b073a9/brooklyn-ui/src/test/license/NOTICE
----------------------------------------------------------------------
diff --git a/brooklyn-ui/src/test/license/NOTICE b/brooklyn-ui/src/test/license/NOTICE
deleted file mode 100644
index f790f13..0000000
--- a/brooklyn-ui/src/test/license/NOTICE
+++ /dev/null
@@ -1,5 +0,0 @@
-Apache Brooklyn
-Copyright 2014-2015 The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/18b073a9/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..3c5acf0
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,440 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache</groupId>
+        <artifactId>apache</artifactId>
+        <version>17</version>
+        <relativePath></relativePath> <!-- prevent loading of ../pom.xml as the "parent" -->
+    </parent>
+
+    <groupId>org.apache.brooklyn</groupId>
+    <artifactId>brooklyn-jsgui</artifactId>
+    <version>0.9.0-SNAPSHOT</version>  <!-- BROOKLYN_VERSION -->
+    <packaging>war</packaging>
+
+    <name>Brooklyn REST JavaScript Web GUI</name>
+
+    <description>
+        JavaScript+HTML GUI for interacting with Brooklyn, using the REST API
+    </description>
+
+    <properties>
+        <project.build.webapp>
+            ${project.build.directory}/${project.build.finalName}
+        </project.build.webapp>
+        <nodejs.path>${project.basedir}/target/nodejs/node</nodejs.path>
+        <jasmine-maven-plugin.version>1.3.1.5</jasmine-maven-plugin.version>
+        <maven-dependency-plugin.version>2.8</maven-dependency-plugin.version>
+        <nodejs-maven-plugin.version>1.0.3</nodejs-maven-plugin.version>
+        <maven-war-plugin.version>2.4</maven-war-plugin.version>
+        <nodejs-maven-binaries.version>0.10.25</nodejs-maven-binaries.version>
+        <requirejs-maven-plugin.version>2.0.0</requirejs-maven-plugin.version>
+        <maven-replacer-plugin.version>1.5.2</maven-replacer-plugin.version>
+        <maven-resources-plugin.version>2.7</maven-resources-plugin.version>
+    </properties>
+
+    <build>
+        <resources>
+            <resource>
+                <directory>${project.basedir}/src/test/resources/fixtures</directory>
+                <targetPath>${project.build.directory}/jasmine/fixtures</targetPath>
+            </resource>
+        </resources>
+        <!-- Insert special LICENSE/NOTICE into the <test-jar>/META-INF folder -->
+        <testResources>
+            <testResource>
+                <directory>${project.basedir}/src/test/resources</directory>
+            </testResource>
+            <testResource>
+                <targetPath>META-INF</targetPath>
+                <directory>${basedir}/src/test/license/files</directory>
+            </testResource>
+        </testResources>
+        <plugins>
+            <!--
+                 run js tests with: $ mvn clean process-test-resources jasmine:test
+                 run tests in the browser with: $ mvn jasmine:bdd
+            -->
+            <plugin>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>${maven-resources-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>copy-fixtures</id>
+                        <phase>process-test-resources</phase>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals>
+                        <configuration>
+                            <outputDirectory>${project.build.directory}/jasmine/fixtures</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <!-- copy rest-api fixtures from brooklyn-server submodule repo -->
+                                    <directory>${project.basedir}/../brooklyn-server/rest/rest-api/src/test/resources/fixtures</directory>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>com.github.searls</groupId>
+                <artifactId>jasmine-maven-plugin</artifactId>
+                <version>${jasmine-maven-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>test</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <!--Uses the require.js test spec-->
+                    <specRunnerTemplate>REQUIRE_JS</specRunnerTemplate>
+                    <preloadSources>
+                        <source>js/libs/require.js</source>
+                    </preloadSources>
+
+                    <!--Sources-->
+                    <jsSrcDir>${project.basedir}/src/main/webapp/assets</jsSrcDir>
+                    <jsTestSrcDir>${project.basedir}/src/test/javascript/specs</jsTestSrcDir>
+                    <customRunnerConfiguration>
+                        ${project.basedir}/src/test/javascript/config.txt
+                    </customRunnerConfiguration>
+                    <!-- Makes output terser -->
+                    <format>progress</format>
+                    <additionalContexts>
+                        <!-- If context roots start with a / the resource will be available on the server at //root. -->
+                        <!-- It is an error for context roots to end with a /. -->
+                        <context>
+                            <contextRoot>fixtures</contextRoot>
+                            <directory>${project.build.directory}/jasmine/fixtures</directory>
+                        </context>
+                    </additionalContexts>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-war-plugin</artifactId>
+                <version>${maven-war-plugin.version}</version>
+                <configuration>
+                    <useCache>true</useCache> <!-- to prevent replaced files being overwritten -->
+                    <!-- Insert special LICENSE/NOTICE into the <war>/META-INF folder -->
+                    <webResources>
+                        <webResource>
+                            <targetPath>META-INF</targetPath>
+                            <directory>${basedir}/src/main/license/files</directory>
+                        </webResource>
+                    </webResources>
+                    <archive>
+                        <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
+                    </archive>
+                </configuration>
+            </plugin>
+            <!-- Disable the automatic LICENSE/NOTICE placement from the upstream pom, because we need to include
+                 bundled dependencies. See "webResources" section above for where we include the new LICENSE/NOTICE -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-remote-resources-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>process</goal>
+                        </goals>
+                        <configuration>
+                            <skip>true</skip>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <version>2.5.4</version>
+                <executions>
+                    <execution>
+                        <id>bundle-manifest</id>
+                        <phase>process-classes</phase>
+                        <goals>
+                            <goal>manifest</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <supportedProjectTypes>
+                        <supportedProjectType>war</supportedProjectType>
+                    </supportedProjectTypes>
+                    <instructions>
+                        <Web-ContextPath>/</Web-ContextPath>
+                    </instructions>
+                </configuration>
+            </plugin>
+        </plugins>
+
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.apache.rat</groupId>
+                    <artifactId>apache-rat-plugin</artifactId>
+                    <configuration>
+                        <excludes combine.children="append">
+                            <!--
+                                JavaScript code that is not copyright of Apache Foundation. It is included in NOTICE.
+                            -->
+                            <exclude>**/src/main/webapp/assets/js/libs/*</exclude>
+                            <exclude>**/src/build/requirejs-maven-plugin/r.js</exclude>
+
+                            <!--
+                                Copy of swagger-ui from https://github.com/swagger-api/swagger-ui tag::v2.1.3
+                            -->
+                            <exclude>**/src/main/webapp/assets/swagger-ui/**</exclude>
+
+                            <!--
+                                Trivial Json controlling the build,  "without any degree of creativity".
+                                Json does not support comments, therefore far easier to just omit the license header!
+                            -->
+                            <exclude>**//src/build/optimize-css.json</exclude>
+                            <exclude>**//src/build/optimize-js.json</exclude>
+                        </excludes>
+                    </configuration>
+                </plugin>
+                <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
+                <plugin>
+                	<groupId>org.eclipse.m2e</groupId>
+                	<artifactId>lifecycle-mapping</artifactId>
+                	<version>1.0.0</version>
+                	<configuration>
+                		<lifecycleMappingMetadata>
+                			<pluginExecutions>
+                				<pluginExecution>
+                					<pluginExecutionFilter>
+                						<groupId>
+                							com.github.skwakman.nodejs-maven-plugin
+                						</groupId>
+                						<artifactId>
+                							nodejs-maven-plugin
+                						</artifactId>
+                						<versionRange>
+                							[1.0.3,)
+                						</versionRange>
+                						<goals>
+                							<goal>extract</goal>
+                						</goals>
+                					</pluginExecutionFilter>
+                					<action>
+                						<ignore></ignore>
+                					</action>
+                				</pluginExecution>
+                			</pluginExecutions>
+                		</lifecycleMappingMetadata>
+                	</configuration>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>nodejs-path-override</id>
+            <activation>
+                <os><family>linux</family></os>
+            </activation>
+            <properties>
+                <nodejs.path>${project.basedir}/src/build/nodejs</nodejs.path>
+            </properties>
+            <dependencies>
+                <dependency>
+                    <groupId>com.github.skwakman.nodejs-maven-binaries</groupId>
+                    <artifactId>nodejs-maven-binaries</artifactId>
+                    <version>${nodejs-maven-binaries.version}</version>
+                    <classifier>linux-x64</classifier>
+                    <type>zip</type>
+                </dependency>
+            </dependencies>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-dependency-plugin</artifactId>
+                        <version>${maven-dependency-plugin.version}</version>
+                        <executions>
+                          <execution>
+                            <id>unpack-nodejs64</id>
+                            <phase>prepare-package</phase>
+                            <goals>
+                              <goal>unpack-dependencies</goal>
+                            </goals>
+                            <configuration>
+                              <includeGroupIds>com.github.skwakman.nodejs-maven-binaries</includeGroupIds>
+                              <includeArtifactIds>nodejs-maven-binaries</includeArtifactIds>
+                              <outputDirectory>
+                                 ${project.basedir}/target/nodejs64/
+                              </outputDirectory>
+                            </configuration>
+                          </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+
+        <profile>
+            <id>Optimize resources</id>
+            <activation>
+                <property>
+                    <name>!skipOptimization</name>
+                </property>
+            </activation>
+            <build>
+                <plugins>
+                    <!-- Installs node.js in target/. Means we get the benefits of node's speed
+                         (compared to Rhino) without having to install it manually. -->
+                    <plugin>
+                        <groupId>com.github.skwakman.nodejs-maven-plugin</groupId>
+                        <artifactId>nodejs-maven-plugin</artifactId>
+                        <version>${nodejs-maven-plugin.version}</version>
+                        <executions>
+                            <execution>
+                                <goals>
+                                    <goal>extract</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                        <configuration>
+                            <!-- target directory for node binaries -->
+                            <targetDirectory>${project.basedir}/target/nodejs/</targetDirectory>
+                        </configuration>
+                    </plugin>
+
+                    <!-- Including the exploded goal means sources are in place ready for the replacer plugin. -->
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-war-plugin</artifactId>
+                        <version>${maven-war-plugin.version}</version>
+                        <executions>
+                            <execution>
+                                <id>prepare-war</id>
+                                <phase>prepare-package</phase>
+                                <goals>
+                                    <goal>exploded</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+
+                    <!-- Runs the require.js optimizer with node to produce a single artifact. -->
+                    <plugin>
+                        <groupId>com.github.mcheely</groupId>
+                        <artifactId>requirejs-maven-plugin</artifactId>
+                        <version>${requirejs-maven-plugin.version}</version>
+                        <executions>
+                            <execution>
+                                <id>optimize-js</id>
+                                <phase>prepare-package</phase>
+                                <goals>
+                                    <goal>optimize</goal>
+                                </goals>
+                                <configuration>
+                                    <configFile>${project.basedir}/src/build/optimize-js.json</configFile>
+                                </configuration>
+                            </execution>
+                            <execution>
+                                <id>optimize-css</id>
+                                <phase>prepare-package</phase>
+                                <goals>
+                                    <goal>optimize</goal>
+                                </goals>
+                                <configuration>
+                                    <configFile>${project.basedir}/src/build/optimize-css.json</configFile>
+                                </configuration>
+                            </execution>
+                        </executions>
+                        <configuration>
+                            <nodeExecutable>${nodejs.path}</nodeExecutable>
+                            <optimizerFile>${project.basedir}/src/build/requirejs-maven-plugin/r.js</optimizerFile>
+                            <!-- Replaces Maven tokens in the build file with their values -->
+                            <filterConfig>true</filterConfig>
+                        </configuration>
+                    </plugin>
+
+                    <!-- Modify index.html to point to the optimized resources generated above. -->
+                    <plugin>
+                        <groupId>com.google.code.maven-replacer-plugin</groupId>
+                        <artifactId>replacer</artifactId>
+                        <version>${maven-replacer-plugin.version}</version>
+                        <executions>
+                            <execution>
+                                <id>modify-for-optimized</id>
+                                <phase>prepare-package</phase>
+                                <goals>
+                                    <goal>replace</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                        <configuration>
+                            <file>${project.build.webapp}/index.html</file>
+                            <replacements>
+                                <replacement>
+                                    <token>assets/js/config.js</token>
+                                    <value>assets/js/gui.all.min.js</value>
+                                </replacement>
+                                <replacement>
+                                    <token>assets/css/styles.css</token>
+                                    <value>assets/css/styles.min.css</value>
+                                </replacement>
+                                <replacement>
+                                    <token>GIT_SHA_1</token>
+                                    <value>${buildNumber}</value>
+                                </replacement>
+                            </replacements>
+                        </configuration>
+                    </plugin>
+
+                    <!-- Compress the minified files. Jetty will serve the gzipped content instead. -->
+                    <plugin>
+                        <artifactId>maven-antrun-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>Compress resources</id>
+                                <phase>prepare-package</phase>
+                                <goals>
+                                    <goal>run</goal>
+                                </goals>
+                                <configuration>
+                                    <target>
+                                        <gzip src="${project.build.webapp}/assets/css/styles.min.css" destfile="${project.build.webapp}/assets/css/styles.min.css.gz" />
+                                        <gzip src="${project.build.webapp}/assets/css/brooklyn.css" destfile="${project.build.webapp}/assets/css/brooklyn.css.gz" />
+                                        <gzip src="${project.build.webapp}/assets/js/gui.all.min.js" destfile="${project.build.webapp}/assets/js/gui.all.min.js.gz" />
+                                        <gzip src="${project.build.webapp}/assets/js/libs/require.js" destfile="${project.build.webapp}/assets/js/libs/require.js.gz" />
+                                    </target>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+
+</project>
+

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/18b073a9/src/build/.gitattributes
----------------------------------------------------------------------
diff --git a/src/build/.gitattributes b/src/build/.gitattributes
new file mode 100644
index 0000000..83a693d
--- /dev/null
+++ b/src/build/.gitattributes
@@ -0,0 +1,2 @@
+#Don't auto-convert line endings for shell scripts on Windows (breaks the scripts)
+nodejs text eol=lf

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/18b073a9/src/build/nodejs
----------------------------------------------------------------------
diff --git a/src/build/nodejs b/src/build/nodejs
new file mode 100755
index 0000000..2b00792
--- /dev/null
+++ b/src/build/nodejs
@@ -0,0 +1,41 @@
+#!/bin/sh
+#
+# 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.
+#
+# nodejs-maven-plugin incorrectly detects the architecture on 
+# Linux x64 running 32 bit Java leading to the installation of
+# invalid nodejs binary - 32 bit on 64 bit OS. This is a
+# wrapper which makes a check for the architecture again and
+# forces the usage of the 64 bit binary. The 64 bit nodejs
+# is installed in advance in case we need it.
+#
+# target/nodejs64/node - the forcibly installed 64 bit binary
+# target/nodejs/node - the binary installed by nodejs-maven-plugin
+#                      could be 32 bit or 64 bit.
+#
+
+MACHINE_TYPE=`uname -m`
+if [ $MACHINE_TYPE = 'x86_64' ]; then
+  NODE_PATH=$( dirname "$0" )/../../target/nodejs64/node
+  chmod +x $NODE_PATH
+  echo Forcing 64 bit nodejs at $NODE_PATH
+else
+  NODE_PATH=$( dirname "$0" )/../../target/nodejs/node
+fi
+
+$NODE_PATH "$@"

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/18b073a9/src/build/optimize-css.json
----------------------------------------------------------------------
diff --git a/src/build/optimize-css.json b/src/build/optimize-css.json
new file mode 100644
index 0000000..d27d7ac
--- /dev/null
+++ b/src/build/optimize-css.json
@@ -0,0 +1,12 @@
+({
+    cssIn: "${project.build.webapp}/assets/css/styles.css",
+    out: "${project.build.webapp}/assets/css/styles.min.css",
+
+    // CSS optimization options are:
+    //  - "standard": @import inlining, comment removal and line returns.
+    //  - "standard.keepLines": like "standard" but keeps line returns.
+    //  - "standard.keepComments": keeps the file comments, but removes line returns.
+    //  - "standard.keepComments.keepLines": keeps the file comments and line returns.
+    //  - "none": skip CSS optimizations.
+    optimizeCss: "standard"
+})

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/18b073a9/src/build/optimize-js.json
----------------------------------------------------------------------
diff --git a/src/build/optimize-js.json b/src/build/optimize-js.json
new file mode 100644
index 0000000..60855d9
--- /dev/null
+++ b/src/build/optimize-js.json
@@ -0,0 +1,18 @@
+({
+    // The entry point to the application. Brooklyn's is in config.js.
+    name: "config",
+    baseUrl: "${project.build.webapp}/assets/js",
+    mainConfigFile: "${project.build.webapp}/assets/js/config.js",
+    paths: {
+        // Include paths to external resources (e.g. on a CDN) here.
+
+        // Optimiser looks for js/requireLib.js by default.
+        "requireLib": "libs/require"
+    },
+
+    // Place the optimised file in target/<war>/assets.
+    out: "${project.build.webapp}/assets/js/gui.all.min.js",
+
+    // Set to "none" to skip minification
+    optimize: "uglify"
+})