Ejemplo n.º 1
0
        public void PutRequest(IRequest request)
        {
            string requestGuid = Guid.NewGuid().ToString();

            try
            {
                LogRequest(request, requestGuid);
                RequestContext          context                 = new RequestContext(request.Uri);
                IRequestPerformer       requestPerformer        = null;
                RequestPerformerLocator requestPerformerLocator = RequestReceiver.NorthwindAdapter.RequestPerformerLocator;

                if (!String.IsNullOrEmpty(context.ErrorMessage))
                {
                    throw new ApplicationException(context.ErrorMessage);
                }

                switch (context.RequestType)
                {
                case RequestType.Resource:
                    requestPerformer = requestPerformerLocator.Resolve <PutResourceRequestPerformer>(context);
                    break;

                case RequestType.Linked:
                    requestPerformer = requestPerformerLocator.Resolve <PutLinkingRequestPerformer>(context);
                    break;
                }

                if (null != requestPerformer)
                {
                    requestPerformer.DoWork(request);
                }
                else
                {
                    throw new RequestException("The request is not supported.");
                }

                LogResponse(request, requestGuid);
            }
            catch (Exception e)
            {
                LogException(e, requestGuid);
                throw;
            }
        }
Ejemplo n.º 2
0
        public void GetRequest(IRequest request)
        {
            string requestGuid = Guid.NewGuid().ToString();

            try
            {
                LogRequest(request, requestGuid);
                RequestContext          context;
                IRequestPerformer       requestPerformer = null;
                RequestPerformerLocator requestPerformerLocator;


                requestPerformerLocator = RequestReceiver.NorthwindAdapter.RequestPerformerLocator;

                context = new RequestContext(request.Uri);
                if (!String.IsNullOrEmpty(context.ErrorMessage))
                {
                    throw new ApplicationException(context.ErrorMessage);
                }

                switch (context.RequestType)
                {
                case RequestType.Resource:
                    requestPerformer = requestPerformerLocator.Resolve <GetResourceRequestPerformer>(context);
                    break;

                case RequestType.SyncDigest:
                    requestPerformer = requestPerformerLocator.Resolve <GetSyncDigestRequestPerformer>(context);
                    break;

                case RequestType.SyncSource:
                    requestPerformer = requestPerformerLocator.Resolve <GetSyncSourceRequestPerformer>(context);
                    break;

                case RequestType.SyncTarget:
                    requestPerformer = requestPerformerLocator.Resolve <GetSyncTargetRequestPerformer>(context);
                    break;

                case RequestType.ResourceCollectionSchema:
                    requestPerformer = requestPerformerLocator.Resolve <GetSchemaRequestPerformer>(context);
                    break;

                case RequestType.ResourceSchema:
                    requestPerformer = requestPerformerLocator.Resolve <GetResourceSchemaRequestPerformer>(context);
                    break;

                case RequestType.ImportSchema:
                    requestPerformer = requestPerformerLocator.Resolve <GetSchemaImportRequestPerformer>(context);
                    break;

                case RequestType.Contract:
                    requestPerformer = requestPerformerLocator.Resolve <GetContractRequestPerformer>(context);
                    break;

                case RequestType.Dataset:
                    requestPerformer = requestPerformerLocator.Resolve <GetDatasetRequestPerformer>(context);
                    break;

                case RequestType.ResourceCollection:
                    requestPerformer = requestPerformerLocator.Resolve <GetResourceCollectionRequestPerformer>(context);
                    break;

                case RequestType.Linked:
                    requestPerformer = requestPerformerLocator.Resolve <GetLinkingRequestPerformer>(context);
                    break;

                case RequestType.ServiceSchema:
                    requestPerformer = requestPerformerLocator.Resolve <GetServiceSchemaRequestPerformer>(context);
                    break;
                }

                if (null != requestPerformer)
                {
                    requestPerformer.DoWork(request);
                }
                else
                {
                    throw new RequestException("The request is not supported.");
                }

                LogResponse(request, requestGuid);
            }
            catch (Exception e)
            {
                LogException(e, requestGuid);
                throw;
            }
        }
Ejemplo n.º 3
0
        public void DeleteRequest(IRequest request)
        {
            string requestGuid = Guid.NewGuid().ToString();

            try
            {
                LogRequest(request, requestGuid);
                RequestPerformerLocator requestPerformerLocator = RequestReceiver.NorthwindAdapter.RequestPerformerLocator;;
                IRequestPerformer       requestPerformer        = null;
                RequestContext          context = new RequestContext(request.Uri);
                switch (context.RequestType)
                {
                case RequestType.Resource:
                    requestPerformer = requestPerformerLocator.Resolve <DeleteResourceRequestPerformer>(context);
                    if (null != requestPerformer)
                    {
                        requestPerformer.DoWork(request);
                    }
                    else
                    {
                        throw new RequestException("The request is not supported.");
                    }
                    break;

                case RequestType.SyncSource:
                case RequestType.SyncTarget:
                    requestPerformerLocator = RequestReceiver.NorthwindAdapter.RequestPerformerLocator;
                    Exception error;
                    if (requestPerformerLocator.Delete(context, out error))
                    {
                        request.Response.StatusCode = System.Net.HttpStatusCode.OK;
                    }
                    else
                    {
                        if (error == null)
                        {
                            request.Response.StatusCode = System.Net.HttpStatusCode.NotFound;
                        }
                        else
                        {
                            throw error;
                        }
                    }
                    break;

                case RequestType.Linked:
                    requestPerformer = requestPerformerLocator.Resolve <DeleteLinkingRequestPerformer>(context);
                    if (null == requestPerformer)
                    {
                        throw new RequestException("The request is not supported.");
                    }

                    requestPerformer.DoWork(request);

                    break;

                default:
                    throw new NotSupportedException("This Request was not supported");
                }
                LogResponse(request, requestGuid);
            }
            catch (Exception e)
            {
                LogException(e, requestGuid);
                throw;
            }
        }