Ejemplo n.º 1
0
        public WcfResponse Fetch(CriteriaRequest request)
        {
            Csla.Server.DataPortal portal     = new Csla.Server.DataPortal();
            Exception               error     = null;
            DataPortalResult        result    = null;
            WcfResponse             response  = null;
            ISerializationFormatter formatter = SerializationFormatterFactory.GetFormatter();

            try
            {
                request = ConvertRequest(request);
                DataPortalContext context = new DataPortalContext(
                    formatter.Deserialize(request.Principal) as IPrincipal,
                    true,
                    request.ClientCulture,
                    request.ClientUICulture,
                    formatter.Deserialize(request.ClientContext) as ContextDictionary,
                    formatter.Deserialize(request.GlobalContext) as ContextDictionary);
                result   = portal.Fetch(Type.GetType(request.TypeName), formatter.Deserialize(request.CriteriaData), context);
                response = new WcfResponse(
                    formatter.Serialize(result.ReturnObject),
                    formatter.Serialize(error),
                    formatter.Serialize(Csla.ApplicationContext.GlobalContext));
            }
            catch (Exception ex)
            {
                error    = ex;
                response = new WcfResponse(
                    null,
                    formatter.Serialize(error),
                    formatter.Serialize(Csla.ApplicationContext.GlobalContext));
            }
            return(ConvertResponse(response));
        }
Ejemplo n.º 2
0
        private UpdateRequest GetRequest(ISerializationFormatter formatter, object obj, DataPortalContext context)
        {
            UpdateRequest request = new UpdateRequest();

            request.ClientContext   = formatter.Serialize(Csla.ApplicationContext.ClientContext);
            request.ClientCulture   = System.Threading.Thread.CurrentThread.CurrentCulture.Name;
            request.ClientUICulture = System.Threading.Thread.CurrentThread.CurrentUICulture.Name;
            request.GlobalContext   = formatter.Serialize(Csla.ApplicationContext.GlobalContext);
            request.Principal       = formatter.Serialize(Csla.ApplicationContext.User);
            request.ObjectData      = formatter.Serialize(obj);
            request = ConvertRequest(request);
            return(request);
        }
Ejemplo n.º 3
0
        private CriteriaRequest GetRequest(ISerializationFormatter formatter, Type objectType, object criteria, DataPortalContext context)
        {
            CriteriaRequest request = new CriteriaRequest();

            request.ClientContext   = formatter.Serialize(Csla.ApplicationContext.ClientContext);
            request.ClientCulture   = System.Threading.Thread.CurrentThread.CurrentCulture.Name;
            request.ClientUICulture = System.Threading.Thread.CurrentThread.CurrentUICulture.Name;
            request.CriteriaData    = formatter.Serialize(criteria);
            request.GlobalContext   = formatter.Serialize(Csla.ApplicationContext.GlobalContext);
            request.Principal       = formatter.Serialize(Csla.ApplicationContext.User);
            request.TypeName        = objectType.AssemblyQualifiedName;
            request = ConvertRequest(request);
            return(request);
        }
Ejemplo n.º 4
0
        public void Serialize(object item, ISerializationContext context, Type expectedType)
        {
            try
            {
                _logger.LogInformation("Serialising: {name}", expectedType?.Name ?? "{null expetced type}");

                if (context == null)
                {
                    throw new ArgumentNullException(nameof(context));
                }

                if (item == null)
                {
                    _logger.LogDebug("Serialising null with a 0 int");
                    context.StreamWriter.Write(0);
                    return;
                }

                using (var memoryStream = new MemoryStream())
                {
                    _logger.LogDebug("Serialising item with size {size}", memoryStream.Length);
                    _cslaSerializarionFormatter.Serialize(memoryStream, item);
                    context.StreamWriter.Write(memoryStream.Length);

                    // memoryStream.Seek(0, SeekOrigin.Begin);
                    context.StreamWriter.Write(memoryStream.ToArray());
                }
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Could not Serialize.");
                throw;
            }
        }
