diff options
author | Keith Wall <kwall@apache.org> | 2013-08-05 11:07:08 +0000 |
---|---|---|
committer | Keith Wall <kwall@apache.org> | 2013-08-05 11:07:08 +0000 |
commit | 43c9514c20881598736ad26b09c5102cadb01ff3 (patch) | |
tree | 22c00297d74c26561f6b21abca70387ec0b1a4bb | |
parent | df8857989079b2129b6e9bd43065c7ed6420e6ff (diff) | |
download | qpid-python-43c9514c20881598736ad26b09c5102cadb01ff3.tar.gz |
QPID-5036: View Message dialogue can omit or display stale field values.
* Fixed mismatched id between json and html (message-expiration vs message-expirationTime).
* Fixed display of stale values (values from previously viewed message would appear).
* Fixed display of fields with the boolean value false.
* MessageServlet changed so that JSON fields expirationTime and timestamp are included if they have non-zero values.
* MessageServlet fails to set content type when producing JSON for single message. This caused a "not well-formed" error in Firefox Console.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1510429 13f79535-47bb-0310-9956-ffa450edef68
4 files changed, 29 insertions, 16 deletions
diff --git a/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageServlet.java b/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageServlet.java index 49e0c2b1bf..83208516c7 100644 --- a/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageServlet.java +++ b/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageServlet.java @@ -80,6 +80,7 @@ public class MessageServlet extends AbstractServlet response.setHeader("Cache-Control","no-cache"); response.setHeader("Pragma","no-cache"); response.setDateHeader ("Expires", 0); + response.setContentType("application/json"); final PrintWriter writer = response.getWriter(); ObjectMapper mapper = new ObjectMapper(); @@ -352,20 +353,32 @@ public class MessageServlet extends AbstractServlet if(messageHeader != null) { addIfPresent(object, "messageId", messageHeader.getMessageId()); - addIfPresent(object, "expirationTime", messageHeader.getExpiration()); + addIfPresentAndNotZero(object, "expirationTime", messageHeader.getExpiration()); addIfPresent(object, "applicationId", messageHeader.getAppId()); addIfPresent(object, "correlationId", messageHeader.getCorrelationId()); addIfPresent(object, "encoding", messageHeader.getEncoding()); addIfPresent(object, "mimeType", messageHeader.getMimeType()); addIfPresent(object, "priority", messageHeader.getPriority()); addIfPresent(object, "replyTo", messageHeader.getReplyTo()); - addIfPresent(object, "timestamp", messageHeader.getTimestamp()); + addIfPresentAndNotZero(object, "timestamp", messageHeader.getTimestamp()); addIfPresent(object, "type", messageHeader.getType()); addIfPresent(object, "userId", messageHeader.getUserId()); } } + private void addIfPresentAndNotZero(Map<String, Object> object, String name, Object property) + { + if(property instanceof Number) + { + Number value = (Number)property; + if (value.longValue() != 0) + { + object.put(name, property); + } + } + } + private void addIfPresent(Map<String, Object> object, String name, Object property) { if(property != null) diff --git a/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/showMessage.js b/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/showMessage.js index b1ccc0ca07..59822ec535 100644 --- a/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/showMessage.js +++ b/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/showMessage.js @@ -37,15 +37,10 @@ define(["dojo/_base/xhr", return typeof val === 'string' ? entities.encode(val) : val; } + var populatedFields = []; var showMessage = {}; showMessage.hide = function () { - if(this.populatedFields) { - for(var i = 0 ; i < this.populatedFields.length; i++) { - this.populatedFields[i].innerHTML = ""; - } - this.populatedFields = []; - } registry.byId("showMessage").hide(); }; @@ -65,16 +60,22 @@ define(["dojo/_base/xhr", showMessage.populateShowMessage = function(data) { - this.populatedFields = []; + // clear fields set by previous invocation. + if(populatedFields) { + for(var i = 0 ; i < populatedFields.length; i++) { + populatedFields[i].innerHTML = ""; + } + populatedFields = []; + } for(var attrName in data) { if(data.hasOwnProperty(attrName)) { var fields = query(".message-"+attrName, this.dialogNode); if(fields && fields.length != 0) { var field = fields[0]; - this.populatedFields.push(field); + populatedFields.push(field); var val = data[attrName]; - if(val) { + if(val != null) { if(domClass.contains(field,"map")) { var tableStr = "<table style='border: 1pt'><tr><th style='width: 6em; font-weight: bold'>Header</th><th style='font-weight: bold'>Value</th></tr>"; for(var name in val) { @@ -112,7 +113,7 @@ define(["dojo/_base/xhr", + "/" + encodeURIComponent(showMessage.messageNumber) + "\" target=\"_blank\">Download</a>"; } - this.populatedFields.push(contentField); + populatedFields.push(contentField); registry.byId("showMessage").show(); }; diff --git a/java/broker-plugins/management-http/src/main/java/resources/showMessage.html b/java/broker-plugins/management-http/src/main/java/resources/showMessage.html index 0dea508c60..9a6ec55686 100644 --- a/java/broker-plugins/management-http/src/main/java/resources/showMessage.html +++ b/java/broker-plugins/management-http/src/main/java/resources/showMessage.html @@ -45,7 +45,7 @@ </tr> <tr style="margin-bottom: 4pt"> <td style="width: 10em; vertical-align: top"><span style="font-weight: bold;">Expiration:</span></td> - <td><span class="message-expiration datetime"></span></td> + <td><span class="message-expirationTime datetime"></span></td> </tr> <tr style="margin-bottom: 4pt"> <td style="width: 10em; vertical-align: top"><span style="font-weight: bold;">MIME Type:</span></td> diff --git a/java/systests/src/main/java/org/apache/qpid/systest/rest/MessagesRestTest.java b/java/systests/src/main/java/org/apache/qpid/systest/rest/MessagesRestTest.java index fb6bfca1d8..d8dc7f35c0 100644 --- a/java/systests/src/main/java/org/apache/qpid/systest/rest/MessagesRestTest.java +++ b/java/systests/src/main/java/org/apache/qpid/systest/rest/MessagesRestTest.java @@ -62,7 +62,7 @@ public class MessagesRestTest extends QpidRestTestCase _session = _connection.createSession(true, Session.SESSION_TRANSACTED); String queueName = getTestQueueName(); Destination queue = _session.createQueue(queueName); - _session.createConsumer(queue); + _session.createConsumer(queue).close(); _producer = _session.createProducer(queue); _ttl = TimeUnit.DAYS.toMillis(1); @@ -318,7 +318,7 @@ public class MessagesRestTest extends QpidRestTestCase { if (even) { - assertEquals("Unexpected message attribute expirationTime", 0, message.get("expirationTime")); + assertNull("Unexpected message attribute expirationTime", message.get("expirationTime")); assertEquals("Unexpected message attribute priority", 4, message.get("priority")); assertEquals("Unexpected message attribute persistent", Boolean.TRUE, message.get("persistent")); } @@ -348,7 +348,6 @@ public class MessagesRestTest extends QpidRestTestCase assertNotNull("Unexpected message attribute mimeType", message.get("mimeType")); assertNotNull("Unexpected message attribute userId", message.get("userId")); assertNotNull("Message priority cannot be null", message.get("priority")); - assertNotNull("Message expirationTime cannot be null", message.get("expirationTime")); assertNotNull("Message persistent cannot be null", message.get("persistent")); } } |