You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2012/06/09 20:31:06 UTC

svn commit: r1348473 - in /qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java: org/apache/qpid/server/management/plugin/servlet/rest/ resources/ resources/js/qpid/management/

Author: rgodfrey
Date: Sat Jun  9 18:31:05 2012
New Revision: 1348473

URL: http://svn.apache.org/viewvc?rev=1348473&view=rev
Log:
QPID-3999 : Add message copy/move

Added:
    qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/qpid/management/moveCopyMessages.js
      - copied, changed from r1348266, qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/qpid/management/addBinding.js
    qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/moveCopyMessages.html
      - copied, changed from r1348266, qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/addBinding.html
Modified:
    qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageServlet.java
    qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/qpid/management/Queue.js

Modified: qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageServlet.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageServlet.java?rev=1348473&r1=1348472&r2=1348473&view=diff
==============================================================================
--- qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageServlet.java (original)
+++ qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageServlet.java Sat Jun  9 18:31:05 2012
@@ -143,6 +143,7 @@ public class MessageServlet extends Abst
 
         for(Queue q : vhost.getQueues())
         {
+
             if(q.getName().equals(queueName))
             {
                 queue = q;
@@ -384,6 +385,8 @@ public class MessageServlet extends Abst
     protected void onPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
     {
 
+        try
+        {
         final Queue sourceQueue = getQueueFromRequest(request);
 
         ObjectMapper mapper = new ObjectMapper();
@@ -407,7 +410,16 @@ public class MessageServlet extends Abst
                         ? new MoveTransaction(sourceQueue, messageIds, destinationQueue)
                         : new CopyTransaction(sourceQueue, messageIds, destinationQueue);
         vhost.executeTransaction(txn);
-
+        }
+        catch(RuntimeException e)
+        {
+            e.printStackTrace();
+        }
+        catch(IOException e)
+        {
+            e.printStackTrace();
+            throw e;
+        }
     }
 
 

Modified: qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/qpid/management/Queue.js
URL: http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/qpid/management/Queue.js?rev=1348473&r1=1348472&r2=1348473&view=diff
==============================================================================
--- qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/qpid/management/Queue.js (original)
+++ qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/qpid/management/Queue.js Sat Jun  9 18:31:05 2012
@@ -30,6 +30,7 @@ define(["dojo/_base/xhr",
         "qpid/common/formatter",
         "qpid/common/UpdatableStore",
         "qpid/management/addBinding",
+        "qpid/management/moveCopyMessages",
         "dojo/store/JsonRest",
         "dojox/grid/EnhancedGrid",
         "dojo/data/ObjectStore",
@@ -37,7 +38,7 @@ define(["dojo/_base/xhr",
         "dojox/grid/enhanced/plugins/IndirectSelection",
         "dojo/domReady!"],
        function (xhr, parser, query, connect, event, json, properties, updater, util, formatter,
-                 UpdatableStore, addBinding, JsonRest, EnhancedGrid, ObjectStore) {
+                 UpdatableStore, addBinding, moveMessages, JsonRest, EnhancedGrid, ObjectStore) {
 
            function Queue(name, parent, controller) {
                this.name = name;
@@ -115,14 +116,25 @@ define(["dojo/_base/xhr",
 
                             var deleteMessagesButton = query(".deleteMessagesButton", contentPane.containerNode)[0];
                             connect.connect(deleteMessagesButton, "onclick",
-                                                                        function(evt){
-                                                                            event.stop(evt);
-                                                                            that.deleteMessages();
-                                                                        });
+                                            function(evt){
+                                                event.stop(evt);
+                                                that.deleteMessages();
+                                            });
                             var moveMessagesButton = query(".moveMessagesButton", contentPane.containerNode)[0];
-                            var copyMessagesButton = query(".copyMessagesButton", contentPane.containerNode)[0];
+                            connect.connect(moveMessagesButton, "onclick",
+                                            function(evt){
+                                                event.stop(evt);
+                                                that.moveOrCopyMessages({move: true});
+                                            });
 
 
+                            var copyMessagesButton = query(".copyMessagesButton", contentPane.containerNode)[0];
+                            connect.connect(copyMessagesButton, "onclick",
+                                            function(evt){
+                                                event.stop(evt);
+                                                that.moveOrCopyMessages({move: false});
+                                            });
+
                             var addBindingButton = query(".addBindingButton", contentPane.containerNode)[0];
                             connect.connect(addBindingButton, "onclick",
                                             function(evt){
@@ -164,6 +176,35 @@ define(["dojo/_base/xhr",
                }
            };
 
+           Queue.prototype.moveOrCopyMessages = function(obj) {
+               var that = this;
+               var move = obj.move;
+               var data = this.grid.selection.getSelected();
+               if(data.length) {
+                   var that = this;
+                   var i, putData = { messages:[] };
+                   if(move) {
+                       putData.move = true;
+                   }
+                   for(i = 0; i<data.length; i++) {
+                       putData.messages.push(data[i].id);
+                   }
+                   moveMessages.show({ virtualhost: this.getVirtualHostName(),
+                                       queue: this.getQueueName(),
+                                       data: putData}, function() {
+                                         if(move)
+                                         {
+                                            that.grid.setQuery({id: "*"});
+                                            that.grid.selection.deselectAll();
+                                         }
+                                     });
+
+               }
+
+
+
+           };
+
            Queue.prototype.startup = function() {
                this.grid.startup();
            };

Copied: qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/qpid/management/moveCopyMessages.js (from r1348266, qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/qpid/management/addBinding.js)
URL: http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/qpid/management/moveCopyMessages.js?p2=qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/qpid/management/moveCopyMessages.js&p1=qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/qpid/management/addBinding.js&r1=1348266&r2=1348473&rev=1348473&view=diff
==============================================================================
--- qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/qpid/management/addBinding.js (original)
+++ qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/qpid/management/moveCopyMessages.js Sat Jun  9 18:31:05 2012
@@ -14,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 define(["dojo/_base/xhr",
         "dojo/dom",
         "dojo/dom-construct",
@@ -25,111 +26,56 @@ define(["dojo/_base/xhr",
         'dojo/_base/json',
         "dojo/store/Memory",
         "dijit/form/FilteringSelect",
-        "dijit/form/NumberSpinner", // required by the form
-        /* dojox/ validate resources */
-        "dojox/validate/us", "dojox/validate/web",
-        /* basic dijit classes */
-        "dijit/Dialog",
-        "dijit/form/CheckBox", "dijit/form/Textarea",
-        "dijit/form/FilteringSelect", "dijit/form/TextBox",
-        "dijit/form/ValidationTextBox", "dijit/form/DateTextBox",
-        "dijit/form/TimeTextBox", "dijit/form/Button",
-        "dijit/form/RadioButton", "dijit/form/Form",
-        "dijit/form/DateTextBox",
-        /* basic dojox classes */
-        "dojox/form/BusyButton", "dojox/form/CheckedMultiSelect",
+        "dojo/query",
+        "dojo/_base/connect",
         "dojo/domReady!"],
-    function (xhr, dom, construct, win, registry, parser, array, event, json, Memory, FilteringSelect) {
+    function (xhr, dom, construct, win, registry, parser, array, event, json, Memory, FilteringSelect, query, connect) {
 
-        var addBinding = {};
+        var moveMessages = {};
 
         var node = construct.create("div", null, win.body(), "last");
 
-        var convertToBinding = function convertToBinding(formValues)
-            {
-                var newBinding = {};
-
-                newBinding.name = formValues.name;
-                for(var propName in formValues)
-                {
-                    if(formValues.hasOwnProperty(propName))
-                    {
-                        if(propName === "durable")
-                        {
-                            if (formValues.durable[0] && formValues.durable[0] == "durable") {
-                                newBinding.durable = true;
-                            }
-                        } else {
-                            if(formValues[ propName ] !== "") {
-                                newBinding[ propName ] = formValues[propName];
-                            }
-                        }
-
-                    }
-                }
-                if(addBinding.queue) {
-                    newBinding.queue = addBinding.queue;
-                }
-                if(addBinding.exchange) {
-                    newBinding.exchange = addBinding.exchange;
-                }
-                return newBinding;
-            };
-
-
-        xhr.get({url: "addBinding.html",
+        xhr.get({url: "moveCopyMessages.html",
                  sync: true,
                  load:  function(data) {
                             var theForm;
                             node.innerHTML = data;
-                            addBinding.dialogNode = dom.byId("addBinding");
-                            parser.instantiate([addBinding.dialogNode]);
+                            moveMessages.dialogNode = dom.byId("moveMessages");
+                            parser.instantiate([moveMessages.dialogNode]);
 
-                            theForm = registry.byId("formAddBinding");
-                            array.forEach(theForm.getDescendants(), function(widget)
-                                {
-                                    if(widget.name === "type") {
-                                        widget.on("change", function(isChecked) {
-
-                                            var obj = registry.byId(widget.id + ":fields");
-                                            if(obj) {
-                                                if(isChecked) {
-                                                    obj.domNode.style.display = "block";
-                                                    obj.resize();
-                                                } else {
-                                                    obj.domNode.style.display = "none";
-                                                    obj.resize();
-                                                }
-                                            }
-                                        })
-                                    }
+                            theForm = registry.byId("formMoveMessages");
+
+
+                            var cancelButton = query(".moveMessageCancel")[0];
+                            connect.connect(cancelButton, "onclick",
+                                            function(evt){
+                                                event.stop(evt);
+                                                registry.byId("moveMessages").hide();
+                                            });
 
-                                });
 
                             theForm.on("submit", function(e) {
 
                                 event.stop(e);
                                 if(theForm.validate()){
 
-                                    var newBinding = convertToBinding(theForm.getValues());
+                                    moveMessages.data.destinationQueue = theForm.getValues()["queue"];
                                     var that = this;
 
-                                    xhr.put({url: "/rest/binding/"+encodeURIComponent(addBinding.vhost)
-                                                      +"/"+encodeURIComponent(newBinding.exchange)
-                                                      +"/"+encodeURIComponent(newBinding.queue)
-                                                      +"/"+encodeURIComponent(newBinding.name),
+                                    xhr.post({url: "/rest/message/"+encodeURIComponent(moveMessages.vhost)
+                                                      +"/"+encodeURIComponent(moveMessages.queue),
                                              sync: true, handleAs: "json",
                                              headers: { "Content-Type": "application/json"},
-                                             putData: json.toJson(newBinding),
+                                             postData: json.toJson(moveMessages.data),
                                              load: function(x) {that.success = true; },
                                              error: function(error) {that.success = false; that.failureReason = error;}});
 
-                                    if(this.success === true)
-                                    {
-                                        registry.byId("addBinding").hide();
-                                    }
-                                    else
-                                    {
+                                    if(this.success === true) {
+                                        registry.byId("moveMessages").hide();
+                                        if(moveMessages.next) {
+                                            moveMessages.next();
+                                        }
+                                    } else {
                                         alert("Error:" + this.failureReason);
                                     }
 
@@ -142,15 +88,17 @@ define(["dojo/_base/xhr",
                                 }
 
                             });
+
                         }});
 
-        addBinding.show = function(obj) {
+        moveMessages.show = function(obj, next) {
             var that = this;
 
-            addBinding.vhost = obj.virtualhost;
-            addBinding.queue = obj.queue;
-            addBinding.exchange = obj.exchange;
-            registry.byId("formAddBinding").reset();
+            moveMessages.vhost = obj.virtualhost;
+            moveMessages.queue = obj.queue;
+            moveMessages.data = obj.data;
+            moveMessages.next = next;
+            registry.byId("formMoveMessages").reset();
 
 
 
@@ -167,51 +115,17 @@ define(["dojo/_base/xhr",
                     if(that.queueChooser) {
                         that.queueChooser.destroy( false );
                     }
-                    var queueDiv = dom.byId("addBinding.selectQueueDiv");
-                    var input = construct.create("input", {id: "addBindingSelectQueue"}, queueDiv);
+                    var queueDiv = dom.byId("moveMessages.selectQueueDiv");
+                    var input = construct.create("input", {id: "moveMessagesSelectQueue"}, queueDiv);
 
-                    that.queueChooser = new FilteringSelect({ id: "addBindingSelectQueue",
+                    that.queueChooser = new FilteringSelect({ id: "moveMessagesSelectQueue",
                                                               name: "queue",
                                                               store: queueStore,
                                                               searchAttr: "name"}, input);
 
-                    if(obj.queue)
-                    {
-                        that.queueChooser.set("value", obj.queue);
-                        that.queueChooser.set("disabled", true);
-                    }
-
-                    xhr.get({url: "/rest/exchange/" + encodeURIComponent(obj.virtualhost) + "?depth=0",
-                                         handleAs: "json"}).then(
-                        function(data) {
-
-                            var exchanges =  [];
-                            for(var i=0; i < data.length; i++) {
-                              exchanges[i] = {id: data[i].name, name: data[i].name};
-                            }
-                            var exchangeStore = new Memory({ data: exchanges });
-
-
-                            if(that.exchangeChooser) {
-                                that.exchangeChooser.destroy( false );
-                            }
-                            var exchangeDiv = dom.byId("addBinding.selectExchangeDiv");
-                            var input = construct.create("input", {id: "addBindingSelectExchange"}, exchangeDiv);
-
-                            that.exchangeChooser = new FilteringSelect({ id: "addBindingSelectExchange",
-                                                                      name: "exchange",
-                                                                      store: exchangeStore,
-                                                                      searchAttr: "name"}, input);
-
-                            if(obj.exchange)
-                            {
-                                that.exchangeChooser.set("value", obj.exchange);
-                                that.exchangeChooser.set("disabled", true);
-                            }
 
 
-                            registry.byId("addBinding").show();
-                        });
+                    registry.byId("moveMessages").show();
 
 
                 });
@@ -219,5 +133,5 @@ define(["dojo/_base/xhr",
 
         };
 
-        return addBinding;
+        return moveMessages;
     });

Copied: qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/moveCopyMessages.html (from r1348266, qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/addBinding.html)
URL: http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/moveCopyMessages.html?p2=qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/moveCopyMessages.html&p1=qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/addBinding.html&r1=1348266&r2=1348473&rev=1348473&view=diff
==============================================================================
--- qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/addBinding.html (original)
+++ qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/moveCopyMessages.html Sat Jun  9 18:31:05 2012
@@ -14,28 +14,22 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License.
   -->
+
 <div class="dijitHidden">
-    <div data-dojo-type="dijit.Dialog" style="width:600px;" data-dojo-props="title:'Add Binding'" id="addBinding">
-        <form id="formAddBinding" method="post" dojoType="dijit.form.Form">
+    <div data-dojo-type="dijit.Dialog" style="width:600px;" data-dojo-props="title:'Move/Copy Messages'" id="moveMessages">
+        <form id="formMoveMessages" method="post" dojoType="dijit.form.Form">
             <table cellpadding="0" cellspacing="2">
                 <tr>
-                    <td valign="top"><strong>Exchange Name*: </strong></td>
-                    <td><div id="addBinding.selectExchangeDiv"></div></td>
-                </tr>
-                <tr>
-                    <td valign="top"><strong>Queue Name*: </strong></td>
-                    <td><div id="addBinding.selectQueueDiv"></div></td>
-                </tr>
-                <tr>
-                    <td valign="top"><strong>Binding Key*: </strong></td>
-                    <td><input type="text" required="true" name="name" id="formAddbinding.bindingKey" placeholder="Binding Key"
-                        dojoType="dijit.form.ValidationTextBox" missingMessage="A name must be supplied" /></td>
+                    <td valign="top"><strong>Queue: </strong></td>
+                    <td><div id="moveMessages.selectQueueDiv"></div></td>
                 </tr>
             </table>
             <br/>
 
             <!-- submit buttons -->
-            <input type="submit" value="Create Binding" label="Create Binding" dojoType="dijit.form.Button" />
+
+            <input type="button" value="Cancel" label="Cancel" dojoType="dijit.form.Button" class="moveMessageCancel"/>
+            <input type="submit" value="Move Messages" label="Move Messages" dojoType="dijit.form.Button" />
 
         </form>
     </div>



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