private void deleteMessages ( JsMessage [ ] messagesToDelete , SITransaction transaction ) throws SISessionUnavailableException , SISessionDroppedException , SIConnectionUnavailableException , SIConnectionDroppedException , SIResourceException , SIConnectionLostException , SILimitExceededException , SIIncorrectCallException , SIMessageNotLockedException , SIErrorException { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . entry ( this , tc , "deleteMessages" ) ; int priority = JFapChannelConstants . PRIORITY_MEDIUM ; // d178368 if ( transaction != null ) { Transaction commsTransaction = ( Transaction ) transaction ; priority = commsTransaction . getLowestMessagePriority ( ) ; // d178368 // f181927 // Inform the transaction that our consumer session has deleted // a recoverable message under this transaction. This means that if // a rollback is performed (and strict rollback ordering is enabled) // we can ensure that this message will be redelivered in order. commsTransaction . associateConsumer ( consumerSession ) ; } // begin F219476.2 SIMessageHandle [ ] messageHandles = new SIMessageHandle [ messagesToDelete . length ] ; for ( int x = 0 ; x < messagesToDelete . length ; x ++ ) // f192215 { if ( messagesToDelete [ x ] != null ) { messageHandles [ x ] = messagesToDelete [ x ] . getMessageHandle ( ) ; } } convHelper . deleteMessages ( messageHandles , transaction , priority ) ; // d178368 // end F219476.2 // } if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( this , tc , "deleteMessages" ) ; }
This private method actually performs the delete by asking the conversation helper to flow the request across the wire . However this method does not obtain any locks required to perform this operation and as such should be called by a method that does do this .