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}"); } } }
/// <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); }
/// <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); }
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) }); }
/// <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); }