Esempio n. 1
0
        /// <summary>
        /// Deserializes child objects.
        /// </summary>
        /// <param name="info">Serialization state</param>
        /// <param name="formatter">Serializer instance</param>
        protected override void OnSetChildren(SerializationInfo info, MobileFormatter formatter)
        {
            foreach (IPropertyInfo property in _propertyList)
            {
                if (info.Children.ContainsKey(property.Name))
                {
                    SerializationInfo.ChildData childData = info.Children[property.Name];

                    IFieldData data = GetOrCreateFieldData(property);
                    data.Value = formatter.GetObject(childData.ReferenceId);
                    if (!childData.IsDirty)
                    {
                        data.MarkClean();
                    }
                }
            }

            base.OnSetChildren(info, formatter);
        }
Esempio n. 2
0
        private Csla.Server.Hosts.HttpChannel.CriteriaRequest GetBaseCriteriaRequest()
        {
            var request = new Csla.Server.Hosts.HttpChannel.CriteriaRequest();

            request.CriteriaData  = null;
            request.ClientContext = MobileFormatter.Serialize(ApplicationContext.ClientContext);
            request.GlobalContext = MobileFormatter.Serialize(ApplicationContext.GlobalContext);
            if (ApplicationContext.AuthenticationType == "Windows")
            {
                request.Principal = MobileFormatter.Serialize(null);
            }
            else
            {
                request.Principal = MobileFormatter.Serialize(ApplicationContext.User);
            }
            request.ClientCulture   = System.Globalization.CultureInfo.CurrentCulture.Name;
            request.ClientUICulture = System.Globalization.CultureInfo.CurrentUICulture.Name;
            return(request);
        }
Esempio n. 3
0
        /// <summary>
        /// Override this method to insert your field values
        /// into the MobileFormatter serialzation stream.
        /// </summary>
        /// <param name="info">
        /// Object containing the data to serialize.
        /// </param>
        /// <param name="mode">
        /// The StateMode indicating why this method was invoked.
        /// </param>
        protected override void OnGetState(SerializationInfo info, StateMode mode)
        {
            info.AddValue("_processThroughPriority", _processThroughPriority);
            info.AddValue("_ruleSet", _ruleSet);
            info.AddValue("_cascadeWhenChanged", _cascadeOnDirtyProperties);
            //info.AddValue("_isBusy", _isBusy);
#if (ANDROID || IOS) || NETFX_CORE
            if (mode == StateMode.Serialization)
            {
                if (_stateStack.Count > 0)
                {
                    MobileList <SerializationInfo> list = new MobileList <SerializationInfo>(_stateStack.ToArray());
                    byte[] xml = MobileFormatter.Serialize(list);
                    info.AddValue("_stateStack", xml);
                }
            }
#endif
            base.OnGetState(info, mode);
        }
Esempio n. 4
0
        /// <summary>
        /// Called by <see cref="DataPortal" /> to update a
        /// business object.
        /// </summary>
        /// <param name="obj">The business object to update.</param>
        /// <param name="context">
        /// <see cref="Server.DataPortalContext" /> object passed to the server.
        /// </param>
        /// <param name="isSync">True if the client-side proxy should synchronously invoke the server.</param>
#pragma warning disable 1998
        public async Task <DataPortalResult> Update(object obj, DataPortalContext context, bool isSync)
#pragma warning restore 1998
        {
            DataPortalResult result;

            try
            {
                var request = GetBaseUpdateCriteriaRequest();
                request.ObjectData = MobileFormatter.Serialize(obj);
                request            = ConvertRequest(request);

                var serialized = MobileFormatter.Serialize(request);

                serialized = await CallDataPortalServer(serialized, "update", GetRoutingToken(obj.GetType()), isSync);

                var response = (Csla.Server.Hosts.HttpChannel.HttpResponse)MobileFormatter.Deserialize(serialized);
                response = ConvertResponse(response);
                var globalContext = (ContextDictionary)MobileFormatter.Deserialize(response.GlobalContext);
                if (response != null && response.ErrorData == null)
                {
                    var newobj = MobileFormatter.Deserialize(response.ObjectData);
                    result = new DataPortalResult(newobj, null, globalContext);
                }
                else if (response != null && response.ErrorData != null)
                {
                    var ex = new DataPortalException(response.ErrorData);
                    result = new DataPortalResult(null, ex, globalContext);
                }
                else
                {
                    throw new DataPortalException("null response", null);
                }
            }
            catch (Exception ex)
            {
                result = new DataPortalResult(null, ex, null);
            }
            if (result.Error != null)
            {
                throw result.Error;
            }
            return(result);
        }
