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