You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by lq...@apache.org on 2016/04/29 13:04:44 UTC

svn commit: r1741609 [17/31] - in /qpid/java/trunk: bdbstore/src/main/java/resources/js/qpid/management/virtualhost/bdb/ bdbstore/src/main/java/resources/js/qpid/management/virtualhost/bdb_ha/ bdbstore/src/main/java/resources/js/qpid/management/virtual...

Modified: qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addLogger.js
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addLogger.js?rev=1741609&r1=1741608&r2=1741609&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addLogger.js (original)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addLogger.js Fri Apr 29 11:04:40 2016
@@ -44,192 +44,234 @@ define(["dojo/_base/lang",
         "dijit/layout/ContentPane",
         "dojox/layout/TableContainer",
         "dojo/domReady!"],
-    function (lang, dom, construct, domStyle, registry, parser, memory, array, event, json, util, template)
-    {
-        var addLogger =
-        {
-            init: function()
-            {
-                var that=this;
-                this.containerNode = construct.create("div", {innerHTML: template});
-                parser.parse(this.containerNode).then(function(instances) { that._postParse(); });
-            },
-            _postParse: function()
-            {
-                var that=this;
-                this.name = registry.byId("addLogger.name");
-                this.name.set("regExpGen", util.nameOrContextVarRegexp);
-
-                this.dialog = registry.byId("addLogger");
-                this.addButton = registry.byId("addLogger.addButton");
-                this.cancelButton = registry.byId("addLogger.cancelButton");
-                this.cancelButton.on("click", function(e){that._cancel(e);});
-                this.addButton.on("click", function(e){that._add(e);});
-
-                this.typeFieldsContainer = dom.byId("addLogger.typeFields");
-                this.form = registry.byId("addLogger.form");
-                this.form.on("submit", function(){return false;});
-
-                this.loggerType = registry.byId("addLogger.type");
-                this.loggerType.on("change", function(type){that._typeChanged(type);});
-
-                this.durable = registry.byId("addLogger.durable");
-
-                this.categoryFieldsContainer = dom.byId("addLogger.categoryFields");
-                this.allFieldsContainer = dom.byId("addLogger.contentPane");
-            },
-            show: function(management, modelObj, category, actualData)
-            {
-                this.management = management;
-                this.modelObj = modelObj;
-                this.category = category;
-                this.configured = false;
-                this._destroyTypeFields(this.typeFieldsContainer);
-                this._destroyTypeFields(this.categoryFieldsContainer);
-                this.form.reset();
-                this.loggerType.set("store", util.makeTypeStoreFromMetadataByCategory(management.metadata, category));
-                this.initialData = actualData;
-                this.isNew = !actualData;
-                this.name.set("disabled", !this.isNew);
-                this.loggerType.set("disabled", !this.isNew);
-                this.durable.set("disabled", !this.isNew);
-                this.dialog.set("title",this.isNew ? "Add Logger" : "Edit Logger - " + actualData.name);
-
-                if (actualData)
-                {
-                  this._configure(actualData.type);
-                }
-
-                var brokerLoggerEditWarningNode = dom.byId("brokerLoggerEditWarning");
-                var virtualHostlLoggerEditWarningNode = dom.byId("virtualHostlLoggerEditWarning");
-                domStyle.set(brokerLoggerEditWarningNode, "display", !this.isNew && this.category == "BrokerLogger" ? "block" : "none");
-                domStyle.set(virtualHostlLoggerEditWarningNode, "display", !this.isNew && this.category == "VirtualHostLogger" ? "block" : "none");
-
-                this._loadCategoryUserInterfacesAndShowDialog(actualData);
-            },
-            hide: function()
-            {
-              this._destroyTypeFields(this.categoryFieldsContainer);
-              this._destroyTypeFields(this.typeFieldsContainer);
-              this.dialog.hide();
-            },
-            _cancel: function(e)
-            {
-                event.stop(e);
-                this.hide();
-            },
-            _add: function(e)
-            {
-                event.stop(e);
-                this._submit();
-            },
-            _submit: function()
-            {
-                if (this.form.validate())
-                {
-                    var excludedData = this.initialData || this.management.metadata.getDefaultValueForType(this.category, this.loggerType.get("value"));
-                    var formData = util.getFormWidgetValues(this.form, excludedData);
-                    var that = this;
-                    if (this.isNew)
-                    {
-                      this.management.create(this.category, this.modelObj, formData).then(function(){that.hide();});
-                    }
-                    else
-                    {
-                      this.management.update(this.modelObj, formData).then(function(){that.hide();});
-                    }
-                }
-                else
-                {
-                    alert('Form contains invalid data. Please correct first');
-                }
-            },
-            _destroyTypeFields: function(typeFieldsContainer)
-            {
-                var widgets = registry.findWidgets(typeFieldsContainer);
-                array.forEach(widgets, function(item) { item.destroyRecursive();});
-                construct.empty(typeFieldsContainer);
-            },
-            _typeChanged: function(type)
-            {
-                 this._destroyTypeFields(this.typeFieldsContainer);
-
-                 if (type)
-                 {
-                     this._configure(type);
-                     var that = this;
-                     require(["qpid/management/logger/" + this.category.toLowerCase() + "/" + type.toLowerCase() + "/add"], function(typeUI)
-                     {
-                         try
-                         {
-                             var promise = typeUI.show({ containerNode: that.typeFieldsContainer,
-                                                         data: that.initialData,
-                                                         metadata: that.management.metadata,
-                                                         category: that.category,
-                                                         type: type});
-                             if (promise)
-                             {
-                                 promise.then(
-                                    function(instances)
-                                    {
-                                       util.applyToWidgets(that.typeFieldsContainer, that.category, type, that.initialData, that.management.metadata);
-                                    });
-                             }
-                         }
-                         catch(e)
-                         {
-                             console.warn(e);
-                         }
-                     });
-                 }
-            },
-            _configure: function(type)
-            {
-                if (!this.configured)
-                {
-                    var metadata = this.management.metadata;
-                    util.applyToWidgets(this.allFieldsContainer, this.category, type, this.initialData, metadata);
-                    this.configured = true;
-                }
-            },
-            _loadCategoryUserInterfacesAndShowDialog : function(actualData)
-            {
-                var that = this;
-                var node = construct.create("div", {}, this.categoryFieldsContainer);
-                require(["qpid/management/logger/" + this.category.toLowerCase() + "/add"], function(categoryUI)
-                {
-                  try
-                  {
-                    var promise = categoryUI.show({containerNode: node, data: actualData});
-                    if (actualData)
-                    {
-                        promise.then(
-                            function(instances)
-                            {
-                                util.applyToWidgets(node, that.category, actualData.type, actualData, that.management.metadata);
-                                that.dialog.show();
-                            });
-                    }
-                    else
-                    {
-                        that.dialog.show();
-                    }
-                  }
-                  catch(e)
-                  {
-                    console.error(e);
-                  }
-                });
-            }
-        };
-
-        try
-        {
-            addLogger.init();
-        }
-        catch(e)
-        {
-            console.warn(e);
-        }
-        return addLogger;
-    });
+       function (lang, dom, construct, domStyle, registry, parser, memory, array, event, json, util, template)
+       {
+           var addLogger = {
+               init: function ()
+               {
+                   var that = this;
+                   this.containerNode = construct.create("div", {innerHTML: template});
+                   parser.parse(this.containerNode).then(function (instances)
+                                                         {
+                                                             that._postParse();
+                                                         });
+               },
+               _postParse: function ()
+               {
+                   var that = this;
+                   this.name = registry.byId("addLogger.name");
+                   this.name.set("regExpGen", util.nameOrContextVarRegexp);
+
+                   this.dialog = registry.byId("addLogger");
+                   this.addButton = registry.byId("addLogger.addButton");
+                   this.cancelButton = registry.byId("addLogger.cancelButton");
+                   this.cancelButton.on("click", function (e)
+                   {
+                       that._cancel(e);
+                   });
+                   this.addButton.on("click", function (e)
+                   {
+                       that._add(e);
+                   });
+
+                   this.typeFieldsContainer = dom.byId("addLogger.typeFields");
+                   this.form = registry.byId("addLogger.form");
+                   this.form.on("submit", function ()
+                   {
+                       return false;
+                   });
+
+                   this.loggerType = registry.byId("addLogger.type");
+                   this.loggerType.on("change", function (type)
+                   {
+                       that._typeChanged(type);
+                   });
+
+                   this.durable = registry.byId("addLogger.durable");
+
+                   this.categoryFieldsContainer = dom.byId("addLogger.categoryFields");
+                   this.allFieldsContainer = dom.byId("addLogger.contentPane");
+               },
+               show: function (management, modelObj, category, actualData)
+               {
+                   this.management = management;
+                   this.modelObj = modelObj;
+                   this.category = category;
+                   this.configured = false;
+                   this._destroyTypeFields(this.typeFieldsContainer);
+                   this._destroyTypeFields(this.categoryFieldsContainer);
+                   this.form.reset();
+                   this.loggerType.set("store",
+                                       util.makeTypeStoreFromMetadataByCategory(management.metadata, category));
+                   this.initialData = actualData;
+                   this.isNew = !actualData;
+                   this.name.set("disabled", !this.isNew);
+                   this.loggerType.set("disabled", !this.isNew);
+                   this.durable.set("disabled", !this.isNew);
+                   this.dialog.set("title", this.isNew ? "Add Logger" : "Edit Logger - " + actualData.name);
+
+                   if (actualData)
+                   {
+                       this._configure(actualData.type);
+                   }
+
+                   var brokerLoggerEditWarningNode = dom.byId("brokerLoggerEditWarning");
+                   var virtualHostlLoggerEditWarningNode = dom.byId("virtualHostlLoggerEditWarning");
+                   domStyle.set(brokerLoggerEditWarningNode,
+                                "display",
+                                !this.isNew && this.category == "BrokerLogger" ? "block" : "none");
+                   domStyle.set(virtualHostlLoggerEditWarningNode,
+                                "display",
+                                !this.isNew && this.category == "VirtualHostLogger" ? "block" : "none");
+
+                   this._loadCategoryUserInterfacesAndShowDialog(actualData);
+               },
+               hide: function ()
+               {
+                   this._destroyTypeFields(this.categoryFieldsContainer);
+                   this._destroyTypeFields(this.typeFieldsContainer);
+                   this.dialog.hide();
+               },
+               _cancel: function (e)
+               {
+                   event.stop(e);
+                   this.hide();
+               },
+               _add: function (e)
+               {
+                   event.stop(e);
+                   this._submit();
+               },
+               _submit: function ()
+               {
+                   if (this.form.validate())
+                   {
+                       var excludedData = this.initialData
+                                          || this.management.metadata.getDefaultValueForType(this.category,
+                                                                                             this.loggerType.get("value"));
+                       var formData = util.getFormWidgetValues(this.form, excludedData);
+                       var that = this;
+                       if (this.isNew)
+                       {
+                           this.management.create(this.category, this.modelObj, formData).then(function ()
+                                                                                               {
+                                                                                                   that.hide();
+                                                                                               });
+                       }
+                       else
+                       {
+                           this.management.update(this.modelObj, formData).then(function ()
+                                                                                {
+                                                                                    that.hide();
+                                                                                });
+                       }
+                   }
+                   else
+                   {
+                       alert('Form contains invalid data. Please correct first');
+                   }
+               },
+               _destroyTypeFields: function (typeFieldsContainer)
+               {
+                   var widgets = registry.findWidgets(typeFieldsContainer);
+                   array.forEach(widgets, function (item)
+                   {
+                       item.destroyRecursive();
+                   });
+                   construct.empty(typeFieldsContainer);
+               },
+               _typeChanged: function (type)
+               {
+                   this._destroyTypeFields(this.typeFieldsContainer);
+
+                   if (type)
+                   {
+                       this._configure(type);
+                       var that = this;
+                       require(["qpid/management/logger/" + this.category.toLowerCase() + "/" + type.toLowerCase()
+                                + "/add"], function (typeUI)
+                               {
+                                   try
+                                   {
+                                       var promise = typeUI.show({
+                                                                     containerNode: that.typeFieldsContainer,
+                                                                     data: that.initialData,
+                                                                     metadata: that.management.metadata,
+                                                                     category: that.category,
+                                                                     type: type
+                                                                 });
+                                       if (promise)
+                                       {
+                                           promise.then(function (instances)
+                                                        {
+                                                            util.applyToWidgets(that.typeFieldsContainer,
+                                                                                that.category,
+                                                                                type,
+                                                                                that.initialData,
+                                                                                that.management.metadata);
+                                                        });
+                                       }
+                                   }
+                                   catch (e)
+                                   {
+                                       console.warn(e);
+                                   }
+                               });
+                   }
+               },
+               _configure: function (type)
+               {
+                   if (!this.configured)
+                   {
+                       var metadata = this.management.metadata;
+                       util.applyToWidgets(this.allFieldsContainer, this.category, type, this.initialData, metadata);
+                       this.configured = true;
+                   }
+               },
+               _loadCategoryUserInterfacesAndShowDialog: function (actualData)
+               {
+                   var that = this;
+                   var node = construct.create("div", {}, this.categoryFieldsContainer);
+                   require(["qpid/management/logger/" + this.category.toLowerCase() + "/add"], function (categoryUI)
+                   {
+                       try
+                       {
+                           var promise = categoryUI.show({
+                                                             containerNode: node,
+                                                             data: actualData
+                                                         });
+                           if (actualData)
+                           {
+                               promise.then(function (instances)
+                                            {
+                                                util.applyToWidgets(node,
+                                                                    that.category,
+                                                                    actualData.type,
+                                                                    actualData,
+                                                                    that.management.metadata);
+                                                that.dialog.show();
+                                            });
+                           }
+                           else
+                           {
+                               that.dialog.show();
+                           }
+                       }
+                       catch (e)
+                       {
+                           console.error(e);
+                       }
+                   });
+               }
+           };
+
+           try
+           {
+               addLogger.init();
+           }
+           catch (e)
+           {
+               console.warn(e);
+           }
+           return addLogger;
+       });