Esempio n. 5
0
        void IUndoableObject.CopyState(int parentEditLevel, bool parentBindingEdit)
        {
            if (((IUndoableObject)this).EditLevel + 1 > parentEditLevel)
            {
                throw new UndoException(string.Format(Properties.Resources.EditLevelMismatchException, "CopyState"), this.GetType().Name, null, ((IUndoableObject)this).EditLevel, parentEditLevel - 1);
            }

            SerializationInfo state = new SerializationInfo(0);

            OnGetState(state, StateMode.Undo);

            if (_brokenRules != null && _brokenRules.Count > 0)
            {
                byte[] rules = MobileFormatter.Serialize(_brokenRules);
                state.AddValue("_rules", Convert.ToBase64String(rules));
            }

            _stateStack.Push(state);
        }
Esempio n. 6
0
        private WcfPortal.UpdateRequest GetBaseUpdateCriteriaRequest()
        {
            var request = new WcfPortal.UpdateRequest();

            request.ObjectData    = null;
            request.ClientContext = MobileFormatter.Serialize(ApplicationContext.ClientContext);
            request.GlobalContext = MobileFormatter.Serialize(ApplicationContext.GlobalContext);
            if (ApplicationContext.AuthenticationType == "Windows")
            {
                request.Principal = MobileFormatter.Serialize(null);
            }
            else
            {
                request.Principal = MobileFormatter.Serialize(ApplicationContext.User);
            }
            request.ClientCulture   = System.Threading.Thread.CurrentThread.CurrentCulture.Name;
            request.ClientUICulture = System.Threading.Thread.CurrentThread.CurrentUICulture.Name;
            return(request);
        }
Esempio n. 7
0
        /// <summary>
        /// Called by the client-side DataPortal to update a
        /// business object.
        /// </summary>
        /// <param name="obj">Business object to update.</param>
        /// <param name="context">Server.DataPortalContext object passed to the server.</param>
        /// <param name="isSync">True if the client-side proxy should synchronously invoke the server.</param>
        public async Task <DataPortalResult> Update(object obj, DataPortalContext context, bool isSync)
        {
            DataPortalResult result = null;

            if (isSync)
            {
                throw new NotSupportedException("isSync == true");
            }
            try
            {
                var contextData = Csla.Serialization.Mobile.MobileFormatter.Serialize(context);
                var objectData  = Csla.Serialization.Mobile.MobileFormatter.Serialize(obj);
                var portal      = new BrokeredHost();
                var resultData  = await portal.Update(objectData, contextData);

                var response      = (Csla.Server.Hosts.HttpChannel.HttpResponse)Csla.Serialization.Mobile.MobileFormatter.Deserialize(resultData.ToArray());
                var globalContext = (Csla.Core.ContextDictionary)Csla.Serialization.Mobile.MobileFormatter.Deserialize(response.GlobalContext);
                if (response != null && response.ErrorData == null)
                {
                    obj    = MobileFormatter.Deserialize(response.ObjectData);
                    result = new DataPortalResult(obj, null, globalContext);
                }
                else if (response != null && response.ErrorData != null)
                {
                    var ex = new DataPortalException(response.ErrorData);
                    result = new DataPortalResult(null, ex, globalContext);
                }
                else
                {
                    throw new DataPortalException("null response", null);
                }
            }
            catch (Exception ex)
            {
                result = new DataPortalResult(null, ex, null);
            }
            if (result.Error != null)
            {
                throw result.Error;
            }
            return(result);
        }
