UriTemplateMatch.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / NetFx35 / System.ServiceModel.Web / System / UriTemplateMatch.cs / 4 / UriTemplateMatch.cs

                            //---------------------------------------------------------------- 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//---------------------------------------------------------------

namespace System 
{
    using System.Collections.ObjectModel; 
    using System.Collections.Specialized; 
    using System.ServiceModel.Web;
    using System.Web; 

    public class UriTemplateMatch
    {
        Uri baseUri; 
        NameValueCollection boundVariables;
        object data; 
        NameValueCollection queryParameters; 
        Collection relativePathSegments;
        Uri requestUri; 
        UriTemplate template;
        Collection wildcardPathSegments;
        int wildcardSegmentsStartOffset = -1;
 
        public UriTemplateMatch()
        { 
        } 

        public Uri BaseUri   // the base address, untouched 
        {
            get
            {
                return this.baseUri; 
            }
            set 
            { 
                this.baseUri = value;
            } 
        }
        public NameValueCollection BoundVariables // result of TryLookup, values are decoded
        {
            get 
            {
                if (this.boundVariables == null) 
                { 
                    this.boundVariables = new NameValueCollection();
                } 
                return this.boundVariables;
            }
        }
        public object Data 
        {
            get 
            { 
                return this.data;
            } 
            set
            {
                this.data = value;
            } 
        }
        public NameValueCollection QueryParameters  // the result of UrlUtility.ParseQueryString (keys and values are decoded) 
        { 
            get
            { 
                if (this.queryParameters == null)
                {
                    PopulateQueryParameters();
                } 
                return this.queryParameters;
            } 
        } 
        public Collection RelativePathSegments  // entire Path (after the base address), decoded
        { 
            get
            {
                if (this.relativePathSegments == null)
                { 
                    this.relativePathSegments = new Collection();
                } 
                return this.relativePathSegments; 
            }
        } 
        public Uri RequestUri  // uri on the wire, untouched
        {
            get
            { 
                return this.requestUri;
            } 
            set 
            {
                this.requestUri = value; 
            }
        }
        public UriTemplate Template // which one got matched
        { 
            get
            { 
                return this.template; 
            }
            set 
            {
                this.template = value;
            }
        } 
        public Collection WildcardPathSegments  // just the Path part matched by "*", decoded
        { 
            get 
            {
                if (this.wildcardPathSegments == null) 
                {
                    PopulateWildcardSegments();
                }
                return this.wildcardPathSegments; 
            }
        } 
 
        internal void SetQueryParameters(NameValueCollection queryParameters)
        { 
            this.queryParameters = new NameValueCollection(queryParameters);
        }
        internal void SetRelativePathSegments(Collection segments)
        { 
            Fx.Assert(segments != null, "segments != null");
            this.relativePathSegments = segments; 
        } 
        internal void SetWildcardPathSegmentsStart(int startOffset)
        { 
            Fx.Assert(startOffset >= 0, "startOffset >= 0");
            this.wildcardSegmentsStartOffset = startOffset;
        }
 
        void PopulateQueryParameters()
        { 
            if (this.requestUri != null) 
            {
                this.queryParameters = UriTemplateHelpers.ParseQueryString(this.requestUri.Query); 
            }
            else
            {
                this.queryParameters = new NameValueCollection(); 
            }
        } 
        void PopulateWildcardSegments() 
        {
            if (wildcardSegmentsStartOffset != -1) 
            {
                this.wildcardPathSegments = new Collection();
                for (int i = this.wildcardSegmentsStartOffset; i < this.RelativePathSegments.Count; ++i)
                { 
                    this.wildcardPathSegments.Add(this.RelativePathSegments[i]);
                } 
            } 
            else
            { 
                this.wildcardPathSegments = new Collection();
            }
        }
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK