diff options
Diffstat (limited to 'cpp')
4 files changed, 40 insertions, 6 deletions
diff --git a/cpp/bindings/qpid/dotnet/examples/csharp.map.sender/csharp.map.sender.cs b/cpp/bindings/qpid/dotnet/examples/csharp.map.sender/csharp.map.sender.cs index c35ddf12f0..9383d125bd 100644 --- a/cpp/bindings/qpid/dotnet/examples/csharp.map.sender/csharp.map.sender.cs +++ b/cpp/bindings/qpid/dotnet/examples/csharp.map.sender/csharp.map.sender.cs @@ -79,6 +79,8 @@ namespace Org.Apache.Qpid.Messaging.examples 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
@@ -118,6 +120,8 @@ namespace Org.Apache.Qpid.Messaging.examples Guid myGuid = new Guid("000102030405060708090a0b0c0d0e0f");
content["myGuid"] = myGuid;
+ content["myNull"] = null;
+
//
// Construct a message with the map content and send it synchronously
// via the sender.
diff --git a/cpp/bindings/qpid/dotnet/src/Message.cpp b/cpp/bindings/qpid/dotnet/src/Message.cpp index 139ecee165..a554d19370 100644 --- a/cpp/bindings/qpid/dotnet/src/Message.cpp +++ b/cpp/bindings/qpid/dotnet/src/Message.cpp @@ -277,6 +277,12 @@ namespace Messaging { ListAsString((System::Collections::ObjectModel::Collection<
System::Object^> ^)kvp.Value));
}
+ else if (nullptr == kvp.Value)
+ {
+ sb->AppendFormat(
+ "{0}=",
+ kvp.Key);
+ }
else
sb->AppendFormat("{0}={1}", kvp.Key, kvp.Value);
}
@@ -310,6 +316,10 @@ namespace Messaging { sb->Append(ListAsString((System::Collections::ObjectModel::Collection<
System::Object^> ^)obj));
}
+ else if (nullptr == obj)
+ {
+ // no display for null objects
+ }
else
sb->Append(obj->ToString());
}
diff --git a/cpp/bindings/qpid/dotnet/src/QpidTypeCheck.h b/cpp/bindings/qpid/dotnet/src/QpidTypeCheck.h index 47f391fb05..d0f410b912 100644 --- a/cpp/bindings/qpid/dotnet/src/QpidTypeCheck.h +++ b/cpp/bindings/qpid/dotnet/src/QpidTypeCheck.h @@ -68,13 +68,19 @@ namespace Messaging { public:
static bool ObjectIsMap (System::Object ^ theValue)
- {
- return (*theValue).GetType() == QpidTypeCheckConstants::mapTypeP;
+ {
+ if (nullptr == theValue)
+ return false;
+ else
+ return (*theValue).GetType() == QpidTypeCheckConstants::mapTypeP;
}
static bool ObjectIsList(System::Object ^ theValue)
- {
- return (*theValue).GetType() == QpidTypeCheckConstants::listTypeP;
+ {
+ if (nullptr == theValue)
+ return false;
+ else
+ return (*theValue).GetType() == QpidTypeCheckConstants::listTypeP;
}
};
}}}}
diff --git a/cpp/bindings/qpid/dotnet/src/TypeTranslator.cpp b/cpp/bindings/qpid/dotnet/src/TypeTranslator.cpp index c4587fe0f7..b515095323 100644 --- a/cpp/bindings/qpid/dotnet/src/TypeTranslator.cpp +++ b/cpp/bindings/qpid/dotnet/src/TypeTranslator.cpp @@ -91,7 +91,10 @@ namespace Messaging { {
// Add a simple native type to map
::qpid::types::Variant entryValue;
- ManagedToNativeObject(kvp.Value, entryValue);
+ if (nullptr != kvp.Value)
+ {
+ ManagedToNativeObject(kvp.Value, entryValue);
+ }
std::string entryName = QpidMarshal::ToNative(kvp.Key);
qpidMap.insert(std::make_pair<std::string, ::qpid::types::Variant>(entryName, entryValue));
}
@@ -144,7 +147,10 @@ namespace Messaging { {
// Add a simple native type to list
::qpid::types::Variant entryValue;
- ManagedToNativeObject(listObj, entryValue);
+ if (nullptr != listObj)
+ {
+ ManagedToNativeObject(listObj, entryValue);
+ }
qpidList.push_back(entryValue);
}
}
@@ -265,6 +271,10 @@ namespace Messaging { switch (vType)
{
+ case ::qpid::types::VAR_VOID:
+ dict[elementName] = nullptr;
+ break;
+
case ::qpid::types::VAR_BOOL:
dict[elementName] = variant.asBool();
break;
@@ -358,6 +368,10 @@ namespace Messaging { switch (vType)
{
+ case ::qpid::types::VAR_VOID:
+ (*managedList).Add(nullptr);
+ break;
+
case ::qpid::types::VAR_BOOL:
(*managedList).Add(variant.asBool());
break;
|