Esempio n. 8
0
        public WcfResponse Delete(CriteriaRequest request)
        {
            var result = new WcfResponse();

            try
            {
                request = ConvertRequest(request);
                // unpack criteria data into object
                object criteria = GetCriteria(request.CriteriaData);
                if (criteria is Csla.DataPortalClient.PrimitiveCriteria)
                {
                    criteria = ((Csla.DataPortalClient.PrimitiveCriteria)criteria).Value;
                }

                var processor     = new MobileRequestProcessor();
                var deleteRequest = new MobileCriteriaRequest(
                    request.TypeName,
                    criteria,
                    (IPrincipal)MobileFormatter.Deserialize(request.Principal),
                    (ContextDictionary)MobileFormatter.Deserialize(request.GlobalContext),
                    (ContextDictionary)MobileFormatter.Deserialize(request.ClientContext),
                    request.ClientCulture,
                    request.ClientUICulture);

                var deleteResponse = processor.Delete(deleteRequest);
                if (deleteResponse.Error != null)
                {
                    result.ErrorData = new WcfErrorInfo(deleteResponse.Error);
                }
                result.GlobalContext = MobileFormatter.Serialize(deleteResponse.GlobalContext);
                result.ObjectData    = MobileFormatter.Serialize(deleteResponse.Object);
            }
            catch (Exception ex)
            {
                result.ErrorData = new WcfErrorInfo(ex);
            }
            finally
            {
                MobileRequestProcessor.ClearContext();
            }
            return(ConvertResponse(result));
        }
Esempio n. 9
0
        public async Task <WcfResponse> Update(UpdateRequest request)
#endif
        {
            var result = new WcfResponse();

            try
            {
                request = ConvertRequest(request);
                // unpack object
                object obj = GetCriteria(request.ObjectData);

                var processor     = new MobileRequestProcessor();
                var updateRequest = new MobileUpdateRequest(
                    obj,
                    (IPrincipal)MobileFormatter.Deserialize(request.Principal),
                    (ContextDictionary)MobileFormatter.Deserialize(request.GlobalContext),
                    (ContextDictionary)MobileFormatter.Deserialize(request.ClientContext),
                    request.ClientCulture,
                    request.ClientUICulture);

#if NET40
                var updateResponse = processor.Update(updateRequest);
#else
                var updateResponse = await processor.Update(updateRequest).ConfigureAwait(false);
#endif
                if (updateResponse.Error != null)
                {
                    result.ErrorData = new WcfErrorInfo(updateResponse.Error);
                }
                result.GlobalContext = MobileFormatter.Serialize(updateResponse.GlobalContext);
                result.ObjectData    = MobileFormatter.Serialize(updateResponse.Object);
            }
            catch (Exception ex)
            {
                result.ErrorData = new WcfErrorInfo(ex);
            }
            finally
            {
                MobileRequestProcessor.ClearContext();
            }
            return(ConvertResponse(result));
        }
Esempio n. 10
0
        /// <summary>
        /// Called by <see cref="DataPortal" /> to update a
        /// business object.
        /// </summary>
        /// <param name="obj">The business object to update.</param>
        /// <param name="context">
        /// <see cref="Server.DataPortalContext" /> object passed to the server.
        /// </param>
        /// <param name="isSync">True if the client-side proxy should synchronously invoke the server.</param>
#pragma warning disable 1998
        public async Task <DataPortalResult> Update(object obj, DataPortalContext context, bool isSync)
#pragma warning restore 1998
        {
            var request = GetBaseUpdateCriteriaRequest();

            request.ObjectData = MobileFormatter.Serialize(obj);
            request            = ConvertRequest(request);

            var proxy = GetProxy();
            DataPortalResult result = null;

            try
            {
                var response = await proxy.UpdateAsync(request);

                response = ConvertResponse(response);
                var globalContext = (ContextDictionary)MobileFormatter.Deserialize(response.GlobalContext);
                if (response != null && response.ErrorData == null)
                {
                    var newobj = MobileFormatter.Deserialize(response.ObjectData);
                    result = new DataPortalResult(newobj, null, globalContext);
                }
                else if (response != null && response.ErrorData != null)
                {
                    var ex = new DataPortalException(response.ErrorData);
                    result = new DataPortalResult(null, ex, globalContext);
                }
                else
                {
                    throw new DataPortalException("null response", null);
                }
            }
            catch (Exception ex)
            {
                result = new DataPortalResult(null, ex, null);
            }
            if (result.Error != null)
            {
                throw result.Error;
            }
            return(result);
        }
