Example #1
0
        private async void InvokePortal(BasicDeliverEventArgs ea, byte[] requestData)
        {
            var result = new DataPortalResponse();

            try
            {
                var request = SerializationFormatterFactory.GetFormatter().Deserialize(requestData);
                result = await CallPortal(ea.BasicProperties.Type, request);
            }
            catch (Exception ex)
            {
                result.ErrorData = new DataPortalErrorInfo(ex);
            }

            try
            {
                var response = SerializationFormatterFactory.GetFormatter().Serialize(result);
                SendMessage(ea.BasicProperties.ReplyTo, ea.BasicProperties.CorrelationId, response);
            }
            catch (Exception ex)
            {
                try
                {
                    result = new DataPortalResponse {
                        ErrorData = new DataPortalErrorInfo(ex)
                    };
                    var response = SerializationFormatterFactory.GetFormatter().Serialize(result);
                    SendMessage(ea.BasicProperties.ReplyTo, ea.BasicProperties.CorrelationId, response);
                }
                catch (Exception ex1)
                {
                    Console.Error.WriteLine($"## ERROR {ex1.Message}");
                }
            }
        }
Example #2
0
        /// <summary>
        /// Get an existing business object.
        /// </summary>
        /// <param name="request">The request parameter object.</param>
#pragma warning disable 1998
        public async Task <DataPortalResponse> Fetch(CriteriaRequest request)
#pragma warning restore 1998
        {
            var result = new DataPortalResponse();

            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(AssemblyNameTranslator.GetAssemblyQualifiedName(request.TypeName), true);
                var context    = new DataPortalContext(
                    (IPrincipal)SerializationFormatterFactory.GetFormatter().Deserialize(request.Principal),
                    true,
                    request.ClientCulture,
                    request.ClientUICulture,
                    (ContextDictionary)SerializationFormatterFactory.GetFormatter().Deserialize(request.ClientContext),
                    (ContextDictionary)SerializationFormatterFactory.GetFormatter().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 DataPortalErrorInfo(dpr.Error);
                }
                result.GlobalContext = SerializationFormatterFactory.GetFormatter().Serialize(dpr.GlobalContext);
                result.ObjectData    = SerializationFormatterFactory.GetFormatter().Serialize(dpr.ReturnObject);
            }
            catch (Exception ex)
            {
                result.ErrorData = new DataPortalErrorInfo(ex);
                throw;
            }
            finally
            {
                result = ConvertResponse(result);
            }
            return(result);
        }
Example #3
0
        /// <summary>
        /// Update a business object.
        /// </summary>
        /// <param name="request">The request parameter object.</param>
#pragma warning disable 1998
        public async Task <DataPortalResponse> Update(UpdateRequest request)
#pragma warning restore 1998
        {
            var result = new DataPortalResponse();

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

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

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

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

                result.GlobalContext = SerializationFormatterFactory.GetFormatter().Serialize(dpr.GlobalContext);
                result.ObjectData    = SerializationFormatterFactory.GetFormatter().Serialize(dpr.ReturnObject);
            }
            catch (Exception ex)
            {
                result.ErrorData = new DataPortalErrorInfo(ex);
                throw;
            }
            finally
            {
                result = ConvertResponse(result);
            }
            return(result);
        }
Example #4
0
        private async Task <ResponseMessage> InvokePortal(string operation, ByteString requestData)
        {
            var result = new DataPortalResponse();
            DataPortalErrorInfo errorData = null;

            try
            {
                var request = SerializationFormatterFactory.GetFormatter().Deserialize(requestData.ToByteArray());
                result = await CallPortal(operation, request);
            }
            catch (Exception ex)
            {
                errorData = new DataPortalErrorInfo(ex);
            }
            var portalResult = new DataPortalResponse {
                ErrorData = errorData, GlobalContext = result.GlobalContext, ObjectData = result.ObjectData
            };
            var buffer = SerializationFormatterFactory.GetFormatter().Serialize(portalResult);

            return(new ResponseMessage {
                Body = ByteString.CopyFrom(buffer)
            });
        }
Example #5
0
 /// <summary>
 /// Override this method to manipulate the message
 /// request data returned from the server.
 /// </summary>
 /// <param name="response">Response data.</param>
 protected virtual DataPortalResponse ConvertResponse(DataPortalResponse response)
 {
     return(response);
 }