Modified: qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPort.js
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPort.js?rev=1741609&r1=1741608&r2=1741609&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPort.js (original)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPort.js Fri Apr 29 11:04:40 2016
@@ -32,10 +32,10 @@ define(["dojo/dom",
         "dojo/_base/lang",
         "qpid/common/util",
         "dojo/text!addPort.html",
-        /* dojox/ validate resources */
+           /* dojox/ validate resources */
         "dojox/validate/us",
         "dojox/validate/web",
-        /* basic dijit classes */
+           /* basic dijit classes */
         "dijit/Dialog",
         "dijit/form/CheckBox",
         "dijit/form/Textarea",
@@ -50,537 +50,658 @@ define(["dojo/dom",
         "dijit/form/MultiSelect",
         "dijit/form/Select",
         "dijit/form/NumberSpinner",
-        /* basic dojox classes */
+           /* basic dojox classes */
         "dojox/grid/EnhancedGrid",
         "dojox/grid/enhanced/plugins/IndirectSelection",
         "qpid/common/ContextVariablesEditor",
         "dojo/domReady!"],
-    function (dom, construct, win, registry, array, event, json, Memory, ObjectStore, FilteringSelect, domStyle, lang, util, template) {
+       function (dom, construct, win, registry, array, event, json, Memory, ObjectStore, FilteringSelect, domStyle, lang, util, template)
+       {
 
-        var addPort = {};
+           var addPort = {};
 
-        var node = construct.create("div", null, win.body(), "last");
+           var node = construct.create("div", null, win.body(), "last");
 
-        node.innerHTML = template;
-        addPort.dialogNode = dom.byId("addPort")
+           node.innerHTML = template;
+           addPort.dialogNode = dom.byId("addPort")
 
-        addPort._typeChanged = function (newValue)
-        {
-            var meta =  addPort.management.metadata;
-            var typeMetaData = meta.getMetaData("Port", newValue);
-
-            //protocols
-            var protocolsMultiSelect = dom.byId("formAddPort.protocols");
-            var protocolValidValues = typeMetaData.attributes.protocols.validValues;
-            var protocolValues = meta.extractUniqueListOfValues(protocolValidValues);
-            util.setMultiSelectOptions(protocolsMultiSelect, protocolValues.sort());
-
-            //authenticationProvider
-            registry.byId("formAddPort.authenticationProvider").set("disabled", ! ("authenticationProvider" in typeMetaData.attributes));
-            dom.byId("formAddPort:fieldsAuthenticationProvider").style.display = "authenticationProvider" in typeMetaData.attributes ? "block" : "none";
-
-            //bindingAddress
-            registry.byId("formAddPort.bindingAddress").set("disabled", ! ("bindingAddress" in typeMetaData.attributes));
-            dom.byId("formAddPort:fieldsBindingAddress").style.display = "bindingAddress" in typeMetaData.attributes ? "block" : "none";
-
-            //maxOpenConnections
-            registry.byId("formAddPort.maxOpenConnections").set("disabled", ! ("maxOpenConnections" in typeMetaData.attributes));
-            dom.byId("formAddPort:maxOpenConnections").style.display = "maxOpenConnections" in typeMetaData.attributes ? "block" : "none";
-
-            //threadPoolSettings
-            var hasThreadPoolMinMaxSettings = "threadPoolMinimum" in typeMetaData.attributes;
-            dom.byId("formAddPort:threadPoolMinMaxSettings").style.display = hasThreadPoolMinMaxSettings ? "block" : "none";
-            registry.byId("formAddPort.threadPoolMinimum").set("disabled", !hasThreadPoolMinMaxSettings);
-            registry.byId("formAddPort.threadPoolMaximum").set("disabled", !hasThreadPoolMinMaxSettings);
-
-            //threadPoolSettings
-            var hasThreadPoolSizeSettings = "threadPoolSize" in typeMetaData.attributes;
-            dom.byId("formAddPort:threadPoolSizeSettings").style.display = hasThreadPoolSizeSettings ? "block" : "none";
-            registry.byId("formAddPort.threadPoolSize").set("disabled", !hasThreadPoolSizeSettings);
-
-            //transports
-            var transportsMultiSelect = dom.byId("formAddPort.transports");
-            var transportsValidValues = typeMetaData.attributes.transports.validValues;
-            var transportsValues = meta.extractUniqueListOfValues(transportsValidValues);
-            util.setMultiSelectOptions(transportsMultiSelect, transportsValues.sort());
-
-            addPort._toggleSslWidgets(newValue, transportsMultiSelect.value);
-
-            util.applyMetadataToWidgets(registry.byId("addPort").domNode, "Port", newValue, meta);
-        };
-
-        addPort._isSecure = function(currentTransport)
-        {
-          return currentTransport == "SSL" || (lang.isArray(currentTransport) && array.indexOf(currentTransport, "SSL")>=0)
-            || currentTransport == "WSS" || (lang.isArray(currentTransport) && array.indexOf(currentTransport, "WSS")>=0);
-        }
-
-        addPort._convertToPort = function(formValues)
-            {
-                var newPort = {};
-                newPort.name = dijit.byId("formAddPort.name").value;
-                var id = dojo.byId("formAddPort.id").value;
-                if (id)
-                {
-                    newPort.id = id;
-                }
-                for(var propName in formValues)
-                {
-                    if(formValues.hasOwnProperty(propName) && formValues[propName])
-                    {
-                        if (propName == "needClientAuth" || propName == "wantClientAuth")
-                        {
-                            continue;
-                        }
-                        else if (propName === "protocols")
-                        {
-                            var val = formValues[propName];
-
-                            if(val === "" || (lang.isArray(val) && val.length == 0) )
-                            {
-                                continue;
-                            }
-
-                            if (!lang.isArray(val))
-                            {
-                                val = [ val ];
-                            }
-                            newPort[ propName ] = val;
-                        }
-                        else if (propName === "transports")
-                        {
-                            var val = formValues[propName];
-
-                            if(val === "" || (lang.isArray(val) && val.length == 0) )
-                            {
-                                continue;
-                            }
-
-                            if (!lang.isArray(val))
-                            {
-                                val = [ val ];
-                            }
-                            newPort[ propName ] = val;
-                        }
-                        else if (propName === "context")
-                        {
-                            var context = this.context.get("value");
-                            if (context && (!this.initialData || !util.equals(context, this.initialData.context)))
-                            {
-                              newPort["context"] = context;
-                            }
-                        }
-                        else if(formValues[ propName ] !== "")
-                        {
-                            newPort[ propName ] = formValues[propName];
-                        }
-
-                    }
-                }
-
-                var type = dijit.byId("formAddPort.type").value;
-                if (type == "AMQP" || type == "HTTP")
-                {
-                    var transportWidget = registry.byId("formAddPort.transports");
-                    var needClientAuth = dijit.byId("formAddPort.needClientAuth");
-                    var wantClientAuth = dijit.byId("formAddPort.wantClientAuth");
-                    var trustStoreWidget = dijit.byId("formAddPort.trustStores");
-
-                    var initialTransport = transportWidget.initialValue;
-                    var currentTransport = transportWidget.value;
-                    if (addPort._isSecure(currentTransport))
-                    {
-                      newPort.needClientAuth = needClientAuth.checked;
-                      newPort.wantClientAuth = wantClientAuth.checked
-
-                      var items = trustStoreWidget.selection.getSelected();
-                      var trustStores = [];
-                      if(items.length > 0){
-                        for(var i in items)
-                        {
-                          var item = items[i];
-                          trustStores.push(trustStoreWidget.store.getValue(item, "name"));
-                        }
-                        newPort.trustStores = trustStores;
-                      }
-                      else if (trustStoreWidget.initialValue && trustStoreWidget.initialValue.length > 0)
-                      {
-                        newPort.trustStores = null;
-                      }
-
-                      var clientCertRecorder = registry.byId("formAddPort.managedCertificateStores")
-                      newPort.clientCertRecorder = clientCertRecorder.value ? clientCertRecorder.value : null;
-                    }
-                    else if (initialTransport && currentTransport != initialTransport)
-                    {
-                      newPort.needClientAuth = false;
-                      newPort.wantClientAuth = false;
-                      newPort.trustStores = null;
-                      newPort.clientCertRecorder = null;
-                    }
-                }
-
-                return newPort;
-            };
-
-        addPort._toggleSslWidgets = function(portType, transportType)
-            {
-                var clientAuthPanel = dojo.byId("formAddPort:fieldsClientAuth");
-                var transportSSLPanelNode = dom.byId("formAddPort:fieldsTransportSSL");
-                var managedCertificateStoresNode = dom.byId("formAddPort:fieldsManagedCertificateStores");
-                var managedCertificateStoreWidget = registry.byId("formAddPort.managedCertificateStores");
-                if (addPort._isSecure(transportType))
-                {
-                    var metadata =  addPort.management.metadata;
-                    var typeMetaData = metadata.getMetaData("Port", portType);
-                    var clientAuth = "needClientAuth" in typeMetaData.attributes || "wantClientAuth" in typeMetaData.attributes;
-                    clientAuthPanel.style.display = clientAuth ? "block" : "none";
-                    if (clientAuth)
-                    {
-                        registry.byId("formAddPort.needClientAuth").set("disabled", !("needClientAuth" in typeMetaData.attributes));
-                        registry.byId("formAddPort.wantClientAuth").set("disabled", !("wantClientAuth" in typeMetaData.attributes));
-                        registry.byId("formAddPort.trustStores").resize();
-                    }
-                    managedCertificateStoresNode.style.display =  "block";
-                    managedCertificateStoreWidget.set("disabled", false);
-
-                    transportSSLPanelNode.style.display = "block";
-                    registry.byId("formAddPort.keyStore").set("disabled", false);
-                }
-                else
-                {
-                    clientAuthPanel.style.display = "none";
-                    registry.byId("formAddPort.needClientAuth").set("disabled", true);
-                    registry.byId("formAddPort.wantClientAuth").set("disabled", true);
-
-                    transportSSLPanelNode.style.display = "none";
-                    registry.byId("formAddPort.keyStore").set("disabled", true);
-                    managedCertificateStoresNode.style.display =  "none";
-                    managedCertificateStoreWidget.set("disabled", true);
-                }
-
-            };
-
-        addPort._prepareForm = function(metadata)
-        {
-          this.context = dijit.byId("formAddPort.context");
-
-          //add the port types to formAddPort.type
-          var portTypeSelect = registry.byId("formAddPort.type");
-          var supportedPortTypes = metadata.getTypesForCategory("Port");
-          var portTypeSelectStore = util.makeTypeStore(supportedPortTypes);
-          portTypeSelect.set("store", portTypeSelectStore);
-
-          //add handler for transports change
-          registry.byId("formAddPort.transports").on("change", function (newValue)
-          {
-            var portType = portTypeSelect.get("value");
-            addPort._toggleSslWidgets(portType, newValue);
-          });
-
-          var that = this;
-          var theForm = registry.byId("formAddPort");
-          theForm.on("submit", function (e)
-          {
-
-            event.stop(e);
-            if (theForm.validate())
-            {
-
-              var newPort = addPort._convertToPort(theForm.getValues());
-              if ((newPort.needClientAuth || newPort.wantClientAuth) && (!newPort.hasOwnProperty("trustStores") || newPort.trustStores.length == 0))
-              {
-                alert("A trust store must be selected when requesting client certificates.");
-                return false;
-              }
-              if (registry.byId("formAddPort.name").get("disabled"))
-              {
-                // update request
-                addPort.management.update(addPort.modelObj,newPort).then(function(x){registry.byId("addPort").hide()});
-              }
-              else
-              {
-                addPort.management.create("port", addPort.modelObj, newPort).then(function(x){registry.byId("addPort").hide()});
-              }
-              return false;
-            } else
-            {
-              alert('Form contains invalid data.  Please correct first');
-              return false;
-            }
-
-          });
-        }
-
-        addPort.show = function(management, modelObj, portType, providers, keystores, truststores)
-        {
-            addPort.management = management;
-            addPort.modelObj = modelObj;
-            var metadata = management.metadata;
-            if (!this.formPrepared)
-            {
-              this._prepareForm(metadata);
-              this.formPrepared = true;
-            }
-
-            registry.byId("formAddPort").reset();
-            dojo.byId("formAddPort.id").value = "";
-
-            var nameWidget = registry.byId("formAddPort.name");
-            var typeWidget = registry.byId("formAddPort.type");
-            var portWidget = registry.byId("formAddPort.port");
-            var maxOpenConnectionsWidget = registry.byId("formAddPort.maxOpenConnections");
-            var editWarning = dojo.byId("portEditWarning");
-
-            var providerWidget = registry.byId("formAddPort.authenticationProvider");
-            if (providers)
-            {
-                var data = [];
-                for (var i=0; i< providers.length; i++)
-                {
-                    data.push( {id: providers[i].name, name: providers[i].name} );
-                }
-                var providersStore = new Memory({ data: data });
-                providerWidget.set("store", providersStore);
-                providerWidget.startup();
-            }
-
-            var keystoreWidget = registry.byId("formAddPort.keyStore");
-            if (keystores)
-            {
-                var data = [];
-                for (var i=0; i< keystores.length; i++)
-                {
-                    data.push( {id: keystores[i].name, name: keystores[i].name} );
-                }
-                var keystoresStore = new Memory({ data: data });
-                keystoreWidget.set("store", keystoresStore);
-                keystoreWidget.startup();
-            }
-
-            var managedCertificateStoreWidget = registry.byId("formAddPort.managedCertificateStores");
-            this._initClientCertRecorders(truststores);
-
-            var truststoreWidget = registry.byId("formAddPort.trustStores");
-            if (truststores)
-            {
-                var layout = [[{name: "Name", field: "name", width: "80%"},
-                               {name: "Peers only", field: "peersOnly", width: "20%",
-                                 formatter: function(val){
-                                   return "<input type='radio' disabled='disabled' "+(val?"checked='checked'": "")+" />"
-                                 }
-                             }]];
-
-                var mem = new Memory({ data: truststores, idProperty: "id"});
-                truststoreWidget.set("store", new ObjectStore({objectStore: mem}));
-                truststoreWidget.set("structure", layout);
-                truststoreWidget.rowSelectCell.toggleAllSelection(false);
-                truststoreWidget.startup();
-            }
-
-            // Editing existing port, de-register existing on change handler if set
-            if (this.typeChangeHandler)
-            {
-                this.typeChangeHandler.remove();
-            }
-
-            if (modelObj.type == "port")
-            {
-                editWarning.style.display = "block";
-
-                management.load(modelObj, { actuals: true }).then(
-                   function(data){
-                       var port = data[0];
-                       nameWidget.set("value", port.name);
-                       nameWidget.set("disabled", true);
-
-                       dom.byId("formAddPort.id").value=port.id;
-
-                       //type
-                       typeWidget.set("value", portType);
-                       typeWidget.set("disabled", true);
-                       var typeMetaData = metadata.getMetaData("Port", portType);
-
-                       //port number
-                       portWidget.set("value", port.port);
-                       portWidget.set("regExpGen", util.numericOrContextVarRegexp);
-
-                       //protocols
-                       var protocolsMultiSelect = dom.byId("formAddPort.protocols");
-                       var protocolValidValues = typeMetaData.attributes.protocols.validValues;
-                       var protocolValues = metadata.extractUniqueListOfValues(protocolValidValues);
-                       util.setMultiSelectOptions(protocolsMultiSelect, protocolValues.sort());
-
-                       var protocolsMultiSelectWidget = registry.byId("formAddPort.protocols");
-                       protocolsMultiSelectWidget.set("value", port.protocols);
-
-                       //authenticationProvider
-                       providerWidget.set("value", port.authenticationProvider ? port.authenticationProvider : "");
-                       providerWidget.set("disabled", ! ("authenticationProvider" in typeMetaData.attributes));
-                       dom.byId("formAddPort:fieldsAuthenticationProvider").style.display = "authenticationProvider" in typeMetaData.attributes ? "block" : "none";
-
-                       //transports
-                       var transportsMultiSelect = dom.byId("formAddPort.transports");
-                       var transportsValidValues = typeMetaData.attributes.transports.validValues;
-                       var transportsValues = metadata.extractUniqueListOfValues(transportsValidValues);
-                       util.setMultiSelectOptions(transportsMultiSelect, transportsValues.sort());
-                       var transportWidget = registry.byId("formAddPort.transports");
-                       transportWidget.set("value", port.transports);
-
-                       //binding address
-                       var bindAddressWidget = registry.byId("formAddPort.bindingAddress");
-                       bindAddressWidget.set("value", port.bindingAddress ? port.bindingAddress : "");
-                       bindAddressWidget.set("disabled", ! ("bindingAddress" in typeMetaData.attributes));
-                       dom.byId("formAddPort:fieldsBindingAddress").style.display = "bindingAddress" in typeMetaData.attributes ? "block" : "none";
-
-                       //maxOpenConnections
-                       var maxOpenConnectionsWidget = registry.byId("formAddPort.maxOpenConnections");
-                       maxOpenConnectionsWidget.set("regExpGen", util.signedOrContextVarRegexp);
-                       maxOpenConnectionsWidget.set("value", port.maxOpenConnections ? port.maxOpenConnections : "");
-                       maxOpenConnectionsWidget.set("disabled", ! ("maxOpenConnections" in typeMetaData.attributes));
-                       dom.byId("formAddPort:maxOpenConnections").style.display = "maxOpenConnections" in typeMetaData.attributes ? "block" : "none";
-
-                       //ssl
-                       keystoreWidget.set("value", port.keyStore ? port.keyStore : "");
-                       if (port.trustStores)
-                       {
-                         var items = truststoreWidget.store.objectStore.data;
-                         for (var j=0; j< items.length; j++)
-                         {
-                           var selected = false;
-                           for (var i=0; i< port.trustStores.length; i++)
+           addPort._typeChanged = function (newValue)
+           {
+               var meta = addPort.management.metadata;
+               var typeMetaData = meta.getMetaData("Port", newValue);
+
+               //protocols
+               var protocolsMultiSelect = dom.byId("formAddPort.protocols");
+               var protocolValidValues = typeMetaData.attributes.protocols.validValues;
+               var protocolValues = meta.extractUniqueListOfValues(protocolValidValues);
+               util.setMultiSelectOptions(protocolsMultiSelect, protocolValues.sort());
+
+               //authenticationProvider
+               registry.byId("formAddPort.authenticationProvider")
+                       .set("disabled", !("authenticationProvider" in typeMetaData.attributes));
+               dom.byId("formAddPort:fieldsAuthenticationProvider").style.display =
+                   "authenticationProvider" in typeMetaData.attributes ? "block" : "none";
+
+               //bindingAddress
+               registry.byId("formAddPort.bindingAddress")
+                       .set("disabled", !("bindingAddress" in typeMetaData.attributes));
+               dom.byId("formAddPort:fieldsBindingAddress").style.display =
+                   "bindingAddress" in typeMetaData.attributes ? "block" : "none";
+
+               //maxOpenConnections
+               registry.byId("formAddPort.maxOpenConnections")
+                       .set("disabled", !("maxOpenConnections" in typeMetaData.attributes));
+               dom.byId("formAddPort:maxOpenConnections").style.display =
+                   "maxOpenConnections" in typeMetaData.attributes ? "block" : "none";
+
+               //threadPoolSettings
+               var hasThreadPoolMinMaxSettings = "threadPoolMinimum" in typeMetaData.attributes;
+               dom.byId("formAddPort:threadPoolMinMaxSettings").style.display =
+                   hasThreadPoolMinMaxSettings ? "block" : "none";
+               registry.byId("formAddPort.threadPoolMinimum").set("disabled", !hasThreadPoolMinMaxSettings);
+               registry.byId("formAddPort.threadPoolMaximum").set("disabled", !hasThreadPoolMinMaxSettings);
+
+               //threadPoolSettings
+               var hasThreadPoolSizeSettings = "threadPoolSize" in typeMetaData.attributes;
+               dom.byId("formAddPort:threadPoolSizeSettings").style.display =
+                   hasThreadPoolSizeSettings ? "block" : "none";
+               registry.byId("formAddPort.threadPoolSize").set("disabled", !hasThreadPoolSizeSettings);
+
+               //transports
+               var transportsMultiSelect = dom.byId("formAddPort.transports");
+               var transportsValidValues = typeMetaData.attributes.transports.validValues;
+               var transportsValues = meta.extractUniqueListOfValues(transportsValidValues);
+               util.setMultiSelectOptions(transportsMultiSelect, transportsValues.sort());
+
+               addPort._toggleSslWidgets(newValue, transportsMultiSelect.value);
+
+               util.applyMetadataToWidgets(registry.byId("addPort").domNode, "Port", newValue, meta);
+           };
+
+           addPort._isSecure = function (currentTransport)
+           {
+               return currentTransport == "SSL" || (lang.isArray(currentTransport) && array.indexOf(currentTransport,
+                                                                                                    "SSL") >= 0)
+                      || currentTransport == "WSS" || (lang.isArray(currentTransport) && array.indexOf(currentTransport,
+                                                                                                       "WSS") >= 0);
+           }
+
+           addPort._convertToPort = function (formValues)
+           {
+               var newPort = {};
+               newPort.name = dijit.byId("formAddPort.name").value;
+               var id = dojo.byId("formAddPort.id").value;
+               if (id)
+               {
+                   newPort.id = id;
+               }
+               for (var propName in formValues)
+               {
+                   if (formValues.hasOwnProperty(propName) && formValues[propName])
+                   {
+                       if (propName == "needClientAuth" || propName == "wantClientAuth")
+                       {
+                           continue;
+                       }
+                       else if (propName === "protocols")
+                       {
+                           var val = formValues[propName];
+
+                           if (val === "" || (lang.isArray(val) && val.length == 0))
                            {
-                             var trustStore = port.trustStores[i];
-                             if (items[j].name == trustStore)
-                             {
-                               selected = true;
-                               break;
-                             }
+                               continue;
                            }
-                           truststoreWidget.selection.setSelected(j,selected);
-                         }
+
+                           if (!lang.isArray(val))
+                           {
+                               val = [val];
+                           }
+                           newPort[propName] = val;
                        }
+                       else if (propName === "transports")
+                       {
+                           var val = formValues[propName];
 
-                       // want/need client auth
-                       registry.byId("formAddPort.needClientAuth").set("checked", port.needClientAuth);
-                       registry.byId("formAddPort.wantClientAuth").set("checked", port.wantClientAuth);
-
-                       //threadPoolMinMaxSettings
-                       var hasThreadPoolMinMaxSettings = "threadPoolMinimum" in typeMetaData.attributes;
-                       function initThreadPoolSettingWidget(name, disabled)
-                       {
-                           var widget = registry.byId("formAddPort." + name);
-                           widget.set("regExpGen", util.signedOrContextVarRegexp);
-                           widget.set("value",  port[name] ? port[name] : "");
-                           widget.set("disabled", disabled);
-                       }
-                       initThreadPoolSettingWidget("threadPoolMaximum", !hasThreadPoolMinMaxSettings);
-                       initThreadPoolSettingWidget("threadPoolMinimum", !hasThreadPoolMinMaxSettings);
-                       dom.byId("formAddPort:threadPoolMinMaxSettings").style.display = hasThreadPoolMinMaxSettings ? "block" : "none";
-
-                       //threadPoolSizeSettings
-                       var hasThreadPoolSizeSettings = "threadPoolSize" in typeMetaData.attributes;
-                       initThreadPoolSettingWidget("threadPoolSize", !hasThreadPoolSizeSettings);
-                       dom.byId("formAddPort:threadPoolSizeSettings").style.display = hasThreadPoolSizeSettings ? "block" : "none";
-
-                       keystoreWidget.initialValue = port.keyStore;
-                       truststoreWidget.initialValue = port.trustStores;
-                       transportWidget.initialValue = transportWidget.value;
-                       providerWidget.initialValue = providerWidget.value;
-                       maxOpenConnectionsWidget.initialValue = maxOpenConnectionsWidget.value;
-
-                       managedCertificateStoreWidget.set("value", port.clientCertRecorder);
-                       managedCertificateStoreWidget.initialValue = port.clientCertRecorder;
-
-                       util.applyMetadataToWidgets(registry.byId("addPort").domNode, "Port", portType, management.metadata);
-
-                       addPort._initContextEditorAndShowDialog(port);
-
-                   }, util.xhrErrorHandler);
-            }
-            else
-            {
-                // Adding new port, register the on change handler
-                this.typeChangeHandler = typeWidget.on("change", addPort._typeChanged);
-
-                if (typeWidget.get("disabled"))
-                {
-                  typeWidget.set("disabled", false);
-                }
-                typeWidget.set("value", portType);
-
-                nameWidget.set("disabled", false);
-                nameWidget.set("regExpGen", util.nameOrContextVarRegexp);
-                portWidget.set("regExpGen", util.numericOrContextVarRegexp);
-                maxOpenConnectionsWidget.set("regExpGen", util.signedOrContextVarRegexp);
-
-                editWarning.style.display = "none";
-                util.applyMetadataToWidgets(registry.byId("addPort").domNode, "Port", portType, management.metadata);
-
-                managedCertificateStoreWidget.set("value", undefined);
-                managedCertificateStoreWidget.initialValue = undefined;
-
-                this._initContextEditorAndShowDialog();
-            }
-        };
-
-        addPort._initContextEditorAndShowDialog = function(actualData)
-        {
-           this.initialData = actualData;
-           if (actualData)
+                           if (val === "" || (lang.isArray(val) && val.length == 0))
+                           {
+                               continue;
+                           }
+
+                           if (!lang.isArray(val))
+                           {
+                               val = [val];
+                           }
+                           newPort[propName] = val;
+                       }
+                       else if (propName === "context")
+                       {
+                           var context = this.context.get("value");
+                           if (context && (!this.initialData || !util.equals(context, this.initialData.context)))
+                           {
+                               newPort["context"] = context;
+                           }
+                       }
+                       else if (formValues[propName] !== "")
+                       {
+                           newPort[propName] = formValues[propName];
+                       }
+
+                   }
+               }
+
+               var type = dijit.byId("formAddPort.type").value;
+               if (type == "AMQP" || type == "HTTP")
+               {
+                   var transportWidget = registry.byId("formAddPort.transports");
+                   var needClientAuth = dijit.byId("formAddPort.needClientAuth");
+                   var wantClientAuth = dijit.byId("formAddPort.wantClientAuth");
+                   var trustStoreWidget = dijit.byId("formAddPort.trustStores");
+
+                   var initialTransport = transportWidget.initialValue;
+                   var currentTransport = transportWidget.value;
+                   if (addPort._isSecure(currentTransport))
+                   {
+                       newPort.needClientAuth = needClientAuth.checked;
+                       newPort.wantClientAuth = wantClientAuth.checked
+
+                       var items = trustStoreWidget.selection.getSelected();
+                       var trustStores = [];
+                       if (items.length > 0)
+                       {
+                           for (var i in items)
+                           {
+                               var item = items[i];
+                               trustStores.push(trustStoreWidget.store.getValue(item, "name"));
+                           }
+                           newPort.trustStores = trustStores;
+                       }
+                       else if (trustStoreWidget.initialValue && trustStoreWidget.initialValue.length > 0)
+                       {
+                           newPort.trustStores = null;
+                       }
+
+                       var clientCertRecorder = registry.byId("formAddPort.managedCertificateStores")
+                       newPort.clientCertRecorder = clientCertRecorder.value ? clientCertRecorder.value : null;
+                   }
+                   else if (initialTransport && currentTransport != initialTransport)
+                   {
+                       newPort.needClientAuth = false;
+                       newPort.wantClientAuth = false;
+                       newPort.trustStores = null;
+                       newPort.clientCertRecorder = null;
+                   }
+               }
+
+               return newPort;
+           };
+
+           addPort._toggleSslWidgets = function (portType, transportType)
            {
-               var modelObj = this.modelObj;
-               this.management.load(modelObj ).then( function(effectiveData)
-                                                                     {
-                                                                       util.setContextData(addPort.context,
-                                                                                           addPort.management,
-                                                                                           modelObj,
-                                                                                           actualData,
-                                                                                           effectiveData[0],
-                                                                                           addPort._showDialog);
-                                                                     });
-           }
-           else
+               var clientAuthPanel = dojo.byId("formAddPort:fieldsClientAuth");
+               var transportSSLPanelNode = dom.byId("formAddPort:fieldsTransportSSL");
+               var managedCertificateStoresNode = dom.byId("formAddPort:fieldsManagedCertificateStores");
+               var managedCertificateStoreWidget = registry.byId("formAddPort.managedCertificateStores");
+               if (addPort._isSecure(transportType))
+               {
+                   var metadata = addPort.management.metadata;
+                   var typeMetaData = metadata.getMetaData("Port", portType);
+                   var clientAuth = "needClientAuth" in typeMetaData.attributes || "wantClientAuth"
+                                                                                   in typeMetaData.attributes;
+                   clientAuthPanel.style.display = clientAuth ? "block" : "none";
+                   if (clientAuth)
+                   {
+                       registry.byId("formAddPort.needClientAuth")
+                               .set("disabled", !("needClientAuth" in typeMetaData.attributes));
+                       registry.byId("formAddPort.wantClientAuth")
+                               .set("disabled", !("wantClientAuth" in typeMetaData.attributes));
+                       registry.byId("formAddPort.trustStores").resize();
+                   }
+                   managedCertificateStoresNode.style.display = "block";
+                   managedCertificateStoreWidget.set("disabled", false);
+
+                   transportSSLPanelNode.style.display = "block";
+                   registry.byId("formAddPort.keyStore").set("disabled", false);
+               }
+               else
+               {
+                   clientAuthPanel.style.display = "none";
+                   registry.byId("formAddPort.needClientAuth").set("disabled", true);
+                   registry.byId("formAddPort.wantClientAuth").set("disabled", true);
+
+                   transportSSLPanelNode.style.display = "none";
+                   registry.byId("formAddPort.keyStore").set("disabled", true);
+                   managedCertificateStoresNode.style.display = "none";
+                   managedCertificateStoreWidget.set("disabled", true);
+               }
+
+           };
+
+           addPort._prepareForm = function (metadata)
            {
-               util.setToBrokerEffectiveContext(addPort.context, addPort.management, addPort._showDialog);
+               this.context = dijit.byId("formAddPort.context");
+
+               //add the port types to formAddPort.type
+               var portTypeSelect = registry.byId("formAddPort.type");
+               var supportedPortTypes = metadata.getTypesForCategory("Port");
+               var portTypeSelectStore = util.makeTypeStore(supportedPortTypes);
+               portTypeSelect.set("store", portTypeSelectStore);
+
+               //add handler for transports change
+               registry.byId("formAddPort.transports").on("change", function (newValue)
+               {
+                   var portType = portTypeSelect.get("value");
+                   addPort._toggleSslWidgets(portType, newValue);
+               });
+
+               var that = this;
+               var theForm = registry.byId("formAddPort");
+               theForm.on("submit", function (e)
+               {
+
+                   event.stop(e);
+                   if (theForm.validate())
+                   {
+
+                       var newPort = addPort._convertToPort(theForm.getValues());
+                       if ((newPort.needClientAuth || newPort.wantClientAuth) && (!newPort.hasOwnProperty("trustStores")
+                                                                                  || newPort.trustStores.length == 0))
+                       {
+                           alert("A trust store must be selected when requesting client certificates.");
+                           return false;
+                       }
+                       if (registry.byId("formAddPort.name").get("disabled"))
+                       {
+                           // update request
+                           addPort.management.update(addPort.modelObj, newPort).then(function (x)
+                                                                                     {
+                                                                                         registry.byId("addPort").hide()
+                                                                                     });
+                       }
+                       else
+                       {
+                           addPort.management.create("port", addPort.modelObj, newPort).then(function (x)
+                                                                                             {
+                                                                                                 registry.byId("addPort")
+                                                                                                         .hide()
+                                                                                             });
+                       }
+                       return false;
+                   }
+                   else
+                   {
+                       alert('Form contains invalid data.  Please correct first');
+                       return false;
+                   }
+
+               });
            }
-        };
 
-        addPort._showDialog = function()
-        {
-            var dialog = registry.byId("addPort");
-            dialog.show();
-        };
-
-        addPort._getManagedPeerCertificateTrustStore = function(truststores)
-        {
-            var managedPeerCertificateTrustStore = [];
-            if (truststores)
-            {
-                for(var i=0;i<truststores.length;i++)
-                {
-                    if (truststores[i].type == "ManagedCertificateStore")
-                    {
-                        managedPeerCertificateTrustStore.push(truststores[i]);
-                    }
-                }
-            }
-            return managedPeerCertificateTrustStore;
-        };
-
-        addPort._initClientCertRecorders = function(truststores)
-        {
-            var managedPeerCertificateTrustStores =  this._getManagedPeerCertificateTrustStore(truststores);
-            var data = [{id:undefined, name: "None"}];
-            for(var i=0;i<managedPeerCertificateTrustStores.length;i++)
-            {
-                data.push({id:managedPeerCertificateTrustStores[i].name, name: managedPeerCertificateTrustStores[i].name});
-            }
-            var store = new Memory({ data: data, idProperty: "id"});
-            var managedCertificateStoresWidget = registry.byId("formAddPort.managedCertificateStores");
-            managedCertificateStoresWidget.set("store", store);
-            managedCertificateStoresWidget.startup();
-        };
+           addPort.show = function (management, modelObj, portType, providers, keystores, truststores)
+           {
+               addPort.management = management;
+               addPort.modelObj = modelObj;
+               var metadata = management.metadata;
+               if (!this.formPrepared)
+               {
+                   this._prepareForm(metadata);
+                   this.formPrepared = true;
+               }
+
+               registry.byId("formAddPort").reset();
+               dojo.byId("formAddPort.id").value = "";
+
+               var nameWidget = registry.byId("formAddPort.name");
+               var typeWidget = registry.byId("formAddPort.type");
+               var portWidget = registry.byId("formAddPort.port");
+               var maxOpenConnectionsWidget = registry.byId("formAddPort.maxOpenConnections");
+               var editWarning = dojo.byId("portEditWarning");
+
+               var providerWidget = registry.byId("formAddPort.authenticationProvider");
+               if (providers)
+               {
+                   var data = [];
+                   for (var i = 0; i < providers.length; i++)
+                   {
+                       data.push({
+                                     id: providers[i].name,
+                                     name: providers[i].name
+                                 });
+                   }
+                   var providersStore = new Memory({data: data});
+                   providerWidget.set("store", providersStore);
+                   providerWidget.startup();
+               }
+
+               var keystoreWidget = registry.byId("formAddPort.keyStore");
+               if (keystores)
+               {
+                   var data = [];
+                   for (var i = 0; i < keystores.length; i++)
+                   {
+                       data.push({
+                                     id: keystores[i].name,
+                                     name: keystores[i].name
+                                 });
+                   }
+                   var keystoresStore = new Memory({data: data});
+                   keystoreWidget.set("store", keystoresStore);
+                   keystoreWidget.startup();
+               }
+
+               var managedCertificateStoreWidget = registry.byId("formAddPort.managedCertificateStores");
+               this._initClientCertRecorders(truststores);
+
+               var truststoreWidget = registry.byId("formAddPort.trustStores");
+               if (truststores)
+               {
+                   var layout = [[{
+                       name: "Name",
+                       field: "name",
+                       width: "80%"
+                   }, {
+                       name: "Peers only",
+                       field: "peersOnly",
+                       width: "20%",
+                       formatter: function (val)
+                       {
+                           return "<input type='radio' disabled='disabled' " + (val ? "checked='checked'" : "") + " />"
+                       }
+                   }]];
+
+                   var mem = new Memory({
+                       data: truststores,
+                       idProperty: "id"
+                   });
+                   truststoreWidget.set("store", new ObjectStore({objectStore: mem}));
+                   truststoreWidget.set("structure", layout);
+                   truststoreWidget.rowSelectCell.toggleAllSelection(false);
+                   truststoreWidget.startup();
+               }
+
+               // Editing existing port, de-register existing on change handler if set
+               if (this.typeChangeHandler)
+               {
+                   this.typeChangeHandler.remove();
+               }
+
+               if (modelObj.type == "port")
+               {
+                   editWarning.style.display = "block";
+
+                   management.load(modelObj, {actuals: true}).then(function (data)
+                                                                   {
+                                                                       var port = data[0];
+                                                                       nameWidget.set("value", port.name);
+                                                                       nameWidget.set("disabled", true);
+
+                                                                       dom.byId("formAddPort.id").value = port.id;
+
+                                                                       //type
+                                                                       typeWidget.set("value", portType);
+                                                                       typeWidget.set("disabled", true);
+                                                                       var typeMetaData = metadata.getMetaData("Port",
+                                                                                                               portType);
+
+                                                                       //port number
+                                                                       portWidget.set("value", port.port);
+                                                                       portWidget.set("regExpGen",
+                                                                                      util.numericOrContextVarRegexp);
+
+                                                                       //protocols
+                                                                       var protocolsMultiSelect = dom.byId(
+                                                                           "formAddPort.protocols");
+                                                                       var protocolValidValues = typeMetaData.attributes.protocols.validValues;
+                                                                       var protocolValues = metadata.extractUniqueListOfValues(
+                                                                           protocolValidValues);
+                                                                       util.setMultiSelectOptions(protocolsMultiSelect,
+                                                                                                  protocolValues.sort());
+
+                                                                       var protocolsMultiSelectWidget = registry.byId(
+                                                                           "formAddPort.protocols");
+                                                                       protocolsMultiSelectWidget.set("value",
+                                                                                                      port.protocols);
+
+                                                                       //authenticationProvider
+                                                                       providerWidget.set("value",
+                                                                                          port.authenticationProvider
+                                                                                              ? port.authenticationProvider
+                                                                                              : "");
+                                                                       providerWidget.set("disabled",
+                                                                                          !("authenticationProvider"
+                                                                                            in typeMetaData.attributes));
+                                                                       dom.byId(
+                                                                           "formAddPort:fieldsAuthenticationProvider").style.display =
+                                                                           "authenticationProvider"
+                                                                           in typeMetaData.attributes
+                                                                               ? "block"
+                                                                               : "none";
+
+                                                                       //transports
+                                                                       var transportsMultiSelect = dom.byId(
+                                                                           "formAddPort.transports");
+                                                                       var transportsValidValues = typeMetaData.attributes.transports.validValues;
+                                                                       var transportsValues = metadata.extractUniqueListOfValues(
+                                                                           transportsValidValues);
+                                                                       util.setMultiSelectOptions(transportsMultiSelect,
+                                                                                                  transportsValues.sort());
+                                                                       var transportWidget = registry.byId(
+                                                                           "formAddPort.transports");
+                                                                       transportWidget.set("value", port.transports);
+
+                                                                       //binding address
+                                                                       var bindAddressWidget = registry.byId(
+                                                                           "formAddPort.bindingAddress");
+                                                                       bindAddressWidget.set("value",
+                                                                                             port.bindingAddress
+                                                                                                 ? port.bindingAddress
+                                                                                                 : "");
+                                                                       bindAddressWidget.set("disabled",
+                                                                                             !("bindingAddress"
+                                                                                               in typeMetaData.attributes));
+                                                                       dom.byId("formAddPort:fieldsBindingAddress").style.display =
+                                                                           "bindingAddress" in typeMetaData.attributes
+                                                                               ? "block"
+                                                                               : "none";
+
+                                                                       //maxOpenConnections
+                                                                       var maxOpenConnectionsWidget = registry.byId(
+                                                                           "formAddPort.maxOpenConnections");
+                                                                       maxOpenConnectionsWidget.set("regExpGen",
+                                                                                                    util.signedOrContextVarRegexp);
+                                                                       maxOpenConnectionsWidget.set("value",
+                                                                                                    port.maxOpenConnections
+                                                                                                        ? port.maxOpenConnections
+                                                                                                        : "");
+                                                                       maxOpenConnectionsWidget.set("disabled",
+                                                                                                    !("maxOpenConnections"
+                                                                                                      in typeMetaData.attributes));
+                                                                       dom.byId("formAddPort:maxOpenConnections").style.display =
+                                                                           "maxOpenConnections"
+                                                                           in typeMetaData.attributes
+                                                                               ? "block"
+                                                                               : "none";
+
+                                                                       //ssl
+                                                                       keystoreWidget.set("value",
+                                                                                          port.keyStore
+                                                                                              ? port.keyStore
+                                                                                              : "");
+                                                                       if (port.trustStores)
+                                                                       {
+                                                                           var items = truststoreWidget.store.objectStore.data;
+                                                                           for (var j = 0; j < items.length; j++)
+                                                                           {
+                                                                               var selected = false;
+                                                                               for (var i = 0;
+                                                                                    i < port.trustStores.length;
+                                                                                    i++)
+                                                                               {
+                                                                                   var trustStore = port.trustStores[i];
+                                                                                   if (items[j].name == trustStore)
+                                                                                   {
+                                                                                       selected = true;
+                                                                                       break;
+                                                                                   }
+                                                                               }
+                                                                               truststoreWidget.selection.setSelected(j,
+                                                                                                                      selected);
+                                                                           }
+                                                                       }
+
+                                                                       // want/need client auth
+                                                                       registry.byId("formAddPort.needClientAuth")
+                                                                               .set("checked", port.needClientAuth);
+                                                                       registry.byId("formAddPort.wantClientAuth")
+                                                                               .set("checked", port.wantClientAuth);
+
+                                                                       //threadPoolMinMaxSettings
+                                                                       var hasThreadPoolMinMaxSettings = "threadPoolMinimum"
+                                                                                                         in typeMetaData.attributes;
+
+                                                                       function initThreadPoolSettingWidget(name, disabled)
+                                                                       {
+                                                                           var widget = registry.byId("formAddPort."
+                                                                                                      + name);
+                                                                           widget.set("regExpGen",
+                                                                                      util.signedOrContextVarRegexp);
+                                                                           widget.set("value",
+                                                                                      port[name] ? port[name] : "");
+                                                                           widget.set("disabled", disabled);
+                                                                       }
+
+                                                                       initThreadPoolSettingWidget("threadPoolMaximum",
+                                                                                                   !hasThreadPoolMinMaxSettings);
+                                                                       initThreadPoolSettingWidget("threadPoolMinimum",
+                                                                                                   !hasThreadPoolMinMaxSettings);
+                                                                       dom.byId("formAddPort:threadPoolMinMaxSettings").style.display =
+                                                                           hasThreadPoolMinMaxSettings
+                                                                               ? "block"
+                                                                               : "none";
+
+                                                                       //threadPoolSizeSettings
+                                                                       var hasThreadPoolSizeSettings = "threadPoolSize"
+                                                                                                       in typeMetaData.attributes;
+                                                                       initThreadPoolSettingWidget("threadPoolSize",
+                                                                                                   !hasThreadPoolSizeSettings);
+                                                                       dom.byId("formAddPort:threadPoolSizeSettings").style.display =
+                                                                           hasThreadPoolSizeSettings ? "block" : "none";
+
+                                                                       keystoreWidget.initialValue = port.keyStore;
+                                                                       truststoreWidget.initialValue = port.trustStores;
+                                                                       transportWidget.initialValue =
+                                                                           transportWidget.value;
+                                                                       providerWidget.initialValue =
+                                                                           providerWidget.value;
+                                                                       maxOpenConnectionsWidget.initialValue =
+                                                                           maxOpenConnectionsWidget.value;
+
+                                                                       managedCertificateStoreWidget.set("value",
+                                                                                                         port.clientCertRecorder);
+                                                                       managedCertificateStoreWidget.initialValue =
+                                                                           port.clientCertRecorder;
+
+                                                                       util.applyMetadataToWidgets(registry.byId(
+                                                                           "addPort").domNode,
+                                                                                                   "Port",
+                                                                                                   portType,
+                                                                                                   management.metadata);
+
+                                                                       addPort._initContextEditorAndShowDialog(port);
+
+                                                                   }, util.xhrErrorHandler);
+               }
+               else
+               {
+                   // Adding new port, register the on change handler
+                   this.typeChangeHandler = typeWidget.on("change", addPort._typeChanged);
+
+                   if (typeWidget.get("disabled"))
+                   {
+                       typeWidget.set("disabled", false);
+                   }
+                   typeWidget.set("value", portType);
+
+                   nameWidget.set("disabled", false);
+                   nameWidget.set("regExpGen", util.nameOrContextVarRegexp);
+                   portWidget.set("regExpGen", util.numericOrContextVarRegexp);
+                   maxOpenConnectionsWidget.set("regExpGen", util.signedOrContextVarRegexp);
+
+                   editWarning.style.display = "none";
+                   util.applyMetadataToWidgets(registry.byId("addPort").domNode, "Port", portType, management.metadata);
+
+                   managedCertificateStoreWidget.set("value", undefined);
+                   managedCertificateStoreWidget.initialValue = undefined;
+
+                   this._initContextEditorAndShowDialog();
+               }
+           };
+
+           addPort._initContextEditorAndShowDialog = function (actualData)
+           {
+               this.initialData = actualData;
+               if (actualData)
+               {
+                   var modelObj = this.modelObj;
+                   this.management.load(modelObj).then(function (effectiveData)
+                                                       {
+                                                           util.setContextData(addPort.context,
+                                                                               addPort.management,
+                                                                               modelObj,
+                                                                               actualData,
+                                                                               effectiveData[0],
+                                                                               addPort._showDialog);
+                                                       });
+               }
+               else
+               {
+                   util.setToBrokerEffectiveContext(addPort.context, addPort.management, addPort._showDialog);
+               }
+           };
+
+           addPort._showDialog = function ()
+           {
+               var dialog = registry.byId("addPort");
+               dialog.show();
+           };
+
+           addPort._getManagedPeerCertificateTrustStore = function (truststores)
+           {
+               var managedPeerCertificateTrustStore = [];
+               if (truststores)
+               {
+                   for (var i = 0; i < truststores.length; i++)
+                   {
+                       if (truststores[i].type == "ManagedCertificateStore")
+                       {
+                           managedPeerCertificateTrustStore.push(truststores[i]);
+                       }
+                   }
+               }
+               return managedPeerCertificateTrustStore;
+           };
+
+           addPort._initClientCertRecorders = function (truststores)
+           {
+               var managedPeerCertificateTrustStores = this._getManagedPeerCertificateTrustStore(truststores);
+               var data = [{
+                   id: undefined,
+                   name: "None"
+               }];
+               for (var i = 0; i < managedPeerCertificateTrustStores.length; i++)
+               {
+                   data.push({
+                                 id: managedPeerCertificateTrustStores[i].name,
+                                 name: managedPeerCertificateTrustStores[i].name
+                             });
+               }
+               var store = new Memory({
+                   data: data,
+                   idProperty: "id"
+               });
+               var managedCertificateStoresWidget = registry.byId("formAddPort.managedCertificateStores");
+               managedCertificateStoresWidget.set("store", store);
+               managedCertificateStoresWidget.startup();
+           };
 
-        return addPort;
-    });
+           return addPort;
+       });



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