Esempio n. 11
0
        public void BusinessObjectWithEnum()
        {
            UnitTestContext context = GetContext();

            // Setup the customer w/ logically identical contacts
            CustomerWithEnum customer = new CustomerWithEnum();

            customer.Name    = "Test Customer";
            customer.Quality = CustomerQuality.Good;

            // Serialize and deserialize the customer
            var buffer = MobileFormatter.Serialize(customer);
            var deserializedCustomer = (CustomerWithEnum)MobileFormatter.Deserialize(buffer);

            // Verify the deserialized customer is identical to the original object
            context.Assert.AreEqual(customer.Name, deserializedCustomer.Name);
            context.Assert.AreEqual(customer.Quality, deserializedCustomer.Quality);
            context.Assert.Success();
            context.Complete();
        }
Esempio n. 12
0
        /// <summary>
        /// Override this method to manually serialize child objects
        /// contained within the current object.
        /// </summary>
        /// <param name="info">Object containing serialized values.</param>
        /// <param name="formatter">Reference to the current MobileFormatter.</param>
        protected virtual void OnGetChildren(SerializationInfo info, MobileFormatter formatter)
        {
            bool mobileChildren = typeof(IMobileObject).IsAssignableFrom(typeof(T));
            int  count          = 0;

            foreach (T child in this)
            {
                if (mobileChildren)
                {
                    SerializationInfo si = formatter.SerializeObject(child);
                    info.AddChild(_valuePrefix + count, si.ReferenceId);
                }
                else
                {
                    info.AddValue(_valuePrefix + count, child);
                }
                count++;
            }
            info.AddValue("count", count);
        }
Esempio n. 13
0
        /// <summary>
        /// Override this method to manually deserialize child objects
        /// from data in the serialization stream.
        /// </summary>
        /// <param name="info">Object containing serialized values.</param>
        /// <param name="formatter">Reference to the current MobileFormatter.</param>
        protected virtual void OnSetChildren(SerializationInfo info, MobileFormatter formatter)
        {
            bool mobileChildren = typeof(IMobileObject).IsAssignableFrom(typeof(T));
            int  count          = info.GetValue <int>("count");

            for (int index = 0; index < count; index++)
            {
                T value;
                if (mobileChildren)
                {
                    value = (T)formatter.GetObject(info.Children[_valuePrefix + index].ReferenceId);
                }
                else
                {
                    value = info.GetValue <T>(_valuePrefix + index);
                }

                Add(value);
            }
        }
Esempio n. 14
0
        /// <summary>
        /// Update a business object.
        /// </summary>
        /// <param name="request">The request parameter object.</param>
#pragma warning disable 1998
        public async Task <HttpResponse> Update(UpdateRequest request)
#pragma warning restore 1998
        {
            var result = new HttpResponse();

            try
            {
                request = ConvertRequest(request);
                // unpack object
                object obj = GetCriteria(request.ObjectData);

                var context = new DataPortalContext(
                    (IPrincipal)MobileFormatter.Deserialize(request.Principal),
                    true,
                    request.ClientCulture,
                    request.ClientUICulture,
                    (ContextDictionary)MobileFormatter.Deserialize(request.ClientContext),
                    (ContextDictionary)MobileFormatter.Deserialize(request.GlobalContext));

                var prtl = new Csla.Server.DataPortal();
                var dpr  = await prtl.Update(obj, context, true);

                if (dpr.Error != null)
                {
                    result.ErrorData = new HttpErrorInfo(dpr.Error);
                }

                result.GlobalContext = MobileFormatter.Serialize(dpr.GlobalContext);
                result.ObjectData    = MobileFormatter.Serialize(dpr.ReturnObject);
            }
            catch (Exception ex)
            {
                result.ErrorData = new HttpErrorInfo(ex);
                throw;
            }
            finally
            {
                result = ConvertResponse(result);
            }
            return(result);
        }
