blob: cbcd8d0f84e6aaf7dadabd6d094217dc5aad03f3 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.jackrabbit.api.jmx;
import javax.management.openmbean.CompositeData;
/**
* MBean interface for exposing information about a registered observation
* listener.
*
* @see <a href="https://issues.apache.org/jira/browse/JCR-3608">JCR-3608</a>
*/
public interface EventListenerMBean {
/** Class name of the event listener */
String getClassName();
/** Stack trace of where the listener was registered */
String getInitStackTrace();
/** Event types of the listener registration */
int getEventTypes();
/** Absolute path of the listener registration */
String getAbsPath();
/** Whether the listener registration is deep */
boolean isDeep();
/** UUIDs of the listener registration */
String[] getUuid();
/** Node types of the listener registration */
String[] getNodeTypeName();
/** Whether the listener registration is non-local */
boolean isNoLocal();
/** Number of {@code onEvent()} calls made on the listener */
long getEventDeliveries();
/** Average number of {@code onEvent()} calls per hour */
long getEventDeliveriesPerHour();
/** Average time (in microseconds) taken per {@code onEvent()} call */
long getMicrosecondsPerEventDelivery();
/** Number of individual events delivered to the listener */
long getEventsDelivered();
/** Average number of individual events delivered per hour */
long getEventsDeliveredPerHour();
/** Average time (in microseconds) taken per event delivered */
long getMicrosecondsPerEventDelivered();
/** Ratio of time spent in event processing */
double getRatioOfTimeSpentProcessingEvents();
/** Ratio of time spent in event listener vs. the overall event processing */
double getEventConsumerTimeRatio();
/** Is user information accessed without checking if an event is external? */
boolean isUserInfoAccessedWithoutExternalsCheck();
/** Is user information accessed from an external event? */
boolean isUserInfoAccessedFromExternalEvent();
/** Is date information accessed without checking if an event is external? */
boolean isDateAccessedWithoutExternalsCheck();
/** Is date information accessed from an external event? */
boolean isDateAccessedFromExternalEvent();
/**
* The time difference between the current system time and the head (oldest)
* element in the queue in milliseconds. This method returns zero if the
* queue is empty.
*/
long getQueueBacklogMillis();
/**
* {@link org.apache.jackrabbit.api.stats.TimeSeries time series} of the number of
* items related to generating observation events that are currently queued by the
* system. The exact nature of these items is implementation specific and might not
* be in a one to one relation with the number of pending JCR events.
* @return time series of the queue length
*/
CompositeData getQueueLength();
/**
* @return time series of the number of JCR events
*/
CompositeData getEventCount();
/**
* @return time series of the time it took an event listener to process JCR events.
*/
CompositeData getEventConsumerTime();
/**
* @return time series of the time it took the system to produce JCR events.
*/
CompositeData getEventProducerTime();
}