Inheritance: IPortalResult
        public void WriteToOutput_GivenFacetResult_OutputStreamShouldIncludeTheFacetsInXML2()
        {
            var request      = new PortalRequest();
            var response     = new PortalResponse(request) { ReturnFormat = ReturnFormat.XML2 };
            var solrResponse = Make_SolrResponseWithFacets();
            var faceted      = new QueryResult
                {
                    FieldFacets = solrResponse.FacetResponse.FacetFieldsResult.Select(item => new FieldFacet(item.Value, item.Facets.Select(facet => new Core.Data.Model.Facet(facet.Value, facet.Count)).ToList())).ToList()
                };
            response.ReturnFormat = ReturnFormat.XML2;
            request.Stopwatch.Reset();

            response.WriteToOutput(faceted);

            using (var stream = new StreamReader(response.GetResponseStream()))
            {
                Assert.That(stream.ReadToEnd(), Is.EqualTo("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>"
                                                           + "<PortalResponse>"
                                                             + "<Header>"
                                                               + "<Duration>0</Duration>"
                                                             + "</Header>"
                                                             + "<Body>"
                                                               + "<FieldFacets>"
                                                                 + "<FieldFacet>"
                                                                   + "<Value>NetworkId</Value>"
                                                                   + "<Facets>"
                                                                     + "<Facet>"
                                                                       + "<Key>00000000-0000-0000-0000-000000000001</Key>"
                                                                       + "<Count>71</Count>"
                                                                     + "</Facet>"
                                                                     + "<Facet>"
                                                                       + "<Key>fc2e10f7-3eee-49d8-b441-3235f96e5c0a</Key>"
                                                                       + "<Count>2</Count>"
                                                                     + "</Facet>"
                                                                     + "<Facet>"
                                                                       + "<Key>3cbcdafc-af3b-4955-9d79-64d397b6393d</Key>"
                                                                       + "<Count>1</Count>"
                                                                     + "</Facet>"
                                                                     + "<Facet>"
                                                                       + "<Key>3ec2f894-bdf2-4281-a91f-46a84b982039</Key>"
                                                                       + "<Count>1</Count>"
                                                                     + "</Facet>"
                                                                   + "</Facets>"
                                                                 + "</FieldFacet>"
                                                               + "</FieldFacets>"
                                                             + "</Body>"
                                                             + "<Error />"
                                                           + "</PortalResponse>"));
            }
        }
Esempio n. 2
0
        public object Create(object obj, IPortalRequest request)
        {
            if (obj == null) throw new NullReferenceException("Returned object is null");

            var result = obj as IResult;
            result = result == null ? obj as AResult : result;
            var results = obj as IEnumerable<IResult>;
            var pagedResult = obj as IPagedResult<IResult>;
            var queryResult = obj as QueryResult;
            var groupedResult = obj as IGroupedResult<IResult>;
            var uinteger = obj as uint?;
            var integer = obj as int?;
            var attachment = obj as Attachment;
            var exception = obj as Exception;

            if (result != null)
            {
                var portalResult = new PagedResult(1, 0, new[] {result});
                var response = new PortalResponse(new PortalHeader(request.Stopwatch), portalResult, new PortalError());

                return response;
            }
            if (results != null)
            {
                var lst = results.ToList();
                var portalResult = new PagedResult((uint) lst.Count, 0, lst);
                var response = new PortalResponse(new PortalHeader(request.Stopwatch), portalResult, new PortalError());

                return response;
            }
            if (pagedResult != null)
            {
                var portalResult = new PagedResult(pagedResult.FoundCount, pagedResult.StartIndex, pagedResult.Results);
                var response = new PortalResponse(new PortalHeader(request.Stopwatch), portalResult, new PortalError());

                return response;
            }
            if (queryResult != null)
            {
                var response = new PortalResponse(new PortalHeader(request.Stopwatch), queryResult, new PortalError());

                return response;
            }
            if (groupedResult != null)
            {
                var portalResult = new QueryResult {Groups = groupedResult.Groups.ToList()};
                var response = new PortalResponse(new PortalHeader(request.Stopwatch), portalResult, new PortalError());

                return response;
            }
            if (uinteger != null)
            {
                var portalResult = new PagedResult(1, 0, new[] {new ScalarResult((int) uinteger.Value)});
                var response = new PortalResponse(new PortalHeader(request.Stopwatch), portalResult, new PortalError());

                return response;
            }
            if (integer != null)
            {
                var portalResult = new PagedResult(1, 0, new[] {new ScalarResult(integer.Value)});
                var response = new PortalResponse(new PortalHeader(request.Stopwatch), portalResult, new PortalError());

                return response;
            }
            if (attachment != null)
                return attachment;
            else
            {
                if (exception == null)
                    exception = new UnsupportedExtensionReturnTypeException("Return type is not supported: " + obj.GetType().FullName);

                var response = new PortalResponse(new PortalHeader(request.Stopwatch), new PortalResult(), new PortalError());
                response.Error.SetException(exception);

                return response;
            }
        }