Repository: qpid-broker-j
Updated Branches:
  refs/heads/master 38819bcac -> 0a26d40f3


QPID-8102: [Broker-J] Address review comments


Project: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/commit/0a26d40f
Tree: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/tree/0a26d40f
Diff: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/diff/0a26d40f

Branch: refs/heads/master
Commit: 0a26d40f3b65421bfd354ae09fac51b56b0ce949
Parents: 38819bc
Author: Alex Rudyy <oru...@apache.org>
Authored: Fri Feb 23 14:15:09 2018 +0000
Committer: Alex Rudyy <oru...@apache.org>
Committed: Fri Feb 23 14:15:58 2018 +0000

----------------------------------------------------------------------
 .../server/virtualhost/AbstractVirtualHost.java | 12 ++--
 .../resources/js/qpid/management/VirtualHost.js | 25 ++++++---
 .../js/qpid/management/editVirtualHost.js       | 58 ++++++++++++++------
 .../virtualhost/NodeAutoCreationPolicyForm.js   | 38 ++++++-------
 .../virtualhost/NodeAutoCreationPolicyForm.html | 13 +++--
 5 files changed, 93 insertions(+), 53 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/0a26d40f/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
----------------------------------------------------------------------
diff --git 
a/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
 
b/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
index 44ebe3f..3e64deb 100644
--- 
a/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
+++ 
b/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
@@ -464,7 +464,7 @@ public abstract class AbstractVirtualHost<X extends 
AbstractVirtualHost<X>> exte
         String pattern = policy.getPattern();
         if(pattern == null)
         {
-            throw new IllegalArgumentException("The 'pattern' attribute of a 
NodeAutoCreationPattern MUST be supplied: " + policy);
+            throw new IllegalArgumentException("The 'pattern' attribute of a 
NodeAutoCreationPolicy MUST be supplied: " + policy);
         }
 
         try
@@ -473,7 +473,7 @@ public abstract class AbstractVirtualHost<X extends 
AbstractVirtualHost<X>> exte
         }
         catch (PatternSyntaxException e)
         {
-            throw new IllegalArgumentException("The 'pattern' attribute of a 
NodeAutoCreationPattern MUST be a valid "
+            throw new IllegalArgumentException("The 'pattern' attribute of a 
NodeAutoCreationPolicy MUST be a valid "
                                                + "Java Regular Expression 
Pattern, the value '" + pattern + "' is not: " + policy);
 
         }
@@ -490,23 +490,23 @@ public abstract class AbstractVirtualHost<X extends 
AbstractVirtualHost<X>> exte
         }
         if(sourceClass == null)
         {
-            throw new IllegalArgumentException("The node type of a 
NodeAutoCreationPattern must be a valid child type "
+            throw new IllegalArgumentException("The node type of a 
NodeAutoCreationPolicy must be a valid child type "
                                                + "of a VirtualHost, '" + 
nodeType + "' is not.");
         }
         if(policy.isCreatedOnConsume() && 
!MessageSource.class.isAssignableFrom(sourceClass))
         {
-            throw new IllegalArgumentException("A NodeAutoCreationPattern 
which creates nodes on consume must have a "
+            throw new IllegalArgumentException("A NodeAutoCreationPolicy which 
creates nodes on consume must have a "
                                                + "nodeType which implements 
MessageSource, '" + nodeType + "' does not.");
         }
 
         if(policy.isCreatedOnPublish() && 
!MessageDestination.class.isAssignableFrom(sourceClass))
         {
-            throw new IllegalArgumentException("A NodeAutoCreationPattern 
which creates nodes on publish must have a "
+            throw new IllegalArgumentException("A NodeAutoCreationPolicy which 
creates nodes on publish must have a "
                                                + "nodeType which implements 
MessageDestination, '" + nodeType + "' does not.");
         }
         if(!(policy.isCreatedOnConsume() || policy.isCreatedOnPublish()))
         {
-            throw new IllegalArgumentException("A NodeAutoCreationPattern must 
create on consume, create on publish or both.");
+            throw new IllegalArgumentException("A NodeAutoCreationPolicy must 
create on consume, create on publish or both.");
         }
 
     }

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/0a26d40f/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHost.js
----------------------------------------------------------------------
diff --git 
a/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHost.js
 
b/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHost.js
index 6df7870..7a96baa 100644
--- 
a/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHost.js
+++ 
b/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHost.js
@@ -513,7 +513,8 @@ define(["dojo/parser",
                                 markup = "<div class='keyValuePair'>";
                                 for(var key in value)
                                 {
-                                    markup += "<div>" + key + "=" + value[key] 
+ "</div>";
+                                    markup += "<div>" + 
entities.encode(String(key)) + "="
+                                              + 
entities.encode(String(value[key])) + "</div>";
                                 }
                                 markup += "</div>"
                             }
@@ -709,23 +710,31 @@ define(["dojo/parser",
             {
                 for (var i = 0; i < data.length; i++)
                 {
-                    dstore.put(data[i]);
+                    dstore.putSync(data[i]);
                 }
             }
-            dstore.fetch()
+            var objectsToRemove = [];
+            dstore.fetchSync()
                 .forEach(function (object) {
-                    if (data)
+                    if (object)
                     {
-                        for (var i = 0; i < data.length; i++)
+                        if (data)
                         {
-                            if (data[i][idProperty] === object[idProperty])
+                            for (var i = 0; i < data.length; i++)
                             {
-                                return;
+                                if (data[i][idProperty] === object[idProperty])
+                                {
+                                    return;
+                                }
                             }
                         }
+                        objectsToRemove.push(object[idProperty]);
                     }
-                    dstore.remove(object[idProperty]);
                 });
+            for (var i = 0 ; i < objectsToRemove.length; i++)
+            {
+                dstore.removeSync(objectsToRemove[i]);
+            }
         };
 
         return VirtualHost;

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/0a26d40f/broker-plugins/management-http/src/main/java/resources/js/qpid/management/editVirtualHost.js
----------------------------------------------------------------------
diff --git 
a/broker-plugins/management-http/src/main/java/resources/js/qpid/management/editVirtualHost.js
 
b/broker-plugins/management-http/src/main/java/resources/js/qpid/management/editVirtualHost.js
index 01dc072..fd0c577 100644
--- 
a/broker-plugins/management-http/src/main/java/resources/js/qpid/management/editVirtualHost.js
+++ 
b/broker-plugins/management-http/src/main/java/resources/js/qpid/management/editVirtualHost.js
@@ -258,7 +258,7 @@ define(["dojox/html/entities",
                     }
                 });
 
-                this._initNodeAutoCreationPolicies(data);
+                this._initNodeAutoCreationPolicies(data.actual && 
data.actual.nodeAutoCreationPolicies ? data.actual.nodeAutoCreationPolicies : 
[]);
                 this.dialog.startup();
                 this.dialog.show();
                 if (!this.resizeEventRegistered)
@@ -302,7 +302,7 @@ define(["dojox/html/entities",
                             label: 'All',
                             selector: 'checkbox'
                         },
-                        nodeType: {
+                        type: {
                             label: "Node Type"
                         },
                         pattern: {
@@ -317,17 +317,17 @@ define(["dojox/html/entities",
                         attributes: {
                             label: "Attributes",
                             sortable: false,
-                            formatter: function(value, object)
-                            {
+                            formatter: function (value, object) {
                                 var markup = "";
                                 if (value)
                                 {
                                     markup = "<div class='keyValuePair'>";
-                                    for(var key in value)
+                                    for (var key in value)
                                     {
-                                        markup += "<div>" + key + "=" + 
value[key] + "</div>";
+                                        markup += "<div>" + 
entities.encode(String(key)) + "="
+                                                  + 
entities.encode(String(value[key])) + "</div>";
                                     }
-                                    markup +="</div>"
+                                    markup += "</div>"
                                 }
                                 return markup;
                             }
@@ -346,9 +346,22 @@ define(["dojox/html/entities",
                 this._policyGrid.on('dgrid-deselect', lang.hitch(this, 
this._policySelectionChanged));
 
             },
-            _initNodeAutoCreationPolicies: function (data) {
-                this._policies =
-                    data.actual && data.actual.nodeAutoCreationPolicies ? 
data.actual.nodeAutoCreationPolicies : [];
+            _toDgridFriendlyNodeAutoCreationPolicyObject: function (policy) {
+                return { pattern: policy.pattern,
+                         type: policy.nodeType,
+                         attributes: policy.attributes,
+                         createdOnPublish: policy.createdOnPublish,
+                         createdOnConsume: policy.createdOnConsume};
+            },
+            _initNodeAutoCreationPolicies: function (policies) {
+
+                var dgridFriendlyPolicies = [];
+                for (var i = 0; i < policies.length; i++)
+                {
+                    
dgridFriendlyPolicies.push(this._toDgridFriendlyNodeAutoCreationPolicyObject(policies[i]));
+                }
+
+                this._policies = dgridFriendlyPolicies;
                 var Store = MemoryStore.createSubclass(TrackableStore);
                 this._policyStore = new Store({
                     data: this._policies,
@@ -373,7 +386,11 @@ define(["dojox/html/entities",
                             this.nodeAutoCreationPolicyForm.on("create", 
lang.hitch(this, function (e) {
                                 try
                                 {
-                                    this._policyStore.putSync(e.data);
+                                    
this._policyStore.putSync(this._toDgridFriendlyNodeAutoCreationPolicyObject(e.data));
+                                    if (e.oldData && e.oldData.pattern !== 
e.data.pattern)
+                                    {
+                                        
this._policyStore.removeSync(e.oldData.pattern);
+                                    }
                                 }
                                 catch (e)
                                 {
@@ -387,7 +404,7 @@ define(["dojox/html/entities",
             },
             _policySelected: function (event) {
                 var row = this._policyGrid.row(event);
-                this._showNodeAutoCreationPolicyForm(row.data);
+                
this._showNodeAutoCreationPolicyForm(this._toNodeAutoCreationPolicyObject(row.data));
             },
             _deleteNodeAutoCreationPolicy: function () {
                 var selected = this._getSelectedPolicies();
@@ -418,11 +435,20 @@ define(["dojox/html/entities",
             },
             _getNodeAutoCreationPolicies: function () {
                 var policies = [];
-                this._policyStore.fetchSync().forEach(function (policy) {
-                    policies.push(policy);
-                });
+                this._policyStore.fetchSync().forEach(lang.hitch(this, 
function (policy) {
+                    
policies.push(this._toNodeAutoCreationPolicyObject(policy));
+                }));
                 return policies;
-            }
+            },
+            _toNodeAutoCreationPolicyObject: function (policy) {
+                return {
+                    pattern: policy.pattern,
+                    nodeType: policy.type,
+                    attributes: policy.attributes,
+                    createdOnPublish: policy.createdOnPublish,
+                    createdOnConsume: policy.createdOnConsume
+                };
+            },
         };
 
         virtualHostEditor.init();

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/0a26d40f/broker-plugins/management-http/src/main/java/resources/js/qpid/management/virtualhost/NodeAutoCreationPolicyForm.js
----------------------------------------------------------------------
diff --git 
a/broker-plugins/management-http/src/main/java/resources/js/qpid/management/virtualhost/NodeAutoCreationPolicyForm.js
 
b/broker-plugins/management-http/src/main/java/resources/js/qpid/management/virtualhost/NodeAutoCreationPolicyForm.js
index c250063..bfa0d74 100644
--- 
a/broker-plugins/management-http/src/main/java/resources/js/qpid/management/virtualhost/NodeAutoCreationPolicyForm.js
+++ 
b/broker-plugins/management-http/src/main/java/resources/js/qpid/management/virtualhost/NodeAutoCreationPolicyForm.js
@@ -171,7 +171,7 @@ define(["dojo/_base/declare",
                                         createdOnConsume: 
this.createdOnConsume.checked,
                                         attributes: this._getObjectAttributes()
                                     };
-                                    this.emit("create", {data: data});
+                                    this.emit("create", {data: data, oldData: 
this._policy});
                                     this.nodeAutoCreationPolicyDialog.hide();
                                 }
                                 else
@@ -198,8 +198,8 @@ define(["dojo/_base/declare",
                 _addAttribute: function () {
                     var id = (++this._id);
                     var item = {
-                        name: "<new>",
-                        value: "<new>",
+                        name: "",
+                        value: "",
                         id: id
                     };
                     this.addAttributeButton.set("disabled", true);
@@ -212,10 +212,10 @@ define(["dojo/_base/declare",
                     {
                         console.error("failure to add new attribute:" + e);
                     }
+                    this._onChange();
                 },
                 _deleteAttribute: function () {
                     var selected = this._getSelectedAttributes();
-                    var newDeleted = false;
                     if (selected.length > 0)
                     {
                         for (var s in selected)
@@ -226,20 +226,14 @@ define(["dojo/_base/declare",
                                 var item =  this._store.getSync(id);
                                 if (item)
                                 {
-                                    if (item.name === "<new>")
-                                    {
-                                        newDeleted = true;
-                                    }
                                     this._store.removeSync(selected[s]);
                                 }
                             }
                         }
                         this._attributesGrid.clearSelection();
                     }
-                    if (newDeleted)
-                    {
-                        this.addAttributeButton.set("disabled", false);
-                    }
+                    this.addAttributeButton.set("disabled", 
this._emptyPatternFound());
+                    this._onChange();
                 },
                 _getSelectedAttributes: function () {
                     var selected = [];
@@ -254,13 +248,8 @@ define(["dojo/_base/declare",
                     return selected;
                 },
                 _onGridEdit: function (e) {
-                        if (e.value !== "<new>")
-                        {
-                            if (e.cell.column.field==="name" && e.oldValue === 
"<new>" && e.value !== "<new>")
-                            {
-                                this.addAttributeButton.set("disabled", false);
-                            }
-                        }
+                    this.addAttributeButton.set("disabled", 
this._emptyPatternFound());
+                    this._onChange();
                 },
                 _gridSelectionChanged: function () {
                     var selected = this._getSelectedAttributes();
@@ -350,6 +339,17 @@ define(["dojo/_base/declare",
                         }), true);
                         this._attributesGrid.startup();
                     }
+                },
+                _emptyPatternFound: function () {
+                    var emptyPatternDetected = false;
+                    this._store.fetchSync()
+                        .forEach(function (value) {
+                            if (value && value.pattern === "")
+                            {
+                                emptyPatternDetected = true;
+                            }
+                        });
+                    return emptyPatternDetected;
                 }
             });
     });

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/0a26d40f/broker-plugins/management-http/src/main/java/resources/virtualhost/NodeAutoCreationPolicyForm.html
----------------------------------------------------------------------
diff --git 
a/broker-plugins/management-http/src/main/java/resources/virtualhost/NodeAutoCreationPolicyForm.html
 
b/broker-plugins/management-http/src/main/java/resources/virtualhost/NodeAutoCreationPolicyForm.html
index bef23eb..ed8e861 100644
--- 
a/broker-plugins/management-http/src/main/java/resources/virtualhost/NodeAutoCreationPolicyForm.html
+++ 
b/broker-plugins/management-http/src/main/java/resources/virtualhost/NodeAutoCreationPolicyForm.html
@@ -37,8 +37,9 @@
                                data-dojo-props="name: 'pattern',
                         required: true,
                         intermediateChanges: true,
-                        placeHolder: 'Name matching regular expression',
-                        title: 'Enter name matching regular expression'"/>
+                        placeHolder: 'regular expression',
+                        title: 'Policy will apply to requests for new nodes 
with names matching this pattern',
+                        promptMessage: 'Policy will apply to requests for new 
nodes with names matching this pattern'"/>
                     </div>
                     <div class="clear">
                         <label class="formLabel-labelCell 
tableContainer-labelCell" for="${id}_nodeType"
@@ -50,8 +51,8 @@
                                           placeHolder: 'Type of Node',
                                           required: true,
                                           value: 'Queue',
-                                          title: 'Type of node to create.',
-                                          promptMessage: 'Select type of node 
to create.',
+                                          title: 'Select type of node created 
by this policy',
+                                          promptMessage: 'Type of the 
automatically created node.',
                                           intermediateChanges: true">
                             <option value="Queue" 
selected="true">Queue</option>
                             <option value="Exchange">Exchange</option>
@@ -95,6 +96,10 @@
                             <legend>Attributes:</legend>
                             <div data-dojo-attach-point="attributes" 
id="${id}_attributes"
                                  
class="nodeAutoCreationPolicyAttributes"></div>
+                            <div data-dojo-type="dijit/Tooltip"
+                                 data-dojo-props="connectId: 
['${id}_attributes'],
+                              label: 'Attributes applied to the automatically 
created node'">
+                            </div>
                             <div>
                                 <button data-dojo-type="dijit/form/Button"
                                         id="${id}_addAttributeButton"


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org

Reply via email to