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