private void notifyPrioritizedObservers ( final M data ) throws CouldNotPerformException { try { internalPrioritizedDataObservable . notifyObservers ( data ) ; } catch ( CouldNotPerformException ex ) { throw ex ; } finally { long newTransactionId = ( Long ) getDataField ( TransactionIdProvider . TRANSACTION_ID_FIELD_NAME ) ; // warn if the transaction id is outdated, additionally the 0 transaction is accepted which is broadcast during the controller startup after. if ( newTransactionId < transactionId && transactionId != 0 ) { logger . warn ( "RemoteService {} received a data object with an older transaction id {} than {}" , this , newTransactionId , transactionId ) ; } transactionId = newTransactionId ; } }
Notify all observers registered on the prioritized observable and retrieve the new transaction id . The transaction id is updated here to guarantee that the prioritized observables have been notified before transaction sync futures return .