private void processItemResponse(OMMItemEvent event)
    {
        OMMMsg responseMessage = event.getMsg();
        ItemClosure itemClosure = (ItemClosure)event.getClosure();
        int itemIdx = itemClosure._idx;

        // update; onpass to providerNI only if a refresh had been received
        // previously
        if (responseMessage.getMsgType() == OMMMsg.MsgType.UPDATE_RESP)
        {
            if ((!_bReceivedItemUpdates) && (!_parent._providerNIClient.isDisconnected()))
            {
                System.out.println(_className + ":* Received Item Updates from consumer - "
                        + OMMMsg.MsgType.toString(responseMessage.getMsgType()));
                _bReceivedItemUpdates = true;
            }

            if (_cachedItemsList[itemIdx]._bRefreshReceived == true)
                _parent.publishMessage2ProviderNI(responseMessage, itemClosure._publishToken);

            return;
        }

        // stream is closed; cleanup;
        // onpass to providerNI only if a refresh had been received previously
        if (responseMessage.isFinal())
        {
            if (_cachedItemsList[itemIdx]._bRefreshReceived == true)
                _parent.publishMessage2ProviderNI(responseMessage, itemClosure._publishToken);

            _cachedItemsList[itemIdx]._bRefreshReceived = false;
            _cachedItemsList[itemIdx]._handle = null;
            _cachedItemsList[itemIdx]._publishToken = null;

            return;
        }

        // refresh; set flag to indicate refresh has been received;
        // change response type from SOLICITED to UNSOLICITED;
        // request items
        if (responseMessage.getMsgType() == OMMMsg.MsgType.REFRESH_RESP)
        {
            // change resp_type_num from SOLICITED to UNSOLICITED
            OMMMsg reEncodedMessage = OMMMsgReencoder.changeResponseTypeToUnsolicited(event
                    .getMsg(), 1000);
            _cachedItemsList[itemIdx]._bRefreshReceived = true;
            _parent.publishMessage2ProviderNI(reEncodedMessage, itemClosure._publishToken);
        }
        else if (responseMessage.getMsgType() == OMMMsg.MsgType.GENERIC)
        {
            System.out.println("Received generic message type, not supported. ");
        }
        else
        {
            System.out.println("ERROR: " + _className + ": Received unexpected message type. "
                    + responseMessage.getMsgType());
        }

    }