Esempio n. 15
0
        public WcfResponse Create(CriteriaRequest request)
        {
            var result = new WcfResponse();

            try
            {
                request = ConvertRequest(request);

                // unpack criteria data into object
                object criteria = GetCriteria(request.CriteriaData);
                if (criteria is PrimitiveCriteria)
                {
                    criteria = ((PrimitiveCriteria)criteria).Value;
                }

                SilverlightRequestProcessor processor     = new SilverlightRequestProcessor();
                SilverlightCriteriaRequest  createRequest = new SilverlightCriteriaRequest(
                    request.TypeName,
                    criteria,
                    (IPrincipal)MobileFormatter.Deserialize(request.Principal),
                    (ContextDictionary)MobileFormatter.Deserialize(request.GlobalContext),
                    (ContextDictionary)MobileFormatter.Deserialize(request.ClientContext));

                SilverlightResponse createResponse = processor.Create(createRequest);
                if (createResponse.Error != null)
                {
                    result.ErrorData = new WcfErrorInfo(createResponse.Error);
                }
                result.GlobalContext = MobileFormatter.Serialize(createResponse.GlobalContext);
                result.ObjectData    = MobileFormatter.Serialize(createResponse.Object);
            }
            catch (Exception ex)
            {
                result.ErrorData = new WcfErrorInfo(ex);
            }
            finally
            {
                SilverlightRequestProcessor.ClearContext();
            }
            return(ConvertResponse(result));
        }
Esempio n. 16
0
        /// <summary>
        /// Get an existing business object.
        /// </summary>
        /// <param name="request">The request parameter object.</param>
#pragma warning disable 1998
        public async Task <HttpResponse> Fetch(CriteriaRequest request)
#pragma warning restore 1998
        {
            var result = new HttpResponse();

            try
            {
                request = ConvertRequest(request);

                // unpack criteria data into object
                object criteria = GetCriteria(request.CriteriaData);
                if (criteria is Csla.DataPortalClient.PrimitiveCriteria)
                {
                    criteria = ((Csla.DataPortalClient.PrimitiveCriteria)criteria).Value;
                }

                var objectType = Csla.Reflection.MethodCaller.GetType(request.TypeName, true);
                var context    = new DataPortalContext(
                    (IPrincipal)MobileFormatter.Deserialize(request.Principal),
                    true,
                    request.ClientCulture,
                    request.ClientUICulture,
                    (ContextDictionary)MobileFormatter.Deserialize(request.ClientContext),
                    (ContextDictionary)MobileFormatter.Deserialize(request.GlobalContext));

                var prtl = new Csla.Server.DataPortal();
                var dpr  = await prtl.Fetch(objectType, criteria, context, true);

                if (dpr.Error != null)
                {
                    result.ErrorData = new HttpErrorInfo(dpr.Error);
                }
                result.GlobalContext = MobileFormatter.Serialize(dpr.GlobalContext);
                result.ObjectData    = MobileFormatter.Serialize(dpr.ReturnObject);
            }
            catch (Exception ex)
            {
                result.ErrorData = new HttpErrorInfo(ex);
            }
            return(ConvertResponse(result));
        }
Esempio n. 17
0
        public void MobileDictionary_MobileKey_PrimitiveValue()
        {
            UnitTestContext context = GetContext();
            var             d       = new MobileDictionary <MockReadOnly, string>();

            d.Add(new MockReadOnly(1), "v1");
            d.Add(new MockReadOnly(2), "v2");
            d.Add(new MockReadOnly(3), "v3");
            d.Add(new MockReadOnly(4), "v4");
            d.Add(new MockReadOnly(5), "v5");

            byte[] buffer = MobileFormatter.Serialize(d);
            var    r      = (MobileDictionary <MockReadOnly, string>)MobileFormatter.Deserialize(buffer);

            foreach (var key in r.Keys)
            {
                context.Assert.AreEqual(key.Id, Convert.ToInt32(r[key].Substring(1)));
            }
            context.Assert.Success();
            context.Complete();
        }
