public void DeserializingSerializedStringRegeneratesSingleInt() { object[] parameters = new object[] { 123 }; string xml = CallParametersSerializer.Serialize(parameters); object[] parameters2 = CallParametersSerializer.Deserialize(xml); Assert.IsNotNull(parameters2); Assert.AreEqual(1, parameters2.Length); Assert.AreEqual(123, parameters2[0]); Assert.IsTrue(typeof(int).IsAssignableFrom(parameters2[0].GetType())); }
/// <summary> /// Adds a request to the queue. /// </summary> /// <param name="request">The Request to add to the queue.</param> /// <exception cref="RequestManagerException" /> public void Enqueue(Request request) { Guard.ArgumentNotNull(request, "request"); Guard.ArgumentNotNull(request.Behavior, "request.Behavior"); Guard.ArgumentNotNull(request.MethodName, "request.MethodName"); Guard.ArgumentNotNull(request.Behavior.ProxyFactoryType, "request.Behavior.ProxyFactoryType"); Guard.ArgumentNotNull(request.OnlineProxyType, "request.OnlineProxyType"); Guard.ArgumentNotNull(request.Endpoint, "request.Endpoint"); request.Behavior.QueuedDate = DateTime.Now; string serializedParameters = String.Empty; if (request.CallParameters != null) { serializedParameters = CallParametersSerializer.Serialize(request.CallParameters); } string crLf = Environment.NewLine; StringBuilder sqlSb = new StringBuilder(); sqlSb.AppendFormat("Insert {0}{1} ", tableName, crLf); sqlSb.AppendLine(" ("); sqlSb.AppendLine(" RequestId,"); sqlSb.AppendLine(" Endpoint,"); sqlSb.AppendLine(" ProxyFactoryType,"); sqlSb.AppendLine(" OnlineProxyType,"); sqlSb.AppendLine(" MethodName,"); sqlSb.AppendLine(" Tag,"); sqlSb.AppendLine(" Stamps,"); sqlSb.AppendLine(" ReturnTargetType,"); sqlSb.AppendLine(" ReturnMethodName,"); sqlSb.AppendLine(" ExceptionTargetType,"); sqlSb.AppendLine(" ExceptionMethodName,"); sqlSb.AppendLine(" MaxRetries,"); sqlSb.AppendLine(" CallParameters,"); sqlSb.AppendLine(" QueuedDate,"); sqlSb.AppendLine(" MessageID,"); sqlSb.AppendLine(" Expiration)"); sqlSb.AppendLine(" VALUES("); sqlSb.AppendFormat(" {0},{1}", database.BuildParameterName("RequestId"), crLf); sqlSb.AppendFormat(" {0},{1}", database.BuildParameterName("Endpoint"), crLf); sqlSb.AppendFormat(" {0},{1}", database.BuildParameterName("ProxyFactoryType"), crLf); sqlSb.AppendFormat(" {0},{1}", database.BuildParameterName("OnlineProxyType"), crLf); sqlSb.AppendFormat(" {0},{1}", database.BuildParameterName("MethodName"), crLf); sqlSb.AppendFormat(" {0},{1}", database.BuildParameterName("Tag"), crLf); sqlSb.AppendFormat(" {0},{1}", database.BuildParameterName("Stamps"), crLf); sqlSb.AppendFormat(" {0},{1}", database.BuildParameterName("ReturnTargetType"), crLf); sqlSb.AppendFormat(" {0},{1}", database.BuildParameterName("ReturnMethodName"), crLf); sqlSb.AppendFormat(" {0},{1}", database.BuildParameterName("ExceptionTargetType"), crLf); sqlSb.AppendFormat(" {0},{1}", database.BuildParameterName("ExceptionMethodName"), crLf); sqlSb.AppendFormat(" {0},{1}", database.BuildParameterName("MaxRetries"), crLf); sqlSb.AppendFormat(" {0},{1}", database.BuildParameterName("CallParameters"), crLf); sqlSb.AppendFormat(" {0},{1}", database.BuildParameterName("QueuedDate"), crLf); sqlSb.AppendFormat(" {0},{1}", database.BuildParameterName("MessageID"), crLf); sqlSb.AppendFormat(" {0}{1}", database.BuildParameterName("Expiration"), crLf); sqlSb.AppendLine(" )"); string sql = sqlSb.ToString(); string returnTargetType = null; string returnMethodName = null; string exceptionTargetType = null; string exceptionMethodName = null; if (request.Behavior.ReturnCallback != null) { returnTargetType = request.Behavior.ReturnCallback.TargetType.AssemblyQualifiedName; returnMethodName = request.Behavior.ReturnCallback.TargetMethodName; } if (request.Behavior.ExceptionCallback != null) { exceptionTargetType = request.Behavior.ExceptionCallback.TargetType.AssemblyQualifiedName; exceptionMethodName = request.Behavior.ExceptionCallback.TargetMethodName; } DbParameter[] parameters = new DbParameter[] { // Due to the limitation that limits DbType.String to 255 characters, // the SqlDbType.NText is used on all string fields with a length greater // than 250. database.CreateParameter("RequestId", DbType.Guid, 1, request.RequestId), database.CreateParameter("Endpoint", SqlDbType.NText, 300, request.Endpoint), database.CreateParameter("ProxyFactoryType", SqlDbType.NText, 1000, request.Behavior.ProxyFactoryType.AssemblyQualifiedName), database.CreateParameter("OnlineProxyType", SqlDbType.NText, 1000, request.OnlineProxyType.AssemblyQualifiedName), database.CreateParameter("MethodName", DbType.String, 200, request.MethodName), database.CreateParameter("Tag", SqlDbType.NText, 300, request.Behavior.Tag), database.CreateParameter("Stamps", DbType.Int16, 1, request.Behavior.Stamps), database.CreateParameter("ReturnTargetType", SqlDbType.NText, 1000, returnTargetType), database.CreateParameter("ReturnMethodName", DbType.String, 200, returnMethodName), database.CreateParameter("ExceptionTargetType", SqlDbType.NText, 1000, exceptionTargetType), database.CreateParameter("ExceptionMethodName", DbType.String, 200, exceptionMethodName), database.CreateParameter("MaxRetries", DbType.Int16, 1, request.Behavior.MaxRetries), database.CreateParameter("CallParameters", SqlDbType.NText, serializedParameters.Length + 1, serializedParameters), database.CreateParameter("QueuedDate", DbType.DateTime, 0, request.Behavior.QueuedDate), database.CreateParameter("MessageID", DbType.Guid, 0, request.Behavior.MessageId) , database.CreateParameter("Expiration", DbType.DateTime, 0, request.Behavior.Expiration) }; try { database.ExecuteNonQuery(sql, parameters); } catch (SqlCeException ex) { throw new RequestManagerException( String.Format(CultureInfo.CurrentCulture, ex.Message, request.RequestId), ex); } if (RequestEnqueued != null) { RequestEnqueued(this, new RequestEnqueuedEventArgs(request)); } }
public void SerializingEmptyArrayReturnsEmptyString() { string xml = CallParametersSerializer.Serialize(new object[0]); Assert.AreEqual(String.Empty, xml); }
public void SerializingNullArrayReturnsEmptyString() { string xml = CallParametersSerializer.Serialize(null); Assert.AreEqual(String.Empty, xml); }