Author: orudyy
Date: Thu Jul  2 16:51:38 2015
New Revision: 1688862

URL: http://svn.apache.org/r1688862
Log:
QPID-6618: Allow on-line access to the log entries cached by BrokerMemoryLogger

Added:
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logger/LogViewer.js
      - copied, changed from r1688825, 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logs/LogViewer.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/logger/memory/showLogViewer.html
      - copied, changed from r1688825, 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/logs/showLogViewer.html
Removed:
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/LogRecordsServlet.java
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logs/LogViewer.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/logs/showLogViewer.html
    
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/LogRecordsRestTest.java
    
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/acl/LogViewerACLTest.java
Modified:
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerMemoryLogger.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerMemoryLoggerImpl.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/LogRecord.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/RecordEventAppender.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
    
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/BrokerLoggerTest.java
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logger/brokerlogger/memory/show.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/showBroker.html
    
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java
    qpid/java/trunk/test-profiles/JavaExcludes

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerMemoryLogger.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerMemoryLogger.java?rev=1688862&r1=1688861&r2=1688862&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerMemoryLogger.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerMemoryLogger.java
 Thu Jul  2 16:51:38 2015
@@ -20,9 +20,13 @@
  */
 package org.apache.qpid.server.logging;
 
+import java.util.Collection;
+
 import org.apache.qpid.server.model.BrokerLogger;
 import org.apache.qpid.server.model.ManagedAttribute;
 import org.apache.qpid.server.model.ManagedObject;
+import org.apache.qpid.server.model.ManagedOperation;
+import org.apache.qpid.server.model.Param;
 
 @ManagedObject( category = false, type = BrokerMemoryLogger.TYPE)
 public interface BrokerMemoryLogger<X extends BrokerMemoryLogger<X>> extends 
BrokerLogger<X>
@@ -32,4 +36,7 @@ public interface BrokerMemoryLogger<X ex
     @ManagedAttribute( defaultValue = "4096" )
     int getMaxRecords();
 
+    @ManagedOperation(nonModifying = true)
+    Collection<LogRecord> getLogEntries(@Param(name="lastLogId", 
defaultValue="0") long lastLogId);
+
 }

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerMemoryLoggerImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerMemoryLoggerImpl.java?rev=1688862&r1=1688861&r2=1688862&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerMemoryLoggerImpl.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerMemoryLoggerImpl.java
 Thu Jul  2 16:51:38 2015
@@ -20,6 +20,10 @@
  */
 package org.apache.qpid.server.logging;
 
+import java.security.AccessControlException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
 import java.util.Map;
 
 import ch.qos.logback.classic.spi.ILoggingEvent;
@@ -32,9 +36,9 @@ import org.apache.qpid.server.model.Mana
 
 public class BrokerMemoryLoggerImpl extends 
