You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ch...@apache.org on 2014/08/05 21:58:15 UTC

svn commit: r1615992 - in /qpid/trunk/qpid/cpp/bindings/qpid/dotnet: src/Message.cpp src/TypeTranslator.cpp test/messaging.test/messaging.test.message.cs

Author: chug
Date: Tue Aug  5 19:58:15 2014
New Revision: 1615992

URL: http://svn.apache.org/r1615992
Log:
QPID-5964: Add SetContentObject support for list and map.
Fix GetContentObject return value warning.

Modified:
    qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/Message.cpp
    qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/TypeTranslator.cpp
    qpid/trunk/qpid/cpp/bindings/qpid/dotnet/test/messaging.test/messaging.test.message.cs

Modified: qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/Message.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/Message.cpp?rev=1615992&r1=1615991&r2=1615992&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/Message.cpp (original)
+++ qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/Message.cpp Tue Aug  5 19:58:15 2014
@@ -571,12 +571,13 @@ namespace Messaging {
         ThrowIfDisposed();
 
         System::Exception ^ newException = nullptr;
+        System::Object ^ result = nullptr;
 
         try
         {
             ::qpid::types::Variant nativeObject = nativeObjPtr->getContentObject();
 
-            return TypeTranslator::NativeToManagedObject(nativeObject);
+            result = TypeTranslator::NativeToManagedObject(nativeObject);
         }
         catch (const ::qpid::types::Exception & error)
         {
@@ -588,6 +589,8 @@ namespace Messaging {
         {
             throw newException;
         }
+
+        return result;
     }
     
     System::String ^ Message::MapAsString(System::Collections::Generic::Dictionary<

Modified: qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/TypeTranslator.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/TypeTranslator.cpp?rev=1615992&r1=1615991&r2=1615992&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/TypeTranslator.cpp (original)
+++ qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/TypeTranslator.cpp Tue Aug  5 19:58:15 2014
@@ -242,6 +242,18 @@ namespace Messaging {
                     ::qpid::types::Uuid newUuid = ::qpid::types::Uuid(pinnedBuf);
                     qpidVariant = newUuid;
                 }
+                else if (QpidTypeCheck::ObjectIsMap(managedValue))
+                {
+                    ::qpid::types::Variant::Map newMap;
+                    ManagedToNative((QpidMap ^)managedValue, newMap);
+                    qpidVariant = newMap;
+                }
+                else if (QpidTypeCheck::ObjectIsList(managedValue))
+                {
+                    ::qpid::types::Variant::List newList;
+                    ManagedToNative((QpidList ^)managedValue, newList);
+                    qpidVariant = newList;
+                }
                 else
                 {
                     throw gcnew System::NotImplementedException();

Modified: qpid/trunk/qpid/cpp/bindings/qpid/dotnet/test/messaging.test/messaging.test.message.cs
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/bindings/qpid/dotnet/test/messaging.test/messaging.test.message.cs?rev=1615992&r1=1615991&r2=1615992&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/bindings/qpid/dotnet/test/messaging.test/messaging.test.message.cs (original)
+++ qpid/trunk/qpid/cpp/bindings/qpid/dotnet/test/messaging.test/messaging.test.message.cs Tue Aug  5 19:58:15 2014
@@ -375,6 +375,50 @@ namespace Org.Apache.Qpid.Messaging.Unit
             gotThis = message.GetContentObject();
             StringAssert.IsMatch("System.Guid", gotThis.GetType().ToString());
             StringAssert.IsMatch("03020100-0504-0706-0809-0a0b0c0d0e0f", gotThis.ToString());
+
+            Dictionary<string, object> content = new Dictionary<string, object>();
+            Dictionary<string, object> subMap = new Dictionary<string, object>();
+            Collection<object> colors = new Collection<object>();
+
+            // Test object map
+            // add simple types
+            content["id"] = 987654321;
+            content["name"] = "Widget";
+            content["percent"] = 0.99;
+
+            // add nested amqp/map
+            subMap["name"] = "Smith";
+            subMap["number"] = 354;
+            content["nestedMap"] = subMap;
+
+            // add an amqp/list
+            colors.Add("red");
+            colors.Add("green");
+            colors.Add("white");
+            // list contains null value
+            colors.Add(null);
+            content["colorsList"] = colors;
+
+            // add one of each supported amqp data type
+            bool mybool2 = true;
+            content["mybool"] = mybool2;
+
+            message.SetContentObject(content);
+            gotThis = message.GetContentObject();
+            StringAssert.Contains("System.Collections.Generic.Dictionary`2[System.String,System.Object]", gotThis.GetType().ToString());
+            // Can't compare objects as strings since the maps get reordered
+            // so compare each item
+            foreach (KeyValuePair<string, object> kvp in content)
+            {
+                object gotObj = ((Dictionary<string, object>)(gotThis))[kvp.Key];
+                StringAssert.Contains(kvp.Value.ToString(), gotObj.ToString());
+            }
+
+            // test object list
+            message.SetContentObject(colors);
+            gotThis = message.GetContentObject();
+            StringAssert.Contains("System.Collections.ObjectModel.Collection`1[System.Object]", gotThis.GetType().ToString());
+            StringAssert.Contains(message.ListAsString(colors), message.ListAsString((Collection<object>)gotThis));
         }
     }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org