Esempio n. 18
0
        public void MobileDictionary_MobileKey_MobileValue()
        {
            UnitTestContext context = GetContext();
            var             d       = new MobileDictionary <MockReadOnly, MockReadOnly>();

            d.Add(new MockReadOnly(21), new MockReadOnly(1));
            d.Add(new MockReadOnly(22), new MockReadOnly(2));
            d.Add(new MockReadOnly(23), new MockReadOnly(3));
            d.Add(new MockReadOnly(24), new MockReadOnly(4));
            d.Add(new MockReadOnly(25), new MockReadOnly(5));

            byte[] buffer = MobileFormatter.Serialize(d);
            var    r      = (MobileDictionary <MockReadOnly, MockReadOnly>)MobileFormatter.Deserialize(buffer);

            foreach (var key in r.Keys)
            {
                context.Assert.AreEqual(key.Id, r[key].Id + 20);
            }
            context.Assert.Success();
            context.Complete();
        }
Esempio n. 19
0
        private Csla.Server.Hosts.HttpChannel.UpdateRequest GetBaseUpdateCriteriaRequest()
        {
            var request = new Csla.Server.Hosts.HttpChannel.UpdateRequest
            {
                ObjectData    = null,
                ClientContext = MobileFormatter.Serialize(ApplicationContext.ClientContext),
                GlobalContext = MobileFormatter.Serialize(ApplicationContext.GlobalContext)
            };

            if (ApplicationContext.AuthenticationType == "Windows")
            {
                request.Principal = MobileFormatter.Serialize(null);
            }
            else
            {
                request.Principal = MobileFormatter.Serialize(ApplicationContext.User);
            }
            request.ClientCulture   = Thread.CurrentThread.CurrentCulture.Name;
            request.ClientUICulture = Thread.CurrentThread.CurrentUICulture.Name;
            return(request);
        }
Esempio n. 20
0
        private Csla.Server.Hosts.HttpChannel.UpdateRequest GetBaseUpdateCriteriaRequest()
        {
            var request = new Csla.Server.Hosts.HttpChannel.UpdateRequest();

            request.ObjectData    = null;
            request.ClientContext = MobileFormatter.Serialize(ApplicationContext.ClientContext);
#pragma warning disable CS0618 // Type or member is obsolete
            request.GlobalContext = MobileFormatter.Serialize(ApplicationContext.GlobalContext);
#pragma warning restore CS0618 // Type or member is obsolete
            if (ApplicationContext.AuthenticationType == "Windows")
            {
                request.Principal = MobileFormatter.Serialize(null);
            }
            else
            {
                request.Principal = MobileFormatter.Serialize(ApplicationContext.User);
            }
            request.ClientCulture   = Thread.CurrentThread.CurrentCulture.Name;
            request.ClientUICulture = Thread.CurrentThread.CurrentUICulture.Name;
            return(request);
        }
Esempio n. 21
0
        private async Task InvokePortal(string operation, Stream requestStream, Stream responseStream)
        {
            var           serializer = new MobileFormatter();
            var           result     = new HttpResponse();
            HttpErrorInfo errorData  = null;

            try
            {
                var request = serializer.Deserialize(requestStream);
                result = await CallPortal(operation, request);
            }
            catch (Exception ex)
            {
                errorData = new HttpErrorInfo(ex);
            }
            var portalResult = new HttpResponse {
                ErrorData = errorData, GlobalContext = result.GlobalContext, ObjectData = result.ObjectData
            };

            serializer.Serialize(responseStream, portalResult);
        }
Esempio n. 22
0
        /// <summary>
        /// Serialize and then deserialize a PersonPOCO object, exercising the generated code
        /// associated with these two operations on the PersonPOCO test object
        /// </summary>
        /// <param name="valueToSerialize">The object to be serialized</param>
        /// <returns>The PersonPOCO that results from serialization then deserialization</returns>
        private PersonPOCO SerializeThenDeserialisePersonPOCO(PersonPOCO valueToSerialize)
        {
            IServiceCollection services = new ServiceCollection();

            services.AddCsla();
            var provider           = services.BuildServiceProvider();
            var ApplicationContext = provider.GetService <ApplicationContext>();

            System.IO.MemoryStream serializationStream;
            PersonPOCO             deserializedValue;
            MobileFormatter        formatter = new MobileFormatter(ApplicationContext);

            // Act
            using (serializationStream = new System.IO.MemoryStream())
            {
                formatter.Serialize(serializationStream, valueToSerialize);
                serializationStream.Seek(0, System.IO.SeekOrigin.Begin);
                deserializedValue = formatter.Deserialize(serializationStream) as PersonPOCO;
            }

            return(deserializedValue);
        }