Ejemplo n.º 5
0
        protected internal void CopyState(int parentEditLevel)
        {
            CopyingState();

            Type             currentType = this.GetType();
            HybridDictionary state       = new HybridDictionary();

            if (this.EditLevel + 1 > parentEditLevel)
            {
                throw new UndoException(string.Format(Resources.EditLevelMismatchException, "CopyState"));
            }

            do
            {
                // get the list of fields in this type
                List <DynamicMemberHandle> handlers =
                    UndoableHandler.GetCachedFieldHandlers(currentType);
                foreach (var h in handlers)
                {
                    var value = h.DynamicMemberGet(this);
                    if (typeof(YYT.Core.IUndoableObject).IsAssignableFrom(h.MemberType))
                    {
                        // make sure the variable has a value
                        if (value == null)
                        {
                            // variable has no value - store that fact
                            //state.Add(h.MemberFullName, null);
                            state.Add(h.MemberName, null);
                        }
                        else
                        {
                            // this is a child object, cascade the call
                            ((Core.IUndoableObject)value).CopyState(this.EditLevel + 1, BindingEdit);
                        }
                    }
                    else
                    {
                        // this is a normal field, simply trap the value
                        //state.Add(h.MemberFullName, value);
                        state.Add(h.MemberName, value);
                    }
                }

                currentType = currentType.BaseType;
            } while (currentType != typeof(UndoableBase));

            // serialize the state and stack it
            using (MemoryStream buffer = new MemoryStream())
            {
                ISerializationFormatter formatter =
                    SerializationFormatterFactory.GetFormatter();
                formatter.Serialize(buffer, state);
                _stateStack.Push(buffer.ToArray());
            }
            CopyStateComplete();
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Clones an object.
        /// </summary>
        /// <param name="obj">The object to clone.</param>
        /// <remarks>
        /// <para>The object to be cloned must be serializable.</para>
        /// <para>The serialization is performed using the formatter
        /// specified in ApplicationContext.</para>
        /// <para>The default is to use the MobileFormatter.</para>
        /// </remarks>
        public object Clone(object obj)
        {
            using var buffer = new MemoryStream();
            ISerializationFormatter formatter =
                SerializationFormatterFactory.GetFormatter(ApplicationContext);

            formatter.Serialize(buffer, obj);
            buffer.Position = 0;
            return(formatter.Deserialize(buffer));
        }
Ejemplo n.º 7
0
 /// <summary>
 /// Clones an object.
 /// </summary>
 /// <param name="obj">The object to clone.</param>
 /// <remarks>
 /// <para>The object to be cloned must be serializable.</para>
 /// <para>The serialization is performed using the formatter
 /// specified in the application's configuration file
 /// using the CslaSerializationFormatter key.</para>
 /// <para>The default is to use the
 /// <see cref="System.Runtime.Serialization.Formatters.Binary.BinaryFormatter" />
 /// </para>. You may also choose to use the Microsoft .NET 3.0
 /// <see cref="System.Runtime.Serialization.NetDataContractSerializer">
 /// NetDataContractSerializer</see> provided as part of WCF.
 /// </remarks>
 public static object Clone(object obj)
 {
     using (MemoryStream buffer = new MemoryStream())
     {
         ISerializationFormatter formatter =
             SerializationFormatterFactory.GetFormatter();
         formatter.Serialize(buffer, obj);
         buffer.Position = 0;
         object temp = formatter.Deserialize(buffer);
         return(temp);
     }
 }
 public static byte[] Serialize(this ISerializationFormatter formatter, object objectData)
 {
     if (objectData != null)
     {
         using (MemoryStream stream = new MemoryStream())
         {
             formatter.Serialize(stream, objectData);
             return(stream.GetBuffer());
         }
     }
     else
     {
         return(null);
     }
 }
Ejemplo n.º 9
0
 private UpdateRequest GetRequest(ISerializationFormatter formatter, object obj, DataPortalContext context)
 {
   UpdateRequest request = new UpdateRequest();
   request.ClientContext = formatter.Serialize(Csla.ApplicationContext.ClientContext);
   request.ClientCulture = System.Threading.Thread.CurrentThread.CurrentCulture.Name;
   request.ClientUICulture = System.Threading.Thread.CurrentThread.CurrentUICulture.Name;
   request.GlobalContext = formatter.Serialize(Csla.ApplicationContext.GlobalContext);
   request.Principal = formatter.Serialize(Csla.ApplicationContext.User);
   request.ObjectData = formatter.Serialize(obj);
   request = ConvertRequest(request);
   return request;
 }
Ejemplo n.º 10
0
 private CriteriaRequest GetRequest(ISerializationFormatter formatter, Type objectType, object criteria, DataPortalContext context)
 {
   CriteriaRequest request = new CriteriaRequest();
   request.ClientContext = formatter.Serialize(Csla.ApplicationContext.ClientContext);
   request.ClientCulture = System.Threading.Thread.CurrentThread.CurrentCulture.Name;
   request.ClientUICulture = System.Threading.Thread.CurrentThread.CurrentUICulture.Name;
   request.CriteriaData = formatter.Serialize(criteria);
   request.GlobalContext = formatter.Serialize(Csla.ApplicationContext.GlobalContext);
   request.Principal = formatter.Serialize(Csla.ApplicationContext.User);
   request.TypeName = objectType.AssemblyQualifiedName;
   request = ConvertRequest(request);
   return request;
 }