summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Wall <kwall@apache.org>2013-08-05 11:07:08 +0000
committerKeith Wall <kwall@apache.org>2013-08-05 11:07:08 +0000
commit43c9514c20881598736ad26b09c5102cadb01ff3 (patch)
tree22c00297d74c26561f6b21abca70387ec0b1a4bb
parentdf8857989079b2129b6e9bd43065c7ed6420e6ff (diff)
downloadqpid-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
-rw-r--r--java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageServlet.java17
-rw-r--r--java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/showMessage.js21
-rw-r--r--java/broker-plugins/management-http/src/main/java/resources/showMessage.html2
-rw-r--r--java/systests/src/main/java/org/apache/qpid/systest/rest/MessagesRestTest.java5
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"));
}
}