protected final boolean notifyObservers ( ) { try { // It is not waited until the write actions are finished because the notification will be triggered after the lock release. if ( registryLock . isWriteLockedByCurrentThread ( ) ) { logger . debug ( "Notification of registry[" + this + "] change skipped because of running write operations!" ) ; notificationSkipped = true ; return false ; } if ( super . notifyObservers ( entryMap ) ) { try { pluginPool . afterRegistryChange ( ) ; } catch ( CouldNotPerformException ex ) { MultiException . ExceptionStack exceptionStack = new MultiException . ExceptionStack ( ) ; exceptionStack . push ( pluginPool , ex ) ; throw new MultiException ( "PluginPool could not execute afterRegistryChange" , exceptionStack ) ; } } notificationSkipped = false ; } catch ( CouldNotPerformException ex ) { ExceptionPrinter . printHistory ( new CouldNotPerformException ( "Could not notify all registry observer!" , ex ) , logger , LogLevel . ERROR ) ; return false ; } return true ; }
Method triggers a new registry changed notification on all observers . The notification will be skipped in case the registry is busy . But a final notification is always guaranteed .