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=1741993&r1=1741992&r2=1741993&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 Mon May 2 15:57:52 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,658 +50,626 @@ 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 node = construct.create("div", null, win.body(), "last"); + + 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++) + { + 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(); + }; - var addPort = {}; - - var node = construct.create("div", null, win.body(), "last"); - - 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++) - { - 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; + });
Modified: qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPreferencesProvider.js URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPreferencesProvider.js?rev=1741993&r1=1741992&r2=1741993&view=diff ============================================================================== --- qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPreferencesProvider.js (original) +++ qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPreferencesProvider.js Mon May 2 15:57:52 2016 @@ -31,98 +31,95 @@ define(["dojo/_base/event", "dijit/Dialog", "dijit/form/Button", "dojo/domReady!"], - function (event, construct, parser, registry, PreferencesProviderForm, util, template, entities) - { + function (event, construct, parser, registry, PreferencesProviderForm, util, template, entities) + { - var addPreferencesProvider = { - 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.preferencesProviderForm = registry.byId("addPreferencesProvider.preferencesProvider"); - this.dialog = registry.byId("addPreferencesProvider"); + var addPreferencesProvider = { + 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.preferencesProviderForm = registry.byId("addPreferencesProvider.preferencesProvider"); + this.dialog = registry.byId("addPreferencesProvider"); - var cancelButton = registry.byId("addPreferencesProvider.cancelButton"); - cancelButton.on("click", function () - { - that.dialog.hide(); - }); + var cancelButton = registry.byId("addPreferencesProvider.cancelButton"); + cancelButton.on("click", function () + { + that.dialog.hide(); + }); - var saveButton = registry.byId("addPreferencesProvider.saveButton"); - saveButton.on("click", function () - { - var result = that.preferencesProviderForm.submit(function (preferencesProviderData) - { - if (that.preferencesProviderForm.data) - { - // update request - that.management.update(that.modelObj, - preferencesProviderData) - .then(function () - { - that.dialog.hide(); - }); - } - else - { - that.management.create( - "preferencesprovider", - that.modelObj, - preferencesProviderData) - .then(function () - { - that.dialog.hide(); - }); - } - }); - }); - }, - show: function (management, modelObj) - { - this.management = management; - this.modelObj = modelObj; - this.preferencesProviderForm.setMetadata(management.metadata) - this.authenticationProviderName = - modelObj.type == "authenticationprovider" ? modelObj.name : modelObj.parent.name; - this.dialog.set("title", - modelObj.type == "preferencesprovider" ? "Edit preferences provider '" - + entities.encode(String(modelObj.name)) - + "' for '" + entities.encode(String( - modelObj.parent.name)) + "'" : "Add preferences provider " + " for '" - + entities.encode(String(modelObj.name))); - if (modelObj.type == "preferencesprovider") - { - var that = this; - management.load(modelObj, {actuals: true}).then(function (data) - { - that.preferencesProviderForm.setData(data[0]); - that.dialog.show(); - }, util.xhrErrorHandler); - } - else - { - this.preferencesProviderForm.reset(); - this.dialog.show(); - } - } - }; + var saveButton = registry.byId("addPreferencesProvider.saveButton"); + saveButton.on("click", function () + { + var result = that.preferencesProviderForm.submit(function (preferencesProviderData) + { + if (that.preferencesProviderForm.data) + { + // update request + that.management.update(that.modelObj, preferencesProviderData) + .then(function () + { + that.dialog.hide(); + }); + } + else + { + that.management.create("preferencesprovider", that.modelObj, preferencesProviderData) + .then(function () + { + that.dialog.hide(); + }); + } + }); + }); + }, + show: function (management, modelObj) + { + this.management = management; + this.modelObj = modelObj; + this.preferencesProviderForm.setMetadata(management.metadata) + this.authenticationProviderName = + modelObj.type == "authenticationprovider" ? modelObj.name : modelObj.parent.name; + this.dialog.set("title", + modelObj.type == "preferencesprovider" + ? "Edit preferences provider '" + entities.encode(String(modelObj.name)) + "' for '" + + entities.encode(String(modelObj.parent.name)) + "'" + : "Add preferences provider " + " for '" + entities.encode(String(modelObj.name))); + if (modelObj.type == "preferencesprovider") + { + var that = this; + management.load(modelObj, {actuals: true}) + .then(function (data) + { + that.preferencesProviderForm.setData(data[0]); + that.dialog.show(); + }, util.xhrErrorHandler); + } + else + { + this.preferencesProviderForm.reset(); + this.dialog.show(); + } + } + }; - try - { - addPreferencesProvider.init(); - } - catch (e) - { - console.warn("Initialisation of add preferences dialog failed", e); - } + try + { + addPreferencesProvider.init(); + } + catch (e) + { + console.warn("Initialisation of add preferences dialog failed", e); + } - return addPreferencesProvider; - }); + return addPreferencesProvider; + }); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
