public void restoreInternal(final List<DataSlice> dataSlices, boolean throwExceptionIfMsgNotAvailable)
                    throws SevereMessageStoreException
    {
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
            SibTr.entry(this, tc, "restoreInternal", new Object[] { dataSlices, Boolean.valueOf(throwExceptionIfMsgNotAvailable) });

        try
        {
            //get a new message instance
            JsMessageFactory jmf = JsMessageFactory.getInstance();

            // Defect 430302
            // We need to pass a clone of the list as MFP may modify
            // the list before passing it to Comms. We won't assume that the
            // List is implemented as an ArrayList so we create our own now
            ArrayList arraylistDataSlices = new ArrayList(dataSlices);
            msg = jmf.restoreJsMessage(arraylistDataSlices, getOwningMessageStore());
            //Updating Redelivery count to MFP as dataSlices do not have it.
            if (msg != null)
                msg.setRedeliveredCount(guessRedeliveredCount());

            itemstream = (SIMPItemStream) getItemStream();

            if (!restoringJsMessageOnly)
                initialiseNonPersistent(true);

        } catch (Exception e)
        {
            // No FFDC code needed
            // set msg as null when specified not to throw Exception when message not available
            if ((e instanceof NotInMessageStore) && !throwExceptionIfMsgNotAvailable)
            {
                msg = null;
            }
            else
            {
                FFDCFilter.processException(
                                            e,
                                            "com.ibm.ws.sib.processor.impl.store.items.MessageItem.restoreInternal",
                                            "1:677:1.244.1.40",
                                            this);

                SibTr.exception(tc, e);

                // PK54812 If the exception represents a damaged message item, mark the
                // destination as invalid
                if (e instanceof MessageRestoreFailedException) {
                    SIMPItemStream stream = (SIMPItemStream) getItemStream();
                    DestinationHandler destHandler = getDestinationHandler(false, stream);
                    destHandler.setCorrupt(true);
                }

                if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                    SibTr.exit(this, tc, "restoreInternal", e);

                // The error message is already NLS'd
                throw new MessageStoreRuntimeException(e);
            }
        }

        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
            SibTr.exit(this, tc, "restoreInternal");
    }
public void restoreInternal ( final List < DataSlice > dataSlices , boolean throwExceptionIfMsgNotAvailable ) throws SevereMessageStoreException { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . entry ( this , tc , "restoreInternal" , new Object [ ] { dataSlices , Boolean . valueOf ( throwExceptionIfMsgNotAvailable ) } ) ; try { JsMessageFactory jmf = JsMessageFactory . getInstance ( ) ; ArrayList arraylistDataSlices = new ArrayList ( dataSlices ) ; msg = jmf . restoreJsMessage ( arraylistDataSlices , getOwningMessageStore ( ) ) ; if ( msg != null ) msg . setRedeliveredCount ( guessRedeliveredCount ( ) ) ; itemstream = ( SIMPItemStream ) getItemStream ( ) ; if ( ! restoringJsMessageOnly ) initialiseNonPersistent ( true ) ; } catch ( Exception e ) { if ( ( e instanceof NotInMessageStore ) && ! throwExceptionIfMsgNotAvailable ) { msg = null ; } else { FFDCFilter . processException ( e , "com.ibm.ws.sib.processor.impl.store.items.MessageItem.restoreInternal" , "1:677:1.244.1.40" , this ) ; SibTr . exception ( tc , e ) ; if ( e instanceof MessageRestoreFailedException ) { SIMPItemStream stream = ( SIMPItemStream ) getItemStream ( ) ; DestinationHandler destHandler = getDestinationHandler ( false , stream ) ; destHandler . setCorrupt ( true ) ; } if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( this , tc , "restoreInternal" , e ) ; throw new MessageStoreRuntimeException ( e ) ; } } if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( this , tc , "restoreInternal" ) ; }
/*
Restore the state of the receiver from the data that was persisted

@param dataSlices - the data that was persisted on behalf of the item.

@param throwExceptionIfNotAvailable Boolean to indicate whether exception
has to be thrown if message not available
Throws SevereMessageStoreException if the restore failed