/// <summary>
        /// Builds error response.
        /// </summary>
        /// <param name="ex">
        /// The exception.
        /// </param>
        /// <returns>
        /// The <see cref="RegistryInterface"/>.
        /// </returns>
        public RegistryInterface BuildErrorResponse(Exception ex)
        {
            var responseType = new RegistryInterface();
            RegistryInterfaceType regInterface = responseType.Content;
            var returnType = new QueryRegistrationResponseType();
            regInterface.QueryRegistrationResponse = returnType;
            V2Helper.Header = regInterface;

            var queryResult = new QueryResultType();
            returnType.QueryResult.Add(queryResult);

            queryResult.timeSeriesMatch = false;
            var statusMessage = new StatusMessageType();
            queryResult.StatusMessage = statusMessage;

            this.AddStatus(statusMessage, ex);

            return responseType;
        }
        /// <summary>
        /// The build success response.
        /// </summary>
        /// <param name="registrations">
        /// The registrations.
        /// </param>
        /// <returns>
        /// The <see cref="RegistryInterface"/>.
        /// </returns>
        public RegistryInterface BuildSuccessResponse(ICollection<IRegistrationObject> registrations)
        {
            var responseType = new RegistryInterface();
            RegistryInterfaceType regInterface = responseType.Content;
            var returnType = new QueryRegistrationResponseType();
            regInterface.QueryRegistrationResponse = returnType;
            V2Helper.Header = regInterface;

            if (!ObjectUtil.ValidCollection(registrations))
            {
                var queryResult = new QueryResultType();
                returnType.QueryResult.Add(queryResult);

                queryResult.timeSeriesMatch = false;
                var statusMessage = new StatusMessageType();
                queryResult.StatusMessage = statusMessage;

                statusMessage.status = StatusTypeConstants.Warning;
                var tt = new TextType();
                statusMessage.MessageText.Add(tt);

                tt.TypedValue = "No Registrations Match The Query Parameters";
            }
            else
            {
                /* foreach */
                foreach (IRegistrationObject currentRegistration in registrations)
                {
                    var queryResult0 = new QueryResultType();
                    returnType.QueryResult.Add(queryResult0);

                    var statusMessage1 = new StatusMessageType();
                    queryResult0.StatusMessage = statusMessage1;
                    this.AddStatus(statusMessage1, null);

                    queryResult0.timeSeriesMatch = false; // FUNC 1 - when is this true?  Also We need MetadataResult

                    var resultType = new ResultType();
                    queryResult0.DataResult = resultType;

                    if (currentRegistration.DataSource != null)
                    {
                        IDataSource datasourceBean = currentRegistration.DataSource;
                        var datasourceType = new DatasourceType();
                        resultType.Datasource = datasourceType;
                        if (datasourceBean.SimpleDatasource)
                        {
                            datasourceType.SimpleDatasource = datasourceBean.DataUrl;
                        }
                        else
                        {
                            var queryableDatasource = new QueryableDatasourceType();
                            datasourceType.QueryableDatasource = queryableDatasource;
                            queryableDatasource.isRESTDatasource = datasourceBean.RESTDatasource;
                            queryableDatasource.isWebServiceDatasource = datasourceBean.WebServiceDatasource;
                            queryableDatasource.DataUrl = datasourceBean.DataUrl;
                            if (datasourceBean.WsdlUrl != null)
                            {
                                queryableDatasource.WSDLUrl = datasourceBean.WsdlUrl;
                            }
                        }
                    }

                    if (currentRegistration.ProvisionAgreementRef != null)
                    {
                        WriteProvisionAgreementRef(currentRegistration.ProvisionAgreementRef, resultType);
                    }
                }
            }

            return responseType;
        }