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