ttomcat-1778514358873.zip-extract/apache-tomcat-11.0.18-src/java/org/apache/tomcat/util/modeler/BaseNotificationBroadcaster.java

Path
ttomcat-1778514358873.zip-extract/apache-tomcat-11.0.18-src/java/org/apache/tomcat/util/modeler/BaseNotificationBroadcaster.java
Status
scanned
Type
file
Name
BaseNotificationBroadcaster.java
Extension
.java
Programming language
Java
Mime type
text/plain
File type
ASCII text, with CRLF line terminators
Tag

      
    
Rootfs path

      
    
Size
5713 (5.6 KB)
MD5
a00a3aae3a74ba4a66ece7219ab09c34
SHA1
dc82375048e1b44c6e16d5081ce054f98f046c02
SHA256
e93eff43b676ce132dee7d0e3167f5fbdb441363289cab9c04fe6a751bedadd3
SHA512

      
    
SHA1_git
97aa4d810d5559423d723158c5a6dc55da3bd489
Is binary

      
    
Is text
True
Is archive

      
    
Is media

      
    
Is legal

      
    
Is manifest

      
    
Is readme

      
    
Is top level

      
    
Is key file

      
    
BaseNotificationBroadcaster.java | 5.6 KB |

/* * 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.tomcat.util.modeler; import java.util.ArrayList; import javax.management.ListenerNotFoundException; import javax.management.MBeanNotificationInfo; import javax.management.Notification; import javax.management.NotificationBroadcaster; import javax.management.NotificationFilter; import javax.management.NotificationListener; /** * Implementation of <code>NotificationBroadcaster</code> for attribute change notifications. This class is used by * <code>BaseModelMBean</code> to handle notifications of attribute change events to interested listeners. */ public class BaseNotificationBroadcaster implements NotificationBroadcaster { // ----------------------------------------------------------- Constructors // ----------------------------------------------------- Instance Variables /** * The set of registered <code>BaseNotificationBroadcasterEntry</code> entries. */ final ArrayList<BaseNotificationBroadcasterEntry> entries = new ArrayList<>(); // --------------------------------------------------------- Public Methods /** * Add a notification event listener to this MBean. * * @param listener Listener that will receive event notifications * @param filter Filter object used to filter event notifications actually delivered, or <code>null</code> for no * filtering * @param handback object to be sent along with event notifications * * @exception IllegalArgumentException if the listener parameter is null */ @Override public void addNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback) throws IllegalArgumentException { synchronized (entries) { // Optimization to coalesce attribute name filters if (filter instanceof BaseAttributeFilter newFilter) { for (BaseNotificationBroadcasterEntry item : entries) { if ((item.listener == listener) && (item.filter instanceof BaseAttributeFilter oldFilter) && (item.handback == handback)) { String[] newNames = newFilter.getNames(); String[] oldNames = oldFilter.getNames(); if (newNames.length == 0) { oldFilter.clear(); } else { if (oldNames.length != 0) { for (String newName : newNames) { oldFilter.addAttribute(newName); } } } return; } } } // General purpose addition of a new entry entries.add(new BaseNotificationBroadcasterEntry(listener, filter, handback)); } } /** * Return an <code>MBeanNotificationInfo</code> object describing the notifications sent by this MBean. */ @Override public MBeanNotificationInfo[] getNotificationInfo() { return new MBeanNotificationInfo[0]; } /** * Remove a notification event listener from this MBean. * * @param listener The listener to be removed (any and all registrations for this listener will be eliminated) * * @exception ListenerNotFoundException if this listener is not registered in the MBean */ @Override public void removeNotificationListener(NotificationListener listener) throws ListenerNotFoundException { synchronized (entries) { entries.removeIf(item -> item.listener == listener); } } /** * Send the specified notification to all interested listeners. * * @param notification The notification to be sent */ public void sendNotification(Notification notification) { synchronized (entries) { for (BaseNotificationBroadcasterEntry item : entries) { if ((item.filter != null) && (!item.filter.isNotificationEnabled(notification))) { continue; } item.listener.handleNotification(notification, item.handback); } } } } /** * Utility class representing a particular registered listener entry. */ class BaseNotificationBroadcasterEntry { BaseNotificationBroadcasterEntry(NotificationListener listener, NotificationFilter filter, Object handback) { this.listener = listener; this.filter = filter; this.handback = handback; } public NotificationFilter filter; public Object handback; public NotificationListener listener; }
Detected license expression
apache-2.0
Detected license expression (SPDX)
Apache-2.0
Percentage of license text
24.84
Copyrights

      
    
Holders

      
    
Authors

      
    
License detections License expression License expression SPDX
apache_2_0-4bde3f57-78aa-4201-96bf-531cba09e7de apache-2.0 Apache-2.0
URL Start line End line
http://www.apache.org/licenses/LICENSE-2.0 9 9