summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Rudyy <orudyy@apache.org>2013-04-23 11:30:35 +0000
committerAlex Rudyy <orudyy@apache.org>2013-04-23 11:30:35 +0000
commit3d1765d31885c2fdea00e1bca4108ff69e29a942 (patch)
tree8951f4ef2c9967467a316bc03bcaa1bfc1653906
parent2c820faa7bf393ec518de5a5254f0e851c19580b (diff)
downloadqpid-python-3d1765d31885c2fdea00e1bca4108ff69e29a942.tar.gz
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
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/addPort.html2
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js2
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Port.js205
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPort.js16
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js5
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/showPort.html77
6 files changed, 294 insertions, 13 deletions
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 @@
</div>
<div><strong>Trust Stores:</strong></div>
<table id="formAddPort.trustStores" data-dojo-type="dojox.grid.EnhancedGrid"
- data-dojo-props="label:'Trust Stores:',plugins:{indirectSelection: true},rowSelector:'0px' " style="height: 100px">
+ data-dojo-props="label:'Trust Stores:',plugins:{indirectSelection: true},rowSelector:'0px' " style="height: 100px; width:400px">
<thead>
<tr>
<th field="name">Name</th>
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 = "<div>";
+ if (array) {
+ for(var i = 0; i < array.length; i++) {
+ data+= "<div>" + array[i] + "</div>";
+ }
+ }
+ return data + "</div>";
+ }
+
+ 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 = "<input type='checkbox' disabled='disabled' "+(this.keyStoreData[ "needClientAuth" ] ? "checked='checked'": "")+" />" ;
+ this.wantClientAuthValue.innerHTML = "<input type='checkbox' disabled='disabled' "+(this.keyStoreData[ "wantClientAuth" ] ? "checked='checked'": "")+" />" ;
+ 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 "<input type='radio' disabled='disabled' "+(val?"checked='checked'": "")+" />"
}
@@ -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 @@
+<!--
+ -
+ - 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.
+ -
+ -->
+<div class="port">
+ <div class="portContainer">
+
+ <div class="formLabel-labelCell" style="float:left; width: 250px;">Name:</div>
+ <div class="nameValue" style="float:left;"></div><br/>
+
+ <div class="formLabel-labelCell" style="float:left; width: 250px;">Port Number:</div>
+ <div class="portValue" style="float:left;"></div><br/>
+
+ <div class="authenticationProvider" style="clear:both">
+ <div class="formLabel-labelCell" style="float:left; width: 250px;">Authentication Provider:</div>
+ <div class="authenticationProviderValue" style="float:left;"></div><br/>
+ </div>
+
+ <div class="protocols" style="clear:both">
+ <div class="formLabel-labelCell" style="float:left; width: 250px;">Protocols:</div>
+ <div class="protocolsValue" style="float:left;"></div><br/>
+ </div>
+
+ <div class="transports" style="clear:both">
+ <div class="formLabel-labelCell" style="float:left; width: 250px;">Transports:</div>
+ <div class="transportsValue" style="float:left;"></div><br/>
+ </div>
+
+ <div class="bindingAddress" style="clear:both">
+ <div class="formLabel-labelCell" style="float:left; width: 250px;">Binding address:</div>
+ <div class="bindingAddressValue" style="float:left;"></div><br>
+ </div>
+
+ <div class="keyStore" style="clear:both">
+ <div class="formLabel-labelCell" style="float:left; width: 250px;">Key Store:</div>
+ <div class="keyStoreValue" style="float:left;"></div><br>
+ </div>
+
+ <div class="needClientAuth" style="clear:both">
+ <div class="formLabel-labelCell" style="float:left; width: 250px;">Need SSL Client Certificate:</div>
+ <div class="needClientAuthValue" style="float:left;"></div><br>
+ </div>
+
+ <div class="wantClientAuth" style="clear:both">
+ <div class="formLabel-labelCell" style="float:left; width: 250px;">Want SSL Client Certificate:</div>
+ <div class="wantClientAuthValue" style="float:left;"></div><br>
+ </div>
+
+ <div class="trustStores" style="clear:both">
+ <div class="formLabel-labelCell" style="float:left; width: 250px;">Trust Stores:</div>
+ <div class="trustStoresValue" style="float:left;"></div><br>
+ </div>
+
+ </div>
+ <br/>
+
+ <div class="dijitDialogPaneActionBar">
+ <button data-dojo-type="dijit.form.Button" class="editPortButton" type="button">Edit</button>
+ <button data-dojo-type="dijit.form.Button" class="deletePortButton" type="button">Delete</button>
+ </div>
+</div>