You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2017/03/06 17:01:01 UTC
[16/46] activemq-nms-api git commit: Merge fix for Byte Order Mark
bug. Fixes [AMQNET-230]. (See
https://issues.apache.org/activemq/browse/AMQNET-230)
Merge fix for Byte Order Mark bug.
Fixes [AMQNET-230]. (See https://issues.apache.org/activemq/browse/AMQNET-230)
Project: http://git-wip-us.apache.org/repos/asf/activemq-nms-api/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-nms-api/commit/43872751
Tree: http://git-wip-us.apache.org/repos/asf/activemq-nms-api/tree/43872751
Diff: http://git-wip-us.apache.org/repos/asf/activemq-nms-api/diff/43872751
Branch: refs/heads/1.2.x
Commit: 438727516b86710db5c3e4788cba34f1f5d324b6
Parents: 12bc71c
Author: Jim Gomes <jg...@apache.org>
Authored: Tue Feb 9 22:43:52 2010 +0000
Committer: Jim Gomes <jg...@apache.org>
Committed: Tue Feb 9 22:43:52 2010 +0000
----------------------------------------------------------------------
src/main/csharp/MessageExtensions.cs | 18 +-----
src/main/csharp/MessageProducerExtensions.cs | 44 +--------------
src/main/csharp/SessionExtensions.cs | 10 +---
src/main/csharp/Util/Convert.cs | 38 +++----------
src/main/csharp/Util/XmlUtils.cs | 69 ++++++++++++-----------
5 files changed, 48 insertions(+), 131 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-nms-api/blob/43872751/src/main/csharp/MessageExtensions.cs
----------------------------------------------------------------------
diff --git a/src/main/csharp/MessageExtensions.cs b/src/main/csharp/MessageExtensions.cs
index bd1aab3..c62ac57 100644
--- a/src/main/csharp/MessageExtensions.cs
+++ b/src/main/csharp/MessageExtensions.cs
@@ -35,29 +35,13 @@ namespace Apache.NMS
/// <summary>
/// Deserializes the object from Xml, and returns it.
/// </summary>
- public static object ToObject(this IMessage message, Encoding encoding)
- {
- return ToObject<object>(message, encoding);
- }
-
- /// <summary>
- /// Deserializes the object from Xml, and returns it.
- /// </summary>
public static T ToObject<T>(this IMessage message) where T : class
{
- return ToObject<T>(message, Encoding.Unicode);
- }
-
- /// <summary>
- /// Deserializes the object from Xml, and returns it.
- /// </summary>
- public static T ToObject<T>(this IMessage message, Encoding encoding) where T : class
- {
try
{
if(null != message)
{
- return (T) NMSConvert.DeserializeObjFromMessage(message, encoding);
+ return (T) NMSConvert.DeserializeObjFromMessage(message);
}
}
catch(Exception ex)
http://git-wip-us.apache.org/repos/asf/activemq-nms-api/blob/43872751/src/main/csharp/MessageProducerExtensions.cs
----------------------------------------------------------------------
diff --git a/src/main/csharp/MessageProducerExtensions.cs b/src/main/csharp/MessageProducerExtensions.cs
index 3493cc0..c1b5c9d 100644
--- a/src/main/csharp/MessageProducerExtensions.cs
+++ b/src/main/csharp/MessageProducerExtensions.cs
@@ -1,4 +1,4 @@
-\ufeff/*
+/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
@@ -29,15 +29,7 @@ namespace Apache.NMS
/// </summary>
public static ITextMessage CreateXmlMessage(this IMessageProducer producer, object obj)
{
- return CreateXmlMessage(producer, obj, Encoding.Unicode);
- }
-
- /// <summary>
- /// Extension function to create a text message from an object. The object must be serializable to XML.
- /// </summary>
- public static ITextMessage CreateXmlMessage(this IMessageProducer producer, object obj, Encoding encoding)
- {
- return NMSConvert.SerializeObjToMessage(producer.CreateTextMessage(), obj, encoding);
+ return NMSConvert.SerializeObjToMessage(producer.CreateTextMessage(), obj);
}
/// <summary>
@@ -49,14 +41,6 @@ namespace Apache.NMS
}
/// <summary>
- /// Sends the message to the default destination for this producer. The object must be serializable to XML.
- /// </summary>
- public static void Send(this IMessageProducer producer, object objMessage, Encoding encoding)
- {
- producer.Send(producer.CreateXmlMessage(objMessage, encoding));
- }
-
- /// <summary>
/// Sends the message to the default destination with the explicit QoS configuration. The object must be serializable to XML.
/// </summary>
public static void Send(this IMessageProducer producer, object objMessage, MsgDeliveryMode deliveryMode, MsgPriority priority, TimeSpan timeToLive)
@@ -65,14 +49,6 @@ namespace Apache.NMS
}
/// <summary>
- /// Sends the message to the default destination with the explicit QoS configuration. The object must be serializable to XML.
- /// </summary>
- public static void Send(this IMessageProducer producer, object objMessage, Encoding encoding, MsgDeliveryMode deliveryMode, MsgPriority priority, TimeSpan timeToLive)
- {
- producer.Send(producer.CreateXmlMessage(objMessage, encoding), deliveryMode, priority, timeToLive);
- }
-
- /// <summary>
/// Sends the message to the given destination
/// </summary>
public static void Send(this IMessageProducer producer, IDestination destination, object objMessage)
@@ -81,28 +57,12 @@ namespace Apache.NMS
}
/// <summary>
- /// Sends the message to the given destination
- /// </summary>
- public static void Send(this IMessageProducer producer, IDestination destination, object objMessage, Encoding encoding)
- {
- producer.Send(destination, producer.CreateXmlMessage(objMessage, encoding));
- }
-
- /// <summary>
/// Sends the message to the given destination with the explicit QoS configuration. The object must be serializable to XML.
/// </summary>
public static void Send(this IMessageProducer producer, IDestination destination, object objMessage, MsgDeliveryMode deliveryMode, MsgPriority priority, TimeSpan timeToLive)
{
producer.Send(destination, producer.CreateXmlMessage(objMessage), deliveryMode, priority, timeToLive);
}
-
- /// <summary>
- /// Sends the message to the given destination with the explicit QoS configuration. The object must be serializable to XML.
- /// </summary>
- public static void Send(this IMessageProducer producer, IDestination destination, object objMessage, Encoding encoding, MsgDeliveryMode deliveryMode, MsgPriority priority, TimeSpan timeToLive)
- {
- producer.Send(destination, producer.CreateXmlMessage(objMessage, encoding), deliveryMode, priority, timeToLive);
- }
}
#endif
}
http://git-wip-us.apache.org/repos/asf/activemq-nms-api/blob/43872751/src/main/csharp/SessionExtensions.cs
----------------------------------------------------------------------
diff --git a/src/main/csharp/SessionExtensions.cs b/src/main/csharp/SessionExtensions.cs
index 342d2ee..850aa9d 100644
--- a/src/main/csharp/SessionExtensions.cs
+++ b/src/main/csharp/SessionExtensions.cs
@@ -28,15 +28,7 @@ namespace Apache.NMS
/// </summary>
public static ITextMessage CreateXmlMessage(this ISession session, object obj)
{
- return CreateXmlMessage(session, obj, Encoding.Unicode);
- }
-
- /// <summary>
- /// Extension function to create a text message from an object. The object must be serializable to XML.
- /// </summary>
- public static ITextMessage CreateXmlMessage(this ISession session, object obj, Encoding encoding)
- {
- return NMSConvert.SerializeObjToMessage(session.CreateTextMessage(), obj, encoding);
+ return NMSConvert.SerializeObjToMessage(session.CreateTextMessage(), obj);
}
/// <summary>
http://git-wip-us.apache.org/repos/asf/activemq-nms-api/blob/43872751/src/main/csharp/Util/Convert.cs
----------------------------------------------------------------------
diff --git a/src/main/csharp/Util/Convert.cs b/src/main/csharp/Util/Convert.cs
index 5431e7c..51183a6 100644
--- a/src/main/csharp/Util/Convert.cs
+++ b/src/main/csharp/Util/Convert.cs
@@ -64,18 +64,7 @@ namespace Apache.NMS.Util
#endif
public static ITextMessage ToXmlMessage(IMessageProducer producer, object obj)
{
- return ToXmlMessage(producer, obj, Encoding.Unicode);
- }
-
- /// <summary>
- /// Convert an object into a text message. The object must be serializable to XML.
- /// </summary>
-#if NET_3_5 || MONO
- [Obsolete]
-#endif
- public static ITextMessage ToXmlMessage(IMessageProducer producer, object obj, Encoding encoding)
- {
- return SerializeObjToMessage(producer.CreateTextMessage(), obj, encoding);
+ return SerializeObjToMessage(producer.CreateTextMessage(), obj);
}
/// <summary>
@@ -86,18 +75,7 @@ namespace Apache.NMS.Util
#endif
public static ITextMessage ToXmlMessage(ISession session, object obj)
{
- return ToXmlMessage(session, obj, Encoding.Unicode);
- }
-
- /// <summary>
- /// Convert an object into a text message. The object must be serializable to XML.
- /// </summary>
-#if NET_3_5 || MONO
- [Obsolete]
-#endif
- public static ITextMessage ToXmlMessage(ISession session, object obj, Encoding encoding)
- {
- return SerializeObjToMessage(session.CreateTextMessage(), obj, encoding);
+ return SerializeObjToMessage(session.CreateTextMessage(), obj);
}
/// <summary>
@@ -108,7 +86,7 @@ namespace Apache.NMS.Util
#endif
public static object FromXmlMessage(IMessage message)
{
- return DeserializeObjFromMessage(message, Encoding.Unicode);
+ return DeserializeObjFromMessage(message);
}
/// <summary>
@@ -117,13 +95,12 @@ namespace Apache.NMS.Util
/// </summary>
/// <param name="message"></param>
/// <param name="obj"></param>
- /// <param name="encoding"></param>
/// <returns></returns>
- internal static ITextMessage SerializeObjToMessage(ITextMessage message, object obj, Encoding encoding)
+ internal static ITextMessage SerializeObjToMessage(ITextMessage message, object obj)
{
// Embed the type into the message
message.NMSType = obj.GetType().FullName;
- message.Text = XmlUtil.Serialize(obj, encoding);
+ message.Text = XmlUtil.Serialize(obj);
return message;
}
@@ -131,9 +108,8 @@ namespace Apache.NMS.Util
/// Deserialize the object from the text message. The object must be serializable from XML.
/// </summary>
/// <param name="message"></param>
- /// <param name="encoding"></param>
/// <returns></returns>
- internal static object DeserializeObjFromMessage(IMessage message, Encoding encoding)
+ internal static object DeserializeObjFromMessage(IMessage message)
{
ITextMessage textMessage = message as ITextMessage;
@@ -155,7 +131,7 @@ namespace Apache.NMS.Util
return null;
}
- return XmlUtil.Deserialize(objType, textMessage.Text, encoding);
+ return XmlUtil.Deserialize(objType, textMessage.Text);
}
/// <summary>
http://git-wip-us.apache.org/repos/asf/activemq-nms-api/blob/43872751/src/main/csharp/Util/XmlUtils.cs
----------------------------------------------------------------------
diff --git a/src/main/csharp/Util/XmlUtils.cs b/src/main/csharp/Util/XmlUtils.cs
index 5b837ce..e250ac6 100644
--- a/src/main/csharp/Util/XmlUtils.cs
+++ b/src/main/csharp/Util/XmlUtils.cs
@@ -20,6 +20,7 @@ using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
+using System.Text.RegularExpressions;
namespace Apache.NMS.Util
{
@@ -30,28 +31,18 @@ namespace Apache.NMS.Util
{
public static string Serialize(object obj)
{
- return Serialize(obj, Encoding.Unicode);
- }
-
- public static string Serialize(object obj, Encoding encoding)
- {
try
{
- MemoryStream memoryStream = new MemoryStream();
+ StringBuilder outputStringBuilder = new StringBuilder();
XmlSerializer serializer = new XmlSerializer(obj.GetType());
- XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, encoding);
+ XmlWriter xmlWriter = XmlWriter.Create(outputStringBuilder);
- /*
- * If the XML document has been altered with unknown
- * nodes or attributes, handle them with the
- * UnknownNode and UnknownAttribute events.
- */
- serializer.UnknownNode += new XmlNodeEventHandler(serializer_UnknownNode);
- serializer.UnknownAttribute += new XmlAttributeEventHandler(serializer_UnknownAttribute);
- serializer.Serialize(xmlTextWriter, obj);
- memoryStream = (MemoryStream) xmlTextWriter.BaseStream;
- byte[] encodedBytes = memoryStream.ToArray();
- return encoding.GetString(encodedBytes, 0, encodedBytes.Length);
+ // Set the error handlers.
+ serializer.UnknownNode += serializer_UnknownNode;
+ serializer.UnknownElement += serializer_UnknownElement;
+ serializer.UnknownAttribute += serializer_UnknownAttribute;
+ serializer.Serialize(xmlWriter, obj);
+ return outputStringBuilder.ToString();
}
catch(Exception ex)
{
@@ -62,11 +53,6 @@ namespace Apache.NMS.Util
public static object Deserialize(Type objType, string text)
{
- return Deserialize(objType, text, Encoding.Unicode);
- }
-
- public static object Deserialize(Type objType, string text, Encoding encoding)
- {
if(null == text)
{
return null;
@@ -75,16 +61,12 @@ namespace Apache.NMS.Util
try
{
XmlSerializer serializer = new XmlSerializer(objType);
- MemoryStream memoryStream = new MemoryStream(encoding.GetBytes(text));
- /*
- * If the XML document has been altered with unknown
- * nodes or attributes, handle them with the
- * UnknownNode and UnknownAttribute events.
- */
- serializer.UnknownNode += new XmlNodeEventHandler(serializer_UnknownNode);
- serializer.UnknownAttribute += new XmlAttributeEventHandler(serializer_UnknownAttribute);
- return serializer.Deserialize(memoryStream);
+ // Set the error handlers.
+ serializer.UnknownNode += serializer_UnknownNode;
+ serializer.UnknownElement += serializer_UnknownElement;
+ serializer.UnknownAttribute += serializer_UnknownAttribute;
+ return serializer.Deserialize(new StringReader(text));
}
catch(Exception ex)
{
@@ -93,11 +75,34 @@ namespace Apache.NMS.Util
}
}
+ /// <summary>
+ /// From xml spec valid chars:
+ /// #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
+ /// any Unicode character, excluding the surrogate blocks, FFFE, and FFFF.
+ /// </summary>
+ private static string invalidXMLMatch = @"[^\x09\x0A\x0D\x20-\xD7FF\xE000-\xFFFD\x10000-x10FFFF]";
+ private static Regex regexInvalidXMLChars = new Regex(invalidXMLMatch);
+
+ /// <summary>
+ /// This removes characters that are invalid for xml encoding
+ /// </summary>
+ /// <param name="text">Text to be encoded.</param>
+ /// <returns>Text with invalid xml characters removed.</returns>
+ public static string CleanInvalidXmlChars(string text)
+ {
+ return regexInvalidXMLChars.Replace(text, "");
+ }
+
private static void serializer_UnknownNode(object sender, XmlNodeEventArgs e)
{
Tracer.ErrorFormat("Unknown Node: {0}\t{1}", e.Name, e.Text);
}
+ private static void serializer_UnknownElement(object sender, XmlElementEventArgs e)
+ {
+ Tracer.ErrorFormat("Unknown Element: {0}\t{1}", e.Element.Name, e.Element.Value);
+ }
+
private static void serializer_UnknownAttribute(object sender, XmlAttributeEventArgs e)
{
Tracer.ErrorFormat("Unknown attribute: {0}='{1}'", e.Attr.Name, e.Attr.Value);