Apache.NMS.Test.XmlMessageTest.SendReceiveXmlMessage C# (CSharp) Method

SendReceiveXmlMessage() private method

private SendReceiveXmlMessage ( ) : void
return void
        public void SendReceiveXmlMessage()
        {
            using(IConnection connection = CreateConnection(GetTestClientId()))
            {
                connection.Start();
                using(ISession session = connection.CreateSession(AcknowledgementMode.AutoAcknowledge))
                {
                    IDestination destination = SessionUtil.GetDestination(session, DESTINATION_NAME);
                    using(IMessageConsumer consumer = session.CreateConsumer(destination))
                    using(IMessageProducer producer = session.CreateProducer(destination))
                    {
                        NMSTestXmlType1 srcIntObject = new NMSTestXmlType1();
                        srcIntObject.crcCheck = 0xbadf00d;
                        srcIntObject.checkType = CheckType.command;
                        producer.Send(NMSConvert.ToXmlMessage(session, srcIntObject));

                        NMSTestXmlType2 srcStringObject = new NMSTestXmlType2();
                        srcStringObject.stringCheck = "BadFood";
                        producer.Send(NMSConvert.ToXmlMessage(session, srcStringObject));

                        // Demonstrate the ability to generically handle multiple object types
                        // sent to the same consumer.  If only one object type is ever sent to
                        // the destination, then a simple inline cast is all that is necessary
                        // when calling the NMSConvert.FromXmlMessage() function.

                        for(int index = 0; index < 2; index++)
                        {
                            object receivedObject = NMSConvert.FromXmlMessage(consumer.Receive(receiveTimeout));
                            Assert.IsNotNull(receivedObject, "Failed to retrieve XML message object.");

                            if(receivedObject is NMSTestXmlType1)
                            {
                                NMSTestXmlType1 destObject = (NMSTestXmlType1) receivedObject;
                                Assert.AreEqual(srcIntObject.crcCheck, destObject.crcCheck, "CRC integer mis-match.");
                                Assert.AreEqual(srcIntObject.checkType, destObject.checkType, "Check type mis-match.");
                            }
                            else if(receivedObject is NMSTestXmlType2)
                            {
                                NMSTestXmlType2 destObject = (NMSTestXmlType2) receivedObject;
                                Assert.AreEqual(srcStringObject.stringCheck, destObject.stringCheck, "CRC string mis-match.");
                            }
                            else
                            {
                                Assert.Fail("Invalid object type.");
                            }
                        }
                    }
                }
            }
        }