001/*
002 * Copyright (c) 2006-2011 Nuxeo SA (http://nuxeo.com/) and others.
003 *
004 * All rights reserved. This program and the accompanying materials
005 * are made available under the terms of the Eclipse Public License v1.0
006 * which accompanies this distribution, and is available at
007 * http://www.eclipse.org/legal/epl-v10.html
008 *
009 * Contributors:
010 *     Nuxeo - initial API and implementation
011 *
012 * $Id$
013 */
014package org.nuxeo.ecm.core.management.events;
015
016import org.nuxeo.ecm.core.event.EventServiceAdmin;
017import org.nuxeo.ecm.core.event.impl.EventListenerDescriptor;
018import org.nuxeo.ecm.core.event.impl.EventListenerList;
019import org.nuxeo.runtime.api.Framework;
020
021/**
022 * Monitoring MBean implementation.
023 *
024 * @author Thierry Delprat
025 */
026public class EventMonitoring implements EventMonitoringMBean {
027
028    private static EventServiceAdmin getAdminService() {
029        return Framework.getLocalService(EventServiceAdmin.class);
030    }
031
032    @Override
033    public boolean isAsyncHandlersTrackingEnabled() {
034        return EventStatsHolder.isCollectAsyncHandlersExecTime();
035    }
036
037    @Override
038    public void setAsyncHandlersTrackingEnabled(boolean collectAsyncHandlersExecTime) {
039        EventStatsHolder.setCollectAsyncHandlersExecTime(collectAsyncHandlersExecTime);
040    }
041
042    @Override
043    public boolean isSyncHandlersTrackingEnabled() {
044        return EventStatsHolder.isCollectSyncHandlersExecTime();
045    }
046
047    @Override
048    public void setSyncHandlersTrackingEnabled(boolean collectSyncHandlersExecTime) {
049        EventStatsHolder.setCollectSyncHandlersExecTime(collectSyncHandlersExecTime);
050    }
051
052    @Override
053    public int getActiveThreadsCount() {
054        return getAdminService().getActiveThreadsCount();
055    }
056
057    @Override
058    public int getEventsInQueueCount() {
059        return getAdminService().getEventsInQueueCount();
060    }
061
062    @Override
063    public String getAsyncHandlersExecTime() {
064        return EventStatsHolder.getAsyncHandlersExecTime();
065    }
066
067    @Override
068    public String getSyncHandlersExecTime() {
069        return EventStatsHolder.getSyncHandlersExecTime();
070    }
071
072    @Override
073    public boolean isBlockAsyncHandlers() {
074        return getAdminService().isBlockAsyncHandlers();
075    }
076
077    @Override
078    public void setBlockAsyncHandlers(boolean blockAsyncHandlers) {
079        getAdminService().setBlockAsyncHandlers(blockAsyncHandlers);
080    }
081
082    @Override
083    public boolean isBlockSyncPostCommitHandlers() {
084        return getAdminService().isBlockSyncPostCommitHandlers();
085    }
086
087    @Override
088    public void setBlockSyncPostCommitHandlers(boolean blockSyncPostCommitHandlers) {
089        getAdminService().setBlockSyncPostCommitHandlers(blockSyncPostCommitHandlers);
090    }
091
092    @Override
093    public void resetHandlersExecTime() {
094        EventStatsHolder.resetHandlersExecTime();
095    }
096
097    @Override
098    public String getListenersConfig() {
099
100        EventListenerList listenerList = getAdminService().getListenerList();
101        StringBuilder sb = new StringBuilder();
102        for (EventListenerDescriptor desc : listenerList.getAsyncPostCommitListenersDescriptors()) {
103            sb.append(desc.getName());
104            sb.append(" - Async PostCommit - ");
105            sb.append(desc.isEnabled());
106            sb.append("\n");
107        }
108        for (EventListenerDescriptor desc : listenerList.getSyncPostCommitListenersDescriptors()) {
109            sb.append(desc.getName());
110            sb.append(" - Sync PostCommit - ");
111            sb.append(desc.isEnabled());
112            sb.append("\n");
113        }
114        for (EventListenerDescriptor desc : listenerList.getInlineListenersDescriptors()) {
115            sb.append(desc.getName());
116            sb.append(" - Synchronous - ");
117            sb.append(desc.isEnabled());
118            sb.append("\n");
119        }
120        return sb.toString();
121    }
122
123    @Override
124    public void setListenerEnabledFlag(String listenerName, boolean enabled) {
125        getAdminService().setListenerEnabledFlag(listenerName, enabled);
126    }
127
128    @Override
129    public boolean isBulkModeEnabled() {
130        return getAdminService().isBulkModeEnabled();
131    }
132
133    @Override
134    public void setBulkModeEnabled(boolean bulkModeEnabled) {
135        getAdminService().setBulkModeEnabled(bulkModeEnabled);
136    }
137
138}