From 3d1765d31885c2fdea00e1bca4108ff69e29a942 Mon Sep 17 00:00:00 2001 From: Alex Rudyy Date: Tue, 23 Apr 2013 11:30:35 +0000 Subject: QPID-4769: Add port tab into java broker web management console git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1470899 13f79535-47bb-0310-9956-ffa450edef68 --- .../src/main/java/resources/addPort.html | 2 +- .../java/resources/js/qpid/management/Broker.js | 2 +- .../main/java/resources/js/qpid/management/Port.js | 205 +++++++++++++++++++++ .../java/resources/js/qpid/management/addPort.js | 16 +- .../resources/js/qpid/management/controller.js | 5 +- .../src/main/java/resources/showPort.html | 77 ++++++++ 6 files changed, 294 insertions(+), 13 deletions(-) create mode 100644 qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Port.js create mode 100644 qpid/java/broker-plugins/management-http/src/main/java/resources/showPort.html diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/addPort.html b/qpid/java/broker-plugins/management-http/src/main/java/resources/addPort.html index b800d8e067..a6f3384020 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/addPort.html +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/addPort.html @@ -92,7 +92,7 @@
Trust Stores:
+ data-dojo-props="label:'Trust Stores:',plugins:{indirectSelection: true},rowSelector:'0px' " style="height: 100px; width:400px"> diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js index 7ce2e1c0c1..eeac5b5c0b 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js @@ -549,7 +549,7 @@ define(["dojo/_base/xhr", var idx = evt.rowIndex, theItem = this.getItem(idx); var name = obj.dataStore.getValue(theItem,"name"); - addPort.show(name, that.brokerData.authenticationproviders, that.brokerData.keystores, that.brokerData.truststores); + that.controller.show("port", name, brokerObj); }); }, gridProperties, EnhancedGrid); diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Port.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Port.js new file mode 100644 index 0000000000..d1ba4043c2 --- /dev/null +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Port.js @@ -0,0 +1,205 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +define(["dojo/dom", + "dojo/_base/xhr", + "dojo/parser", + "dojo/query", + "dojo/_base/connect", + "dijit/registry", + "qpid/common/properties", + "qpid/common/updater", + "qpid/common/util", + "qpid/common/formatter", + "qpid/management/addPort", + "dojo/domReady!"], + function (dom, xhr, parser, query, connect, registry, properties, updater, util, formatter, addPort) { + + function Port(name, parent, controller) { + this.name = name; + this.controller = controller; + this.modelObj = { type: "port", name: name }; + if(parent) { + this.modelObj.parent = {}; + this.modelObj.parent[ parent.type] = parent; + } + } + + Port.prototype.getTitle = function() { + return "Port: " + this.name; + }; + + Port.prototype.open = function(contentPane) { + var that = this; + this.contentPane = contentPane; + xhr.get({url: "showPort.html", + sync: true, + load: function(data) { + contentPane.containerNode.innerHTML = data; + parser.parse(contentPane.containerNode); + + that.portUpdater = new PortUpdater(contentPane.containerNode, that.modelObj, that.controller, "rest/port/" + encodeURIComponent(that.name)); + + updater.add( that.portUpdater ); + + that.portUpdater.update(); + + var deletePortButton = query(".deletePortButton", contentPane.containerNode)[0]; + var node = registry.byNode(deletePortButton); + connect.connect(node, "onClick", + function(evt){ + that.deletePort(); + }); + + var editPortButton = query(".editPortButton", contentPane.containerNode)[0]; + var node = registry.byNode(editPortButton); + connect.connect(node, "onClick", + function(evt){ + that.showEditDialog(); + }); + }}); + }; + + Port.prototype.close = function() { + updater.remove( this.portUpdater ); + }; + + + Port.prototype.deletePort = function() { + if(confirm("Are you sure you want to delete port '" +this.name+"'?")) { + var query = "rest/port/" + encodeURIComponent(this.name); + this.success = true + var that = this; + xhr.del({url: query, sync: true, handleAs: "json"}).then( + function(data) { + that.contentPane.onClose() + that.controller.tabContainer.removeChild(that.contentPane); + that.contentPane.destroyRecursive(); + that.close(); + }, + function(error) {that.success = false; that.failureReason = error;}); + if(!this.success ) { + alert("Error:" + this.failureReason); + } + } + } + + Port.prototype.showEditDialog = function() { + var that = this; + xhr.get({url: "rest/broker", sync: properties.useSyncGet, handleAs: "json"}) + .then(function(data) + { + var brokerData= data[0]; + addPort.show(that.name, brokerData.authenticationproviders, brokerData.keystores, brokerData.truststores); + } + ); + } + + function PortUpdater(containerNode, portObj, controller, url) + { + var that = this; + + function findNode(name) { + return query("." + name, containerNode)[0]; + } + + function storeNodes(names) + { + for(var i = 0; i < names.length; i++) { + that[names[i]] = findNode(names[i]); + } + } + + storeNodes(["nameValue", + "portValue", + "authenticationProviderValue", + "protocolsValue", + "transportsValue", + "bindingAddressValue", + "keyStoreValue", + "needClientAuthValue", + "wantClientAuthValue", + "trustStoresValue", + "bindingAddress", + "keyStore", + "needClientAuth", + "wantClientAuth", + "trustStores" + ]); + + this.query = url; + + xhr.get({url: this.query, sync: properties.useSyncGet, handleAs: "json"}).then(function(data) + { + that.keyStoreData = data[0]; + that.updateHeader(); + }); + + } + + PortUpdater.prototype.updateHeader = function() + { + function printArray(fieldName, object) + { + var array = object[fieldName]; + var data = "
"; + if (array) { + for(var i = 0; i < array.length; i++) { + data+= "
" + array[i] + "
"; + } + } + return data + "
"; + } + + this.nameValue.innerHTML = this.keyStoreData[ "name" ]; + this.portValue.innerHTML = this.keyStoreData[ "port" ]; + this.authenticationProviderValue.innerHTML = this.keyStoreData[ "authenticationProvider" ] ? this.keyStoreData[ "authenticationProvider" ] : ""; + this.protocolsValue.innerHTML = printArray( "protocols", this.keyStoreData); + this.transportsValue.innerHTML = printArray( "transports", this.keyStoreData); + this.bindingAddressValue.innerHTML = this.keyStoreData[ "bindingAddress" ] ? this.keyStoreData[ "bindingAddress" ] : "" ; + this.keyStoreValue.innerHTML = this.keyStoreData[ "keyStore" ] ? this.keyStoreData[ "keyStore" ] : ""; + this.needClientAuthValue.innerHTML = "" ; + this.wantClientAuthValue.innerHTML = "" ; + this.trustStoresValue.innerHTML = printArray( "trustStores", this.keyStoreData); + var amqpProtocol = this.keyStoreData["protocols"][0] && this.keyStoreData["protocols"][0].indexOf("AMQP") == 0; + this.bindingAddress.style.display= amqpProtocol? "block" : "none"; + var sslTransport = this.keyStoreData["transports"][0] && this.keyStoreData["transports"][0] == "SSL"; + var displayStyle = sslTransport ? "block" : "none"; + this.trustStoresValue.style.display = displayStyle; + this.keyStore.style.display = displayStyle; + this.needClientAuth.style.display = displayStyle; + this.wantClientAuth.style.display = displayStyle; + this.trustStores.style.display = displayStyle; + }; + + PortUpdater.prototype.update = function() + { + + var thisObj = this; + + xhr.get({url: this.query, sync: properties.useSyncGet, handleAs: "json"}).then(function(data) + { + thisObj.keyStoreData = data[0]; + thisObj.updateHeader(); + }); + }; + + return Port; + }); diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPort.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPort.js index c3bfac5285..cf50b39c87 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPort.js +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPort.js @@ -180,13 +180,12 @@ define(["dojo/_base/xhr", registry.byId("formAddPort.keyStore").set("disabled", true); } - if (transportSSLPanel.domNode.style.display != transportSSLPanelDisplay) + if (transportSSLPanel.domNode.style.display != transportSSLPanelDisplay && transportSSLPanel.domNode.style.display=="block") { - transportSSLPanel.resize(); + registry.byId("formAddPort.trustStores").resize(); } }; - xhr.get({url: "addPort.html", sync: true, load: function(data) { @@ -373,8 +372,8 @@ define(["dojo/_base/xhr", var truststoreWidget = registry.byId("formAddPort.trustStores"); if (truststores) { - var layout = [[{name: "Name", field: "name", width: "100%"}, - {name: "Peers only", field: "peersOnly", width: "80px", + var layout = [[{name: "Name", field: "name", width: "80%"}, + {name: "Peers only", field: "peersOnly", width: "20%", formatter: function(val){ return "" } @@ -417,14 +416,15 @@ define(["dojo/_base/xhr", } } truststoreWidget.selection.setSelected(j,selected); - truststoreWidget.initialValue = port.trustStores; } } + var transportWidget = registry.byId("formAddPort.transports"); transportWidget.set("value", port.transports ? port.transports[0] : ""); registry.byId("formAddPort.port").set("value", port.port); var protocols = port.protocols; var typeWidget = registry.byId("formAddPort.type"); + var store = typeWidget.store; store.data.forEach(function(option){ registry.byId("formAddPort.protocols" + option.value).set("disabled", true); @@ -439,7 +439,7 @@ define(["dojo/_base/xhr", var defaultProtocolsWidget = registry.byId("formAddPort.protocolsDefault"); var addressWidget = registry.byId("formAddPort.bindingAddress"); addressWidget.set("value", port.bindingAddress); - amqpProtocolsWidget.set("disabled", false); + if (protocols) { amqpProtocolsWidget.set("value", protocols) @@ -472,8 +472,6 @@ define(["dojo/_base/xhr", registry.byId("formAddPort:fields" + typeWidget.value).domNode.style.display = "block"; typeWidget.set("disabled", true); - toggleSslWidgets(typeWidget.value, transportWidget.value); - keystoreWidget.initialValue = port.keyStore; truststoreWidget.initialValue = port.trustStores; transportWidget.initialValue = transportWidget.value; diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js index e8a381777f..cd18a0c4b6 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js @@ -32,16 +32,17 @@ define(["dojo/dom", "qpid/management/KeyStore", "qpid/management/TrustStore", "qpid/management/AccessControlProvider", + "qpid/management/Port", "dojo/ready", "dojo/domReady!"], - function (dom, registry, ContentPane, Broker, VirtualHost, Exchange, Queue, Connection, AuthProvider, GroupProvider, Group, KeyStore, TrustStore, AccessControlProvider, ready) { + function (dom, registry, ContentPane, Broker, VirtualHost, Exchange, Queue, Connection, AuthProvider, GroupProvider, Group, KeyStore, TrustStore, AccessControlProvider, Port, ready) { var controller = {}; var constructors = { broker: Broker, virtualhost: VirtualHost, exchange: Exchange, queue: Queue, connection: Connection, authenticationprovider: AuthProvider, groupprovider: GroupProvider, group: Group, keystore: KeyStore, truststore: TrustStore, - accesscontrolprovider: AccessControlProvider}; + accesscontrolprovider: AccessControlProvider, port: Port}; var tabDiv = dom.byId("managedViews"); diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/showPort.html b/qpid/java/broker-plugins/management-http/src/main/java/resources/showPort.html new file mode 100644 index 0000000000..f297f2d751 --- /dev/null +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/showPort.html @@ -0,0 +1,77 @@ + +
+
+ +
Name:
+

+ +
Port Number:
+

+ +
+
Authentication Provider:
+

+
+ +
+
Protocols:
+

+
+ +
+
Transports:
+

+
+ +
+
Binding address:
+

+
+ +
+
Key Store:
+

+
+ +
+
Need SSL Client Certificate:
+

+
+ +
+
Want SSL Client Certificate:
+

+
+ +
+
Trust Stores:
+

+
+ +
+
+ +
+ + +
+
-- cgit v1.2.1
Name