AbstractBrokerLogger<BrokerMemoryLoggerImpl> implements 
BrokerMemoryLogger<BrokerMemoryLoggerImpl>
 {
-
     @ManagedAttributeField
     private int _maxRecords;
+    private LogRecorder _logRecorder;
 
     @ManagedObjectFactoryConstructor
     protected BrokerMemoryLoggerImpl(final Map<String, Object> attributes, 
Broker<?> broker)
@@ -51,7 +55,32 @@ public class BrokerMemoryLoggerImpl exte
     @Override
     protected Appender<ILoggingEvent> createAppenderInstance(Context context)
     {
-        return new RecordEventAppender(getMaxRecords());
+        if (_logRecorder != null)
+        {
+            throw new IllegalStateException("RecordEventAppender is already 
created");
+        }
+        RecordEventAppender appender =  new 
RecordEventAppender(getMaxRecords());
+        _logRecorder = new LogRecorder(appender);
+        return appender;
+    }
+
+    @Override
+    public Collection<LogRecord> getLogEntries(long lastLogId)
+    {
+        if (!getSecurityManager().authoriseLogsAccess(this))
+        {
+            throw new AccessControlException("Access to log entries is 
denied");
+        }
+
+        List<LogRecord> logRecords = new ArrayList<>();
+        for(LogRecord record : _logRecorder)
+        {
+            if (record.getId() > lastLogId)
+            {
+                logRecords.add(record);
+            }
+        }
+        return logRecords;
     }
 
 }

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/LogRecord.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/LogRecord.java?rev=1688862&r1=1688861&r2=1688862&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/LogRecord.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/LogRecord.java
 Thu Jul  2 16:51:38 2015
@@ -21,13 +21,15 @@
 package org.apache.qpid.server.logging;
 
 import ch.qos.logback.classic.spi.ILoggingEvent;
+import org.apache.qpid.server.model.ManagedAttributeValueType;
 
+@ManagedAttributeValueType
 public class LogRecord
 {
     private final ILoggingEvent _event;
-    private final int _id;
+    private final long _id;
 
-    public LogRecord(int id, ILoggingEvent event)
+    public LogRecord(long id, ILoggingEvent event)
     {
         _id = id;
         _event = event;

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/RecordEventAppender.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/RecordEventAppender.java?rev=1688862&r1=1688861&r2=1688862&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/RecordEventAppender.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/RecordEventAppender.java
 Thu Jul  2 16:51:38 2015
@@ -20,6 +20,8 @@
  */
 package org.apache.qpid.server.logging;
 
+import java.util.concurrent.atomic.AtomicLong;
+
 import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.AppenderBase;
 import ch.qos.logback.core.helpers.CyclicBuffer;
@@ -29,11 +31,12 @@ public class RecordEventAppender extends
 
     private CyclicBuffer<LogRecord> _buffer;
     private final int _size;
-    private volatile int _recordId;
+    private AtomicLong _recordId;
 
     RecordEventAppender(final int size)
     {
         _size = size;
+        _recordId = new AtomicLong();
     }
 
     public void start()
@@ -53,7 +56,7 @@ public class RecordEventAppender extends
     {
         if (isStarted())
         {
-            _buffer.add(new LogRecord(_recordId++,eventObject));
+            _buffer.add(new LogRecord(_recordId.incrementAndGet(), 
eventObject));
         }
     }
 

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java?rev=1688862&r1=1688861&r2=1688862&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java
 Thu Jul  2 16:51:38 2015
@@ -164,11 +164,6 @@ public interface Broker<X extends Broker
      */
     SecurityManager getSecurityManager();
 
-    /**
-     * TODO: A temporary hack to expose log recorder via broker instance.
-     */
-    LogRecorder getLogRecorder();
-
     VirtualHost<?,?,?> findVirtualHostByName(String name);
 
     VirtualHostNode findDefautVirtualHostNode();

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java?rev=1688862&r1=1688861&r2=1688862&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
 Thu Jul  2 16:51:38 2015
@@ -173,20 +173,6 @@ public class BrokerAdapter extends Abstr
         ch.qos.logback.classic.Logger rootLogger =
                 (ch.qos.logback.classic.Logger) 
LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
 
-        if(_logRecorder == null)
-        {
-            Collection<BrokerLogger> loggers = getChildren(BrokerLogger.class);
-            for (BrokerLogger<?> logger : loggers)
-            {
-                if (logger instanceof BrokerMemoryLogger)
-                {
-                    Appender appender = 
rootLogger.getAppender(logger.getName());
-                    _logRecorder = new LogRecorder((RecordEventAppender) 
appender);
-                    break;
-                }
-            }
-        }
-
         StartupAppender startupAppender = (StartupAppender) 
rootLogger.getAppender(StartupAppender.class.getName());
         if (startupAppender != null)
         {
@@ -628,12 +614,6 @@ public class BrokerAdapter extends Abstr
     }
 
     @Override
-    public LogRecorder getLogRecorder()
-    {
-        return _logRecorder;
-    }
-
-    @Override
     public VirtualHost<?,?,?> findVirtualHostByName(String name)
     {
         for (VirtualHostNode<?> virtualHostNode : 
getChildren(VirtualHostNode.class))

Modified: 
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/BrokerLoggerTest.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/BrokerLoggerTest.java?rev=1688862&r1=1688861&r2=1688862&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/BrokerLoggerTest.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/BrokerLoggerTest.java
 Thu Jul  2 16:51:38 2015
@@ -21,14 +21,13 @@
 package org.apache.qpid.server.logging;
 
 import static org.apache.qpid.server.util.LoggerTestHelper.assertLoggedEvent;
+import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
 import ch.qos.logback.classic.Level;
@@ -41,6 +40,7 @@ import org.apache.qpid.server.configurat
 import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.model.BrokerLoggerFilter;
 import org.apache.qpid.server.model.BrokerModel;
+import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.Model;
 import org.apache.qpid.server.model.State;
 import org.apache.qpid.server.security.SecurityManager;
@@ -55,6 +55,7 @@ public class BrokerLoggerTest extends Qp
     private AbstractBrokerLogger<?> _brokerLogger;
     private ListAppender _loggerAppender;
     private TaskExecutor _taskExecutor;
+    private Broker<?> _broker;
 
     @Override
     public void setUp() throws Exception
@@ -68,16 +69,18 @@ public class BrokerLoggerTest extends Qp
 
         Model model = BrokerModel.getInstance();
 
-        org.apache.qpid.server.security.SecurityManager securityManager = 
mock(SecurityManager.class);
-        Broker<?> broker = mock(Broker.class);
-        when(broker.getSecurityManager()).thenReturn(securityManager);
-        when(broker.getModel()).thenReturn(model);
-        when(broker.getChildExecutor()).thenReturn(_taskExecutor);
-        doReturn(Broker.class).when(broker).getCategoryClass();
+        SecurityManager securityManager = mock(SecurityManager.class);
+        
when(securityManager.authoriseLogsAccess(any(ConfiguredObject.class))).thenReturn(true);
+
+        _broker = mock(Broker.class);
+        when(_broker.getSecurityManager()).thenReturn(securityManager);
+        when(_broker.getModel()).thenReturn(model);
+        when(_broker.getChildExecutor()).thenReturn(_taskExecutor);
+        doReturn(Broker.class).when(_broker).getCategoryClass();
 
         Map<String, Object> attributes = new HashMap<>();
         attributes.put("name", APPENDER_NAME);
-        _brokerLogger = new AbstractBrokerLogger(attributes, broker)
+        _brokerLogger = new AbstractBrokerLogger(attributes, _broker)
         {
             @Override
             public Appender<ILoggingEvent> createAppenderInstance(Context 
context)
@@ -88,6 +91,8 @@ public class BrokerLoggerTest extends Qp
         _brokerLogger.open();
     }
 
+
+
     @Override
     public void tearDown() throws Exception
     {
@@ -159,4 +164,58 @@ public class BrokerLoggerTest extends Qp
         assertNull("Appender found when it should have been deleted", 
rootLogger.getAppender(_brokerLogger.getName()));
     }
 
+    public void testBrokerMemoryLoggerGetLogEntries()
+    {
+        Map<String, Object> attributes = new HashMap<>();
+        attributes.put(BrokerMemoryLogger.NAME, getTestName());
+        attributes.put(ConfiguredObject.TYPE, BrokerMemoryLogger.TYPE);
+        BrokerMemoryLogger logger = new 
BrokerMemoryLoggerImplFactory().createInstance(attributes, _broker);
+        try
+        {
+            logger.open();
+
+            Map<String, Object> filterAttributes = new HashMap<>();
+            filterAttributes.put(BrokerNameAndLevelFilter.NAME, "1");
+            filterAttributes.put(BrokerNameAndLevelFilter.LEVEL, LogLevel.ALL);
+            filterAttributes.put(BrokerNameAndLevelFilter.LOGGER_NAME, "");
+            filterAttributes.put(ConfiguredObject.TYPE, 
BrokerNameAndLevelFilter.TYPE);
+            logger.createChild(BrokerLoggerFilter.class, filterAttributes);
+
+            Logger messageLogger = 
LoggerFactory.getLogger("org.apache.qpid.test");
+            messageLogger.debug("test message 1");
+            Collection<LogRecord> logRecords = logger.getLogEntries(0);
+
+            LogRecord foundRecord = findLogRecord("test message 1", 
logRecords);
+
+            assertNotNull("Record is not found", foundRecord);
+
+            messageLogger.debug("test message 2");
+
+            Collection<LogRecord> logRecords2 = 
logger.getLogEntries(foundRecord.getId());
+            for (LogRecord record: logRecords2)
+            {
+                assertTrue("Record id " + record.getId() + " is below " + 
foundRecord.getId(), record.getId() > foundRecord.getId());
+            }
+
+            LogRecord foundRecord2 = findLogRecord("test message 2", 
logRecords2);
+
+            assertNotNull("Record2 is not found", foundRecord2);
+        }
+        finally
+        {
+            logger.delete();
+        }
+    }
+
+    private LogRecord findLogRecord(String message, Collection<LogRecord> 
logRecords)
+    {
+        for (LogRecord record: logRecords)
+        {
+            if (message.equals(record.getMessage()))
+            {
+                return record;
+            }
+        }
+        return null;
+    }
 }

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java?rev=1688862&r1=1688861&r2=1688862&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
 Thu Jul  2 16:51:38 2015
@@ -69,7 +69,6 @@ import org.apache.qpid.server.management
 import org.apache.qpid.server.management.plugin.servlet.FileServlet;
 import org.apache.qpid.server.management.plugin.servlet.RootServlet;
 import org.apache.qpid.server.management.plugin.servlet.rest.ApiDocsServlet;
-import org.apache.qpid.server.management.plugin.servlet.rest.LogRecordsServlet;
 import 
org.apache.qpid.server.management.plugin.servlet.rest.LoggedOnUserPreferencesServlet;
 import org.apache.qpid.server.management.plugin.servlet.rest.LogoutServlet;
 import 
org.apache.qpid.server.management.plugin.servlet.rest.MessageContentServlet;
@@ -316,9 +315,6 @@ public class HttpManagement extends Abst
         root.addServlet(new ServletHolder(new MessageContentServlet()), 
"/service/message-content/*");
         root.addServlet(new ServletHolder(new QueueReportServlet()), 
"/service/queuereport/*");
 
-
-        root.addServlet(new ServletHolder(new LogRecordsServlet()), 
"/service/logrecords");
-
         root.addServlet(new ServletHolder(new MetaDataServlet(getModel())), 
"/service/metadata");
 
         root.addServlet(new ServletHolder(new SaslServlet()), "/service/sasl");

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js?rev=1688862&r1=1688861&r2=1688862&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js
 Thu Jul  2 16:51:38 2015
@@ -81,12 +81,6 @@ define(["dojo/parser",
                             {
                             that.brokerUpdater = new 
BrokerUpdater(contentPane.containerNode, that.modelObj, that.controller);
 
-                            var logViewerButton = query(".logViewer", 
contentPane.containerNode)[0];
-                            registry.byNode(logViewerButton).on("click", 
function(evt){
-                              that.controller.show("logViewer", "");
-                            });
-
-
                             var addProviderButton = 
query(".addAuthenticationProvider", contentPane.containerNode)[0];
                             
connect.connect(registry.byNode(addProviderButton), "onClick", function(evt){
                                 
addAuthenticationProvider.show(that.management, that.modelObj);

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js?rev=1688862&r1=1688861&r2=1688862&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js
 Thu Jul  2 16:51:38 2015
@@ -36,14 +36,13 @@ define(["dojo/dom",
         "qpid/management/AccessControlProvider",
         "qpid/management/Port",
         "qpid/management/Plugin",
-        "qpid/management/logs/LogViewer",
         "qpid/management/PreferencesProvider",
         "qpid/management/VirtualHostNode",
         "qpid/management/Logger",
         "dojo/ready",
         "dojo/domReady!"],
        function (dom, registry, ContentPane, CheckBox, entities, Broker, 
VirtualHost, Exchange, Queue, Connection, AuthProvider,
-                 GroupProvider, Group, KeyStore, TrustStore, 
AccessControlProvider, Port, Plugin, LogViewer, PreferencesProvider, 
VirtualHostNode, Logger, ready) {
+                 GroupProvider, Group, KeyStore, TrustStore, 
AccessControlProvider, Port, Plugin, PreferencesProvider, VirtualHostNode, 
Logger, ready) {
            var controller = {};
 
            var constructors = { broker: Broker, virtualhost: VirtualHost, 
exchange: Exchange,
@@ -51,7 +50,7 @@ define(["dojo/dom",
                                 authenticationprovider: AuthProvider, 
groupprovider: GroupProvider,
                                 group: Group, keystore: KeyStore, truststore: 
TrustStore,
                                 accesscontrolprovider: AccessControlProvider, 
port: Port,
-                                plugin: Plugin, logViewer: LogViewer, 
preferencesprovider: PreferencesProvider,
+                                plugin: Plugin, preferencesprovider: 
PreferencesProvider,
                                 virtualhostnode: VirtualHostNode, 
brokerlogger: Logger, virtualhostlogger: Logger};
 
            var tabDiv = dom.byId("managedViews");

Copied: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logger/LogViewer.js
 (from r1688825, 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logs/LogViewer.js)
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logger/LogViewer.js?p2=qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logger/LogViewer.js&p1=qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logs/LogViewer.js&r1=1688825&r2=1688862&rev=1688862&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logs/LogViewer.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logger/LogViewer.js
 Thu Jul  2 16:51:38 2015
@@ -25,9 +25,9 @@ define(["dojo/_base/xhr",
         "dijit/registry",
         "qpid/common/grid/GridUpdater",
         "qpid/common/grid/UpdatableGrid",
-        "dojo/text!../../../logs/showLogViewer.html",
+        "dojo/text!logger/memory/showLogViewer.html",
         "dojo/domReady!"],
-       function (xhr, parser, query, locale, registry, GridUpdater, 
UpdatableGrid, markup) {
+       function (xhr, parser, query, locale, registry, GridUpdater, 
UpdatableGrid, template) {
 
            var defaulGridRowLimit = 4096;
            var currentTimeZone;
@@ -41,34 +41,19 @@ define(["dojo/_base/xhr",
              return data;
            }
 
-           function LogViewer(name, parent, controller) {
-               var self = this;
-               this.management = controller.management;
-               this.name = name;
+           function LogViewer(loggerModelObj, management, containerNode) {
+               var that = this;
+               this.management = management;
+               this.modelObj = {type: loggerModelObj.type, name: 
"getLogEntries", parent: loggerModelObj};
                this.lastLogId = 0;
-               this.contentPane = null;
-               this.downloadLogsButton = null;
-               this.downloadLogDialog = null;
+               this.containerNode = containerNode;
+               containerNode.innerHTML = template;
+               
parser.parse(containerNode).then(function(instances){that._buildGrid();});
            }
 
-           LogViewer.prototype.getTitle = function() {
-               return "Log Viewer";
-           };
-
-           LogViewer.prototype.open = function(contentPane) {
-               var self = this;
-               this.contentPane = contentPane;
-               this.contentPane.containerNode.innerHTML = markup;
-
-               
parser.parse(this.contentPane.containerNode).then(function(instances){self._postParse();});
-           };
-           LogViewer.prototype._postParse = function()
-           {
-               this._buildGrid();
-           };
 
            LogViewer.prototype._buildGrid = function() {
-               var self = this;
+               var that = this;
                var userPreferences = this.management.userPreferences;
                currentTimeZone = userPreferences.getTimeZoneDescription();
                var gridStructure = [
@@ -104,11 +89,11 @@ define(["dojo/_base/xhr",
                    },
                    { name: "Level", field: "level", width: "50px", datatype: 
"string", autoComplete: true, hidden: true},
                    { name: "Logger", field: "logger", width: "150px", 
datatype: "string", autoComplete: false, hidden: true},
-                   { name: "Thread", field: "thread", width: "100px", 
datatype: "string", hidden: true},
+                   { name: "Thread", field: "threadName", width: "100px", 
datatype: "string", hidden: true},
                    { name: "Log Message", field: "message", width: "auto", 
datatype: "string"}
                ];
 
-               var gridNode = query("#broker-logfile", 
this.contentPane.containerNode)[0];
+               var gridNode = query(".logEntries", this.containerNode)[0];
                try
                {
                  var updater = new GridUpdater({
@@ -116,7 +101,7 @@ define(["dojo/_base/xhr",
                      updatable: false,
                      serviceUrl: function()
                      {
-                       return "service/logrecords?lastLogId=" + self.lastLogId;
+                       return that.management.buildObjectURL(that.modelObj, 
{lastLogId: that.lastLogId});
                      },
                      onUpdate: function(items)
                      {
@@ -133,7 +118,7 @@ define(["dojo/_base/xhr",
                          }
                          if (maxId != -1)
                          {
-                           self.lastLogId = maxId
+                           that.lastLogId = maxId
                          }
                        }
                      },
@@ -156,9 +141,9 @@ define(["dojo/_base/xhr",
                   }), gridNode);
                  var onStyleRow = function(row)
                  {
-                   var item = self.grid.getItem(row.index);
+                   var item = that.grid.getItem(row.index);
                    if(item){
-                      var level = self.grid.store.getValue(item, "level", 
null);
+                      var level = that.grid.store.getValue(item, "level", 
null);
                       var changed = false;
                       if(level == "ERROR"){
                           row.customClasses += " redBackground";
@@ -172,7 +157,7 @@ define(["dojo/_base/xhr",
                       }
                       if (changed)
                       {
-                          self.grid.focus.styleRow(row);
+                          that.grid.focus.styleRow(row);
                       }
                    }
                  };
@@ -189,25 +174,6 @@ define(["dojo/_base/xhr",
                }
            };
 
-           LogViewer.prototype.close = function() {
-             this.management.userPreferences.removeListener(this);
-             if (this.grid)
-             {
-                 this.grid.destroy();
-                 this.grid = null;
-             }
-             if (this.downloadLogDialog)
-             {
-                 this.downloadLogDialog.destroy();
-                 this.downloadLogDialog = null;
-             }
-             if (this.downloadLogsButton)
-             {
-                 this.downloadLogsButton.destroy();
-                 this.downloadLogsButton = null;
-             }
-           };
-
            LogViewer.prototype.onPreferencesChange = function(data)
            {
              var userPreferences = this.management.userPreferences;
@@ -219,5 +185,10 @@ define(["dojo/_base/xhr",
              }
            };
 
+           LogViewer.prototype.close = function(data)
+           {
+             this.management.userPreferences.removeListener(this);
+           }
+
            return LogViewer;
        });

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logger/brokerlogger/memory/show.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logger/brokerlogger/memory/show.js?rev=1688862&r1=1688861&r2=1688862&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logger/brokerlogger/memory/show.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logger/brokerlogger/memory/show.js
 Thu Jul  2 16:51:38 2015
@@ -23,14 +23,18 @@ define(["qpid/common/util",
     "dojox/html/entities",
     "dojo/text!logger/memory/show.html",
     "qpid/common/TypeTabExtension",
+    "qpid/management/logger/LogViewer",
     "dojo/domReady!"],
-  function (util, query, entities, template, TypeTabExtension)
+  function (util, query, entities, template, TypeTabExtension, LogViewer)
   {
     function BrokerMemoryLogger(params)
     {
+      this.logViewer = new LogViewer(params.modelObj, params.management, 
params.typeSpecificDetailsNode);
       TypeTabExtension.call(this, params.containerNode, template, 
"BrokerLogger", "Memory", params.metadata, params.data);
     }
 
-    return util.extend(BrokerMemoryLogger, TypeTabExtension);
+    util.extend(BrokerMemoryLogger, TypeTabExtension);
+
+    return BrokerMemoryLogger;
   }
 );

Copied: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/logger/memory/showLogViewer.html
 (from r1688825, 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/logs/showLogViewer.html)
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/logger/memory/showLogViewer.html?p2=qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/logger/memory/showLogViewer.html&p1=qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/logs/showLogViewer.html&r1=1688825&r2=1688862&rev=1688862&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/logs/showLogViewer.html
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/logger/memory/showLogViewer.html
 Thu Jul  2 16:51:38 2015
@@ -19,8 +19,8 @@
  -
  -->
 <div class="logViewer">
-
-    <div id="broker-logfile"></div>
-    <br/>
+  <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Log Viewer'" 
class="clear">
+    <div class="logEntries"></div>
+  </div>
 </div>
 

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/showBroker.html
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/showBroker.html?rev=1688862&r1=1688861&r2=1688862&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/showBroker.html
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/showBroker.html
 Thu Jul  2 16:51:38 2015
@@ -136,7 +136,5 @@
         <button data-dojo-type="dijit.form.Button" 
class="deleteAccessControlProvider">Delete Access Control Provider</button>
     </div>
     <br/>
-    <button data-dojo-type="dijit.form.Button" class="logViewer" 
data-dojo-props="iconClass: 'logViewerIcon'">Log Viewer</button>
-    <br/><br/>
 </div>
 

Modified: 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java?rev=1688862&r1=1688861&r2=1688862&view=diff
==============================================================================
--- 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java
 (original)
+++ 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java
 Thu Jul  2 16:51:38 2015
@@ -892,6 +892,24 @@ public class BrokerACLTest extends QpidR
         getRestTestHelper().submitRequest(loggerPath + "/getAllFiles", "GET", 
HttpServletResponse.SC_FORBIDDEN);
     }
 
+    public void testViewMemoryLoggerEntriesAllowedDenied() throws Exception
+    {
+        final String loggerName = "testMemoryLogger";
+        final String loggerPath = "brokerlogger/" + loggerName;
+
+        getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER);
+
+        Map<String, Object> attributes = new HashMap<>();
+        attributes.put(BrokerLogger.NAME, loggerName);
+        attributes.put(ConfiguredObject.TYPE, BrokerMemoryLogger.TYPE);
+        getRestTestHelper().submitRequest("brokerlogger", "PUT", attributes, 
HttpServletResponse.SC_CREATED);
+
+        getRestTestHelper().submitRequest(loggerPath + 
"/getLogEntries?lastLogId=0", "GET", HttpServletResponse.SC_OK);
+
+        getRestTestHelper().setUsernameAndPassword(DENIED_USER, DENIED_USER);
+        getRestTestHelper().submitRequest(loggerPath + 
"/getLogEntries?lastLogId=0", "GET", HttpServletResponse.SC_FORBIDDEN);
+    }
+
     /* === Broker Logger Filters === */
 
     public void testCreateBrokerLoggerFilterAllowedDenied() throws Exception

Modified: qpid/java/trunk/test-profiles/JavaExcludes
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/test-profiles/JavaExcludes?rev=1688862&r1=1688861&r2=1688862&view=diff
==============================================================================
--- qpid/java/trunk/test-profiles/JavaExcludes (original)
+++ qpid/java/trunk/test-profiles/JavaExcludes Thu Jul  2 16:51:38 2015
@@ -33,8 +33,6 @@ org.apache.qpid.server.protocol.v0_8.Max
 // QPID-6516: replace Log4J with LogBack
 org.apache.qpid.server.jmx.mbeans.LoggingManagementMBeanTest#*
 org.apache.qpid.systest.management.jmx.LoggingManagementTest#*
-org.apache.qpid.systest.rest.acl.LogViewerACLTest#*
-org.apache.qpid.systest.rest.LogRecordsRestTest#*
 org.apache.qpid.util.LogMonitorTest#*
 
 // Test runs for 2 minutes testing that subtraction works



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

Reply via email to