You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2013/04/23 13:30:35 UTC

svn commit: r1470899 - in /qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources: addPort.html js/qpid/management/Broker.js js/qpid/management/Port.js js/qpid/management/addPort.js js/qpid/management/controller.js showPort.html

Author: orudyy
Date: Tue Apr 23 11:30:35 2013
New Revision: 1470899

URL: http://svn.apache.org/r1470899
Log:
QPID-4769: Add port tab into java broker web management console

Added:
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Port.js
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/showPort.html
Modified:
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/addPort.html
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPort.js
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/addPort.html
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/addPort.html?rev=1470899&r1=1470898&r2=1470899&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/addPort.html (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/addPort.html Tue Apr 23 11:30:35 2013
@@ -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>

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js?rev=1470899&r1=1470898&r2=1470899&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js Tue Apr 23 11:30:35 2013
@@ -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);
 

Added: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Port.js
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Port.js?rev=1470899&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Port.js (added)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Port.js Tue Apr 23 11:30:35 2013
@@ -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;
+       });

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPort.js
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPort.js?rev=1470899&r1=1470898&r2=1470899&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPort.js (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPort.js Tue Apr 23 11:30:35 2013
@@ -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;

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js?rev=1470899&r1=1470898&r2=1470899&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js Tue Apr 23 11:30:35 2013
@@ -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");
 

Added: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/showPort.html
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/showPort.html?rev=1470899&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/showPort.html (added)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/showPort.html Tue Apr 23 11:30:35 2013
@@ -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>



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