public void unsubscribeResourceChangeListener(ResourceChangeListener listener, Resource resource) { this.listener.debug( "ResourceChangeNotification unsubscribing listener=" + listener + " to resource=" + resource ); synchronized ( this.subscriptions ) { Set<ResourceChangeListener> listeners = this.subscriptions.get( resource ); if ( listeners == null ) { return; } listeners.remove( listener ); if ( listeners.isEmpty() ) { this.subscriptions.remove( resource ); for ( ResourceChangeMonitor monitor : this.monitors ) { monitor.unsubscribeNotifier( this, resource ); } } } }