Author: chug
Date: Wed Aug 5 20:44:18 2015
New Revision: 1694323
URL: http://svn.apache.org/r1694323
Log:
QPID-6680: .NET Binding allows UTF-8 string messages - patch from
https://github.com/gaborsulyok
This closes #8
Modified:
qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/Message.cpp
qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/QpidMarshal.h
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=1694323&r1=1694322&r2=1694323&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/Message.cpp (original)
+++ qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/Message.cpp Wed Aug 5
20:44:18 2015
@@ -441,7 +441,7 @@ namespace Messaging {
try
{
- result = gcnew String(nativeObjPtr->getContent().c_str());
+ result =
QpidMarshal::ToManaged(nativeObjPtr->getContent().c_str());
}
catch (const ::qpid::types::Exception & error)
{
Modified: qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/QpidMarshal.h
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/QpidMarshal.h?rev=1694323&r1=1694322&r2=1694323&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/QpidMarshal.h (original)
+++ qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/QpidMarshal.h Wed Aug 5
20:44:18 2015
@@ -60,6 +60,23 @@ public:
std::string native((char *) pinnedBuf, mbytes->Length);
return native;
}
+
+
+ static System::String^ ToManaged( std::string native )
+ {
+ if( native.length() == 0 )
+ {
+ return gcnew System::String( "" );
+ }
+
+ pin_ptr<unsigned char> pinnedBuf = (unsigned char *)native.c_str();
+ array<unsigned char>^ mbytes = gcnew array<unsigned char>(
(int)native.length() );
+
+ for( unsigned int idx = 0; idx < native.length(); idx++ )
+ mbytes[ idx ] = pinnedBuf[ idx ];
+
+ return Encoding::UTF8->GetString( mbytes );
+ }
};
}}}}
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=1694323&r1=1694322&r2=1694323&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/TypeTranslator.cpp (original)
+++ qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/TypeTranslator.cpp Wed Aug 5
20:44:18 2015
@@ -280,7 +280,7 @@ namespace Messaging {
// create a .NET object and add it to the dictionary.
for (::qpid::types::Variant::Map::const_iterator i = qpidMap.begin();
i != qpidMap.end(); ++i)
{
- System::String ^ elementName = gcnew String(i->first.c_str());
+ System::String ^ elementName =
QpidMarshal::ToManaged(i->first.c_str());
::qpid::types::Variant variant = i->second;
dict[elementName] = NativeToManagedObject(variant);
}
@@ -394,7 +394,7 @@ namespace Messaging {
case ::qpid::types::VAR_STRING:
{
- System::String ^ elementValue = gcnew
System::String(nativeObject.asString().c_str());
+ System::String ^ elementValue =
QpidMarshal::ToManaged(nativeObject.asString().c_str());
managedObject = elementValue;
break;
}
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=1694323&r1=1694322&r2=1694323&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
Wed Aug 5 20:44:18 2015
@@ -58,6 +58,15 @@ namespace Org.Apache.Qpid.Messaging.Unit
}
[Test]
+ public void Utf8MessageStringContent()
+ {
+ Message m2 = new Message("â¬");
+ string mString = m2.GetContent();
+
+ StringAssert.IsMatch("â¬", mString);
+ }
+
+ [Test]
public void MessageReceiveContentAsByteArray()
{
Message m2 = new Message("while");
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]