Esempio n. 23
0
        protected virtual void OnGetChildren(SerializationInfo info, MobileFormatter formatter)
        {
            if (!typeof(IMobileObject).IsAssignableFrom(typeof(T)))
            {
                throw new InvalidOperationException(Resources.CannotSerializeCollectionsNotOfIMobileObject);
            }

            List <int> references = new List <int>();

            for (int x = 0; x < this.Count; x++)
            {
                T child = this[x];
                if (child != null)
                {
                    SerializationInfo childInfo = formatter.SerializeObject(child);
                    references.Add(childInfo.ReferenceId);
                }
            }
            if (references.Count > 0)
            {
                info.AddValue("$list", references);
            }
        }
Esempio n. 24
0
        private async Task <byte[]> InvokePortal(string operation, byte[] data)
        {
            var           result    = new HttpResponse();
            HttpErrorInfo errorData = null;

            try
            {
                var buffer = new MemoryStream(data);
                buffer.Position = 0;
                var request = MobileFormatter.Deserialize(buffer.ToArray());
                result = await CallPortal(operation, request);
            }
            catch (Exception ex)
            {
                errorData = new HttpErrorInfo(ex);
            }
            var portalResult = new HttpResponse {
                ErrorData = errorData, GlobalContext = result.GlobalContext, ObjectData = result.ObjectData
            };
            var bytes = MobileFormatter.Serialize(portalResult);

            return(bytes);
        }
Esempio n. 25
0
        private async Task InvokePortal(string operation, Stream requestStream, Stream responseStream)
        {
            var           serializer = new MobileFormatter();
            var           result     = new HttpResponse();
            HttpErrorInfo errorData  = null;

            Response.Headers.Add("Content-type", "application/octet-stream,text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9");
            Response.Headers.Add("Accept-Encoding", "gzip,deflate");
            try
            {
                var request = serializer.Deserialize(requestStream);
                result = await CallPortal(operation, request);
            }
            catch (Exception ex)
            {
                errorData = new HttpErrorInfo(ex);
            }
            var portalResult = new HttpResponse {
                ErrorData = errorData, GlobalContext = result.GlobalContext, ObjectData = result.ObjectData
            };

            serializer.Serialize(responseStream, portalResult);
        }
Esempio n. 26
0
        private Csla.Server.Hosts.HttpChannel.CriteriaRequest GetBaseCriteriaRequest()
        {
            var request = new Csla.Server.Hosts.HttpChannel.CriteriaRequest
            {
                CriteriaData  = null,
                ClientContext = MobileFormatter.Serialize(ApplicationContext.ClientContext),
#pragma warning disable CS0618 // Type or member is obsolete
                GlobalContext = MobileFormatter.Serialize(ApplicationContext.GlobalContext)
#pragma warning restore CS0618 // Type or member is obsolete
            };

            if (ApplicationContext.AuthenticationType == "Windows")
            {
                request.Principal = MobileFormatter.Serialize(null);
            }
            else
            {
                request.Principal = MobileFormatter.Serialize(ApplicationContext.User);
            }
            request.ClientCulture   = System.Globalization.CultureInfo.CurrentCulture.Name;
            request.ClientUICulture = System.Globalization.CultureInfo.CurrentUICulture.Name;
            return(request);
        }
Esempio n. 27
0
        public void If_FieldBackedString_Is_Changed_On_GrandChild_List_Item_After_Root_Is_Deserialized_Then_Root_ChildChanged_Event_Fires()
        {
            var root       = new EditableGetSet();
            var child      = new EditableGetSet(true);
            var grandChild = new EditableGetSet(true);

            root.ManagedChildList.Add(child);
            child.ManagedChildList.Add(grandChild);

            byte[] buffer = MobileFormatter.Serialize(root);
            root = (EditableGetSet)MobileFormatter.Deserialize(buffer);

            int changed = 0;

            root.ChildChanged += (o, e) => { changed++; };
            root.ManagedChildList[0].ManagedChildList[0].FieldBackedString = "changed";
            Assert.AreEqual(1, changed, "after MobileFormatter");

            changed            = 0;
            root               = root.Clone();
            root.ChildChanged += (o, e) => { changed++; };
            root.ManagedChildList[0].ManagedChildList[0].FieldBackedString = "changed again";
            Assert.AreEqual(1, changed, "after clone");
        }
Esempio n. 28
0
        void IUndoableObject.UndoChanges(int parentEditLevel, bool parentBindingEdit)
        {
            if (((IUndoableObject)this).EditLevel > 0)
            {
                if (((IUndoableObject)this).EditLevel - 1 < parentEditLevel)
                {
                    throw new UndoException(string.Format(Properties.Resources.EditLevelMismatchException, "UndoChanges"), this.GetType().Name, null, ((IUndoableObject)this).EditLevel, parentEditLevel + 1);
                }

                SerializationInfo state = _stateStack.Pop();
                OnSetState(state, StateMode.Undo);

                lock (SyncRoot)
                    _brokenRules = null;

                if (state.Values.ContainsKey("_rules"))
                {
                    byte[] rules = Convert.FromBase64String(state.GetValue <string>("_rules"));

                    lock (SyncRoot)
                        _brokenRules = (BrokenRulesCollection)MobileFormatter.Deserialize(rules);
                }
            }
        }
Esempio n. 29
0
        private async Task InvokeTextPortal(string operation, Stream requestStream, Stream responseStream)
        {
            string requestString;

            using (var reader = new StreamReader(requestStream))
                requestString = await reader.ReadToEndAsync();
            var requestArray  = System.Convert.FromBase64String(requestString);
            var requestBuffer = new MemoryStream(requestArray);

            var           serializer = new MobileFormatter();
            var           result     = new HttpResponse();
            HttpErrorInfo errorData  = null;

            try
            {
                var request = serializer.Deserialize(requestBuffer);
                result = await CallPortal(operation, request);
            }
            catch (Exception ex)
            {
                errorData = new HttpErrorInfo(ex);
            }
            var portalResult = new HttpResponse {
                ErrorData = errorData, GlobalContext = result.GlobalContext, ObjectData = result.ObjectData
            };

            var responseBuffer = new MemoryStream();

            serializer.Serialize(responseBuffer, portalResult);
            responseBuffer.Position = 0;
            using (var writer = new StreamWriter(responseStream))
            {
                writer.AutoFlush = true;
                await writer.WriteAsync(System.Convert.ToBase64String(responseBuffer.ToArray()));
            }
        }
Esempio n. 30
0
        public object Deserialize(Stream serializationStream)
        {
            try
            {
                var result = new MobileFormatter().Deserialize(serializationStream);

                var sysValue = result as SysState;
                if (sysValue != null)
                {
                    var sysType = Type.GetType(sysValue.TypeName);
                    result = TypeHelper.CoerceValue(sysType, sysValue.Value);
                }

                return(result);
            }
            catch //(SerializationException)
            {
                //序列化失败,说明不能反序列化为 IMobile,接着尝试使用 Binary
            }

            var result2 = new BinaryFormatterWrapper().Deserialize(serializationStream);

            return(result2);
        }
        public object Deserialize(Stream serializationStream)
        {
            try
            {
                var result = new MobileFormatter().Deserialize(serializationStream);

                var sysValue = result as SysState;
                if (sysValue != null)
                {
                    var sysType = Type.GetType(sysValue.TypeName);
                    result = TypeHelper.CoerceValue(sysType, sysValue.Value);
                }

                return result;
            }
            catch //(SerializationException)
            {
                //序列化失败,说明不能反序列化为 IMobile,接着尝试使用 Binary
            }

            var result2 = new BinaryFormatterWrapper().Deserialize(serializationStream);

            return result2;
        }