You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kw...@apache.org on 2016/09/05 08:43:06 UTC

svn commit: r1759209 - in /qpid/java/trunk: broker-core/src/main/java/org/apache/qpid/server/model/ broker-core/src/main/java/org/apache/qpid/server/queue/ broker-plugins/management-http/src/main/java/resources/ broker-plugins/management-http/src/main/...

Author: kwall
Date: Mon Sep  5 08:43:06 2016
New Revision: 1759209

URL: http://svn.apache.org/viewvc?rev=1759209&view=rev
Log:
QPID-7380: [Java Broker] Allow non-confidential message info to be viewed from management.

Modified:
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java
    qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/JsonRest.js
    qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Queue.js
    qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/group/Group.js
    qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/showMessage.js
    qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/showMessage.html

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java?rev=1759209&r1=1759208&r2=1759209&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java Mon Sep  5 08:43:06 2016
@@ -298,11 +298,14 @@ public interface Queue<X extends Queue<X
     Content getMessageContent(@Param(name = "messageId") long messageId,
                               @Param(name = "limit", defaultValue = "-1", description = "Number of bytes to return") long limit);
 
-    @ManagedOperation(nonModifying = true, secure = true)
-    List<MessageInfo> getMessageInfo(@Param(name = "first", defaultValue = "-1") int first, @Param(name = "last", defaultValue = "-1") int last);
+    @ManagedOperation(nonModifying = true, paramRequiringSecure = "includeHeaders")
+    List<MessageInfo> getMessageInfo(@Param(name = "first", defaultValue = "-1") int first,
+                                     @Param(name = "last",  defaultValue = "-1") int last,
+                                     @Param(name = "includeHeaders", defaultValue = "false") boolean includeHeaders);
 
-    @ManagedOperation(nonModifying = true, secure = true)
-    MessageInfo getMessageInfoById(@Param(name = "messageId") long messageId);
+    @ManagedOperation(nonModifying = true, paramRequiringSecure = "includeHeaders")
+    MessageInfo getMessageInfoById(@Param(name = "messageId") long messageId,
+                                   @Param(name = "includeHeaders", defaultValue = "true") boolean includeHeaders);
 
     boolean isExclusive();
 

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java?rev=1759209&r1=1759208&r2=1759209&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java Mon Sep  5 08:43:06 2016
@@ -3538,18 +3538,18 @@ public abstract class AbstractQueue<X ex
     }
 
     @Override
-    public List<MessageInfo> getMessageInfo(int first, int last)
+    public List<MessageInfo> getMessageInfo(int first, int last, boolean includeHeaders)
     {
-        final MessageCollector messageCollector = new MessageCollector(first, last, false);
+        final MessageCollector messageCollector = new MessageCollector(first, last, includeHeaders);
         visit(messageCollector);
         return messageCollector.getMessages();
 
     }
 
     @Override
-    public MessageInfo getMessageInfoById(final long messageId)
+    public MessageInfo getMessageInfoById(final long messageId, boolean includeHeaders)
     {
-        final MessageFinder messageFinder = new MessageFinder(messageId);
+        final MessageFinder messageFinder = new MessageFinder(messageId, includeHeaders);
         visit(messageFinder);
         return messageFinder.getMessageInfo();
     }
@@ -3557,11 +3557,13 @@ public abstract class AbstractQueue<X ex
     private class MessageFinder implements QueueEntryVisitor
     {
         private final long _messageNumber;
+        private final boolean _includeHeaders;
         private MessageInfo _messageInfo;
 
-        private MessageFinder(long messageNumber)
+        private MessageFinder(long messageNumber, final boolean includeHeaders)
         {
             _messageNumber = messageNumber;
+            _includeHeaders = includeHeaders;
         }
 
         @Override
@@ -3572,7 +3574,7 @@ public abstract class AbstractQueue<X ex
             {
                 if (_messageNumber == message.getMessageNumber())
                 {
-                    _messageInfo = new MessageInfoImpl(entry, true);
+                    _messageInfo = new MessageInfoImpl(entry, _includeHeaders);
                 }
             }
             return false;

Modified: qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/JsonRest.js
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/JsonRest.js?rev=1759209&r1=1759208&r2=1759209&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/JsonRest.js (original)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/JsonRest.js Mon Sep  5 08:43:06 2016
@@ -31,6 +31,7 @@ define(["dojo/_base/lang", "dojo/json",
             queryOperation: null,
             modelObject: null,
             management: null,
+            queryParams: null,
 
             constructor: function (options)
             {
@@ -38,6 +39,7 @@ define(["dojo/_base/lang", "dojo/json",
                 this.management = options.management;
                 this.modelObject = options.modelObject;
                 this.queryOperation = options.queryOperation;
+                this.queryParams = options.queryParams;
                 declare.safeMixin(this, options);
             },
 
@@ -48,7 +50,7 @@ define(["dojo/_base/lang", "dojo/json",
 
             query: function (query, options)
             {
-                query = query || {};
+                query = lang.mixin(query || {}, this.queryParams);
                 options = options || {};
                 var headers = lang.mixin({Accept: this.accepts}, this.headers, options.headers);
 

Modified: qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Queue.js
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Queue.js?rev=1759209&r1=1759208&r2=1759209&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Queue.js (original)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Queue.js Mon Sep  5 08:43:06 2016
@@ -108,7 +108,8 @@ define(["dojo/_base/declare",
                     var myStore = new JsonRest({
                         management: that.management,
                         modelObject: that.modelObj,
-                        queryOperation: "getMessageInfo"
+                        queryOperation: "getMessageInfo",
+                        queryParams : {includeHeaders: false}
                     });
                     var messageGridDiv = query(".messages", contentPane.containerNode)[0];
                     that.dataStore = new ObjectStore({objectStore: myStore});

Modified: qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/group/Group.js
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/group/Group.js?rev=1759209&r1=1759208&r2=1759209&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/group/Group.js (original)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/group/Group.js Mon Sep  5 08:43:06 2016
@@ -29,7 +29,6 @@ define(["dojo/parser",
         "qpid/common/util",
         "qpid/common/formatter",
         "qpid/common/UpdatableStore",
-        "dojo/store/JsonRest",
         "dojox/grid/EnhancedGrid",
         "dojo/data/ObjectStore",
         "qpid/management/group/addGroupMember",
@@ -49,7 +48,6 @@ define(["dojo/parser",
               util,
               formatter,
               UpdatableStore,
-              JsonRest,
               EnhancedGrid,
               ObjectStore,
               addGroupMember,

Modified: qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/showMessage.js
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/showMessage.js?rev=1759209&r1=1759208&r2=1759209&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/showMessage.js (original)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/showMessage.js Mon Sep  5 08:43:06 2016
@@ -84,7 +84,7 @@ define(["dojo/dom",
 
         };
 
-        showMessage.populateShowMessage = function (management, modelObj, data)
+        showMessage.populateShowMessage = function (management, modelObj, data, includesConfidential)
         {
 
             // clear fields set by previous invocation.
@@ -140,61 +140,103 @@ define(["dojo/dom",
                 }
             }
 
-            var contentModelObj = {
-                name: "getMessageContent",
-                parent: modelObj,
-                type: modelObj.type
-            };
-            var parameters = {messageId: data.id};
-            var url = management.buildObjectURL(contentModelObj, parameters);
-
-            var href = query('a#message-download', this.dialogNode)[0];
-            href.title = url;
-            connect.connect(href, 'onclick', function ()
+            var preview = query('#preview', this.dialogNode)[0];
+            var confidentialInformationWarning = query('#confidentialInformationWarning', this.dialogNode)[0];
+            confidentialInformationWarning.style.display = includesConfidential ? "none" : "block";
+            var confidentialCells = query('.confidential', this.dialogNode);
+            for(var i = 0; i < confidentialCells.length; i++)
+            {
+                confidentialCells[i].style.display = includesConfidential ?  "block" : "none";
+            }
+            var confidentialPlaceholderCells = query('.confidentialPlaceholder', this.dialogNode);
+            for(var i = 0; i < confidentialPlaceholderCells.length; i++)
             {
-                management.download(contentModelObj, parameters);
-            });
+                confidentialPlaceholderCells[i].style.display = includesConfidential ?  "none" : "block";
+            }
 
-            var preview = query('#preview', this.dialogNode)[0];
-            if (data.mimeType && data.mimeType.match(/text\/.*/))
+            if (includesConfidential)
             {
-                var limit = 1024;
-                preview.style.display = "block";
-                var previewDetail = query('#preview-detail', preview)[0];
-                previewDetail.innerHTML = (limit < data.size
-                    ? 'showing the first ' + limit + ' of ' + data.size + ' bytes'
-                    : 'showing all ' + data.size + ' bytes');
-                var previewContent = query("#message-content-preview", preview)[0];
-                var previewParameters = lang.mixin({limit: limit}, parameters);
-                management.load(contentModelObj, previewParameters, {
-                        handleAs: "text",
-                        headers: {"Content-Type": data.mimeType}
-                    })
-                    .then(function (content)
-                    {
-                        previewContent.innerHTML = encode(content);
-                        registry.byId("showMessage")
-                            .show();
-                    });
+                var contentModelObj = {
+                    name: "getMessageContent",
+                    parent: modelObj,
+                    type: modelObj.type
+                };
+                var parameters = {messageId: data.id};
+                var url = management.buildObjectURL(contentModelObj, parameters);
+
+                var href = query('a#message-download', this.dialogNode)[0];
+                href.title = url;
+                connect.connect(href, 'onclick', function ()
+                {
+                    management.download(contentModelObj, parameters);
+                });
+
+                if (data.mimeType && data.mimeType.match(/text\/.*/))
+                {
+                    var limit = 1024;
+                    preview.style.display = "block";
+                    var previewDetail = query('#preview-detail', preview)[0];
+                    previewDetail.innerHTML = (limit < data.size
+                        ? 'showing the first ' + limit + ' of ' + data.size + ' bytes'
+                        : 'showing all ' + data.size + ' bytes');
+                    var previewContent = query("#message-content-preview", preview)[0];
+                    var previewParameters = lang.mixin({limit: limit}, parameters);
+                    management.load(contentModelObj, previewParameters, {
+                            handleAs: "text",
+                            headers: {"Content-Type": data.mimeType}
+                        })
+                        .then(function (content)
+                        {
+                            previewContent.innerHTML = encode(content);
+                            registry.byId("showMessage") .show();
+                        });
+                }
+                else
+                {
+                    preview.style.display = "none";
+                    registry.byId("showMessage").show();
+                }
             }
             else
             {
-                preview.style.display = "none";
-                registry.byId("showMessage")
-                    .show();
+                registry.byId("showMessage").show()
             }
         };
 
         showMessage.show = function (management, modelObj, message)
         {
-            management.load({
-                    name: "getMessageInfoById",
-                    parent: modelObj,
-                    type: modelObj.type
-                }, {messageId: message.id})
+            var obj = {
+                name: "getMessageInfoById",
+                parent: modelObj,
+                type: modelObj.type
+            };
+            management.load(obj,
+                {
+                    messageId: message.id,
+                    includeHeaders: true
+                })
                 .then(function (data)
                 {
-                    showMessage.populateShowMessage(management, modelObj, data);
+                    showMessage.populateShowMessage(management, modelObj, data, true);
+                },
+                function(e)
+                {
+                    if (e.response && e.response.status == 403)
+                    {
+                        management.load(obj,
+                                        {
+                                            messageId: message.id,
+                                            includeHeaders: false
+                                        })
+                            .then(function(data)
+                            {
+                                showMessage.populateShowMessage(management, modelObj, data, false);
+                            });
+                    }
+                    else
+                    {
+                        management.errorHandler(e);
+                    }
                 });
         };
 

Modified: qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/showMessage.html
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/showMessage.html?rev=1759209&r1=1759208&r2=1759209&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/showMessage.html (original)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/showMessage.html Mon Sep  5 08:43:06 2016
@@ -18,7 +18,11 @@
 <div class="dijitHidden">
     <div data-dojo-type="dijit.Dialog" style="width:600px;" data-dojo-props="title:'View Message'" id="showMessage">
 
-    <table style="border: 0; width: 100%">
+        <div id="confidentialInformationWarning" class="infoMessage">Confidential message information (headers
+            and content) is not available on an insecure transport. Switch to a secure management transport (i.e. one
+            that uses HTTPS) to see the message's full details.</div>
+
+        <table style="border: 0; width: 100%">
         <tr style="margin-bottom: 4pt">
             <td style="width: 10em; vertical-align: top"><span style="font-weight: bold;">Message Number:</span></td>
             <td><span class="message-id"></span></td>
@@ -73,16 +77,24 @@
         </tr>
         <tr style="margin-bottom: 4pt">
             <td style="width: 10em; vertical-align: top"><span style="font-weight: bold;">Headers:</span></td>
-            <td><div class="message-headers map"></div></td>
+            <td>
+                <div class="message-headers map confidential"></div>
+                <div class="confidentialPlaceholder highlightedText">Not available</div>
+            </td>
         </tr>
 
         <tr style="margin-bottom: 4pt">
             <td style="width: 10em; vertical-align: top"><span style="font-weight: bold;">Content:</span></td>
-            <td><a href="#" id="message-download">Download</a><br/>
-                <div id="preview" class="fillRemaining">
-                    Preview (<span id="preview-detail"></span>):<br/>
-                    <textarea id="message-content-preview" readonly rows="5" style="width: 100%"></textarea>
+            <td>
+                <div class="confidential">
+                    <a href="#" id="message-download">Download</a>
+                    <br/>
+                    <div id="preview" class="fillRemaining">
+                        Preview (<span id="preview-detail"></span>):<br/>
+                        <textarea id="message-content-preview" readonly rows="5" style="width: 100%"></textarea>
+                    </div>
                 </div>
+                <div class="confidentialPlaceholder highlightedText">Not available</div>
             </td>
         </tr>
     </table>



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