2010-06-05  Marek Habersack  <mhabersack@novell.com>

	* UrlRoutingModule.cs: 4.0 doesn't do the UrlRouting.axd magic, it
	simply remaps the current handler to the one obtained from the
	route.

2010-05-06  Marek Habersack  <mhabersack@novell.com>

	* RouteCollection.cs: GetVirtualPath throws ArgumentException
	when named route is not found in the collection.

2010-05-05  Marek Habersack  <mhabersack@novell.com>

	* UrlRoutingModule.cs: PostMapRequestHandler is obsolete in 4.0

	* RouteValueDictionary.cs: do not process type fields in
	RouteValueDictionary (object)

	* RouteCollection.cs: GetRouteData throws an exception if Request
	is null in the passed context.
	Added Ignore* and MapPageRoute* 4.0 APIs

	* RequestContext.cs: 4.0 API update

	* PatternParser.cs: match parser rewrite to encompass 4.0 bug
	fixes. We don't emulate some of the pre-4.0 routing bugs anymore.

2009-11-23  Marek Habersack  <mhabersack@novell.com>

	* Route.cs: GetRouteData throws NotImplementedException only when
	pathInfo for the current request is a non-empty string. Patch from
	Tiaan <tagdev@gmail.com>, thanks!

2009-11-09  Marek Habersack  <mhabersack@novell.com>

	* RouteCollection.cs: GetVirtualPath doesn't append trailing slash
	to application path blindly anymore. Fixes bug #553022

2009-09-09  Marek Habersack  <mhabersack@novell.com>

	* Route.cs: when Url is set to null, create a parser for empty
	string. Fixes bug #537751

	* PatternParser.cs: Parse allows for null/empty URLs. Fixes bug
	#537751

2009-09-08  Marek Habersack  <mhabersack@novell.com>

	* UrlRoutingModule.cs: store original request path in
	PostResolveRequestCache and restore it in
	PostMapRequestHandler. Fixes bug #537089

2009-08-19  Marek Habersack  <mhabersack@novell.com>

	* Route.cs: GetRouteData adds contents of its DataTokens
	dictionary to the returned RouteData.DataTokens dictionary. Fixes
	bug #523330. Patch from Dax@daxxfiles.net, thanks!

2009-06-25  Marek Habersack  <mhabersack@novell.com>

	* PatternParser.cs: parameter name lookups must be
	case-insensitive.
	Null and empty (string) parameters are skipped when building query
	part of the action path.

2009-06-16  Marek Habersack  <mhabersack@novell.com>

	* RouteValueDictionaryExtensions.cs: do not compile if
	SYSTEMCORE_DEP is not defined

	* PatternParser.cs: if SYSTEMCORE_DEP is not defined, do not
	compile parts which require RouteValueDictionaryExtensions.

	* Decorated all classes with the TypeForwardedFrom attribute for
	the 4.0 profile.

2009-06-04  Marek Habersack  <mhabersack@novell.com>

	* RouteValueDictionaryExtensions.cs: if both values are strings in
	Has (string, value), compare them case-insensitively. Fixes bug
	#502555

2009-05-27  Marek Habersack  <mhabersack@novell.com>

	* PatternParser.cs: if Match is passed an empty path, do not
	attempt to match the Url segments, skip to defaults matching right
	away.

2009-05-25  Marek Habersack  <mhabersack@novell.com>

	* UrlPattern.cs: removed - replaced by PatternParser below.
	
	* RouteValueDictionaryExtensions.cs: added - some shortcuts for
	using RouteValueDictionary in PatternParser

	* Route.cs: use the new PatternParser.
	Factored out ProcessConstraint into ProcessConstraintInternal so
	that the latter can be used by the PatternParser class.
	Added parameter checks in ProcessConstraint.

	* PatternTokenType.cs: added

	* PatternToken.cs: added a helper class for the pattern parser.

	* PatternParser.cs: added. New implementation of url
	parser/matcher/generator which fixes all URL isues known so
	far. Fixes bug #504378

2009-05-12 Gonzalo Paniagua Javier <gonzalo@novell.com>

	* UrlPattern.cs: if the pattern is line {a}/{b} and {b} is substituted
	by an empty string, remove the '/' too.

2009-05-12 Gonzalo Paniagua Javier <gonzalo@novell.com>

	* UrlPattern.cs: non-string default arguments work now.

2009-05-12  Marek Habersack  <mhabersack@novell.com>

	* UrlPattern.cs: TrySubstitute performs substitution trimming. If
	a segment would be set to a default value and all of its following
	segments as well, it will be omitted from the generated URL. The
	value comparison is done case-insensitively when the dictionary
	values are strings. Fixes bug #502555

2009-05-11  Marek Habersack  <mhabersack@novell.com>

	* UrlPattern.cs: TrySubstitute treats defaults differently
	now. They are not consulted when checking if the passed values
	match the pattern, but only when substituting the values. Fixes
	bug #502555

2009-05-05  Marek Habersack  <mhabersack@novell.com>

	* UrlPattern.cs: Match adds defaults values should some keys be
	missing from the url. Fixes bug #500739

	* Route.cs: a small GetRouteData loop optimization

2009-02-18  Marek Habersack  <mhabersack@novell.com>

	* UrlPattern.cs: TrySubstitute now gets the collection of default
	values and uses it to replace url segments instead of failing when
	the passed values collection is missing a segment.
	Do not use the tokens array in Match.

	* RouteCollection.cs: check if name is null or empty, not just
	null in GetVirtualPath

	* Route.cs: url.TrySubstitute should be passed the defaults
	collection when called from GetVirtualPath

2009-02-14  Marek Habersack  <mhabersack@novell.com>

	* UrlPattern.cs: use the defaults collection when matching a path
	and segments are missing.

	* RouteCollection.cs: GetRouteData must use VirtualPathProvider
	to check for virtual path existence.

2008-10-23  Atsushi Enomoto  <atsushi@ximian.com>

	* UrlPattern.cs : fixed possible out-of-range case ("tableName/" in
	  DynamicData).

2008-10-17  Atsushi Enomoto  <atsushi@ximian.com>

	* RouteValueDictionary.cs : its string comparison is case
	  insensitive.

2008-10-17  Atsushi Enomoto  <atsushi@ximian.com>

	* UrlPattern.cs : fixed pattern match for such string that has
	  suffix. (DynamicData uses it.)

2008-10-16  Atsushi Enomoto  <atsushi@ximian.com>

	* RouteValueDictionary.cs : object argument is actually for
	  anonymous type instance.

2008-10-10  Atsushi Enomoto  <atsushi@ximian.com>

	* UrlRoutingModule.cs : implement PostMapRequestHandler() and 
	  PostResolveRequestCache() to work correctly in order.
	  Now it should practically work.

2008-09-18  Atsushi Enomoto  <atsushi@ximian.com>

	* UrlRoutingModule.cs, RouteCollection.cs :
	  handle RouteExistingFiles.

2008-09-18  Atsushi Enomoto  <atsushi@ximian.com>

	* Route.cs : reject invalid constraint.
	* UrlRoutingHandler.cs : more ProcessRequest() impl.
	* UrlRoutingModule.cs : note.

2008-09-17  Atsushi Enomoto  <atsushi@ximian.com>

	* HttpMethodConstraint.cs, Route.cs, RouteCollection.cs,
	  UrlPattern.cs, UrlRoutingModule.cs:
	  ongoing UrlRoutingModule implementation.

2008-09-12  Atsushi Enomoto  <atsushi@ximian.com>

	* HttpMethodConstraint.cs, Route.cs, UrlPattern.cs, 
	  RouteCollection.cs : implement Route.GetRouteData() and
	  HttpMethodConstraint.Match().

2008-09-12  Atsushi Enomoto  <atsushi@ximian.com>

	* UrlPattern.cs : new file for URL pattern processing.
	* Route.cs : use above.

2008-09-11  Atsushi Enomoto  <atsushi@ximian.com>

	* HttpMethodConstraint.cs, RequestContext.cs, Route.cs,
	  RouteCollection.cs, RouteData.cs, RouteTable.cs,
	  RouteValueDictionary.cs, StopRoutingHandler.cs,
	  UrlRoutingHandler.cs, UrlRoutingModule.cs, VirtualPathData.cs:
	  some implementation.

2008-09-04  Atsushi Enomoto  <atsushi@ximian.com>

	*.cs: initial checkin.
