James Newton-King
40fb13a021
Fix DfaMatcher to work with non-RouteEndpoint ( #739 )
2018-08-24 09:11:13 +12:00
James Newton-King
15e46ad323
Change RoutePattern to not throw when inline and arg default value are the same ( #747 )
2018-08-23 21:39:23 +12:00
Ryan Nowak
a0aa61fd10
Improvements for IEndpointSelectorPolicy
...
These changes are based on our discussion earlier this week. Adding
async, and making it possible to short circuit, which should be better
aligned with the requirments of versioning.
2018-08-22 19:26:13 -07:00
James Newton-King
1680b9f4fc
Change endpoint invoker to RequestDelegate, Endpoint/EndpointMetadataCollection namespaces, split out IRouteValuesFeature ( #712 )
2018-08-22 17:15:57 +12:00
James Newton-King
08a0a7fadb
Remove MatchProcessor, add IParameterPolicy ( #734 )
2018-08-22 15:24:34 +12:00
James Newton-King
967afc3b0f
Optimize RoutePattern allocations ( #706 )
2018-08-22 10:01:52 +12:00
Kiran Challa
731767837a
Introducing new **catchAll parameter to allow generating links with unencoded values
2018-08-16 15:52:09 -07:00
Ryan Nowak
4fa0b068b8
Fix #710 - add support for data tokens
2018-08-15 21:43:50 -07:00
Ryan Nowak
97f54c532b
Support supression of matching for endpoints
2018-08-15 21:36:08 -07:00
Ryan Nowak
085a0b808e
Use RoutePattern in TemplateBinder
2018-08-15 12:12:52 -07:00
Ryan Nowak
e09b88ebd6
Tokenize Less
2018-08-14 15:31:38 -07:00
Ryan Nowak
12cb35894e
Add support for GraphViz
...
Adds **internal** support for dumping a route table to GraphViz DOT
notation. This allows us to dump the DFA graph for a route table and
visualize it.
Example:
https://gist.github.com/rynowak/2b24e4a6a602ca6f9c4de3ec227d621b
2018-08-08 21:36:39 -07:00
James Newton-King
dce72c9553
Remove public extension methods for registering endpoint routing ( #697 )
2018-08-07 17:49:31 +12:00
James Newton-King
39c5700148
Add docs to RouteValuesAddress ( #695 )
2018-08-07 13:14:35 +12:00
Ryan Nowak
e53a9f57db
adding more docs
2018-08-03 18:55:57 -07:00
James Newton-King
5ee3ae9002
Add XML docs to data sources and metadata ( #692 )
2018-08-04 13:34:25 +12:00
Kiran Challa
4d706f045f
rebase changes
2018-08-03 12:45:31 -07:00
Kiran Challa
09ce9c3041
Api clean up
2018-08-03 12:37:37 -07:00
James Newton-King
091cb94094
Change metadata namespace
...
Change EndpointOptions visibility to internal
Add IRequiredValuesMetadata
2018-08-03 12:37:37 -07:00
Kiran Challa
c8946a40e4
Created LinkGenerationTemplate and friends
2018-08-03 12:33:34 -07:00
Kiran Challa
b177ba5309
Changed api of LinkGenerator
2018-08-02 16:10:56 -07:00
Ryan Nowak
9cea167cfa
Add docs - EndpointFeature and related types ( #687 )
...
* Add docs - EndpointFeature and related types
* Add docs for route patterns
2018-08-02 15:24:00 -07:00
James Newton-King
8c4f187c22
Endpoint routing rename and API review changes ( #684 )
2018-08-02 13:38:08 +12:00
Kiran Challa
e19b0b738c
PR Feedback
2018-07-31 14:51:55 -07:00
Kiran Challa
85c7bd8fac
Discard ambient values during link generation if the values do not match explicit values
...
[Fixes #544 ] Link generation: Discard ambient values unless routing to the same address
2018-07-31 14:50:04 -07:00
Kiran Challa
ef2c127459
Show route name
2018-07-31 14:08:24 -07:00
Kiran Challa
f62877b9db
Show default values in CompositeEndpointDataSource's debugger display string
2018-07-31 12:39:37 -07:00
Ryan Nowak
f8b3b73ca7
Remove EndpointConstraints
...
Adds IEndpointSelectorPolicy so that MVC can plug in to the
EndpointSelector to run action constraints.
2018-07-28 19:03:12 -07:00
James Newton-King
f870503cdd
Fix HttpMethodMetadata debug string ( #666 )
2018-07-28 11:13:30 +12:00
Ryan Nowak
54e5370e8f
Add CORS support to HttpMethodMatcherPolicy
...
Also removes HttpMethodEndpointConstraint, since it's been fully
replaced.
2018-07-26 23:01:11 -07:00
James Newton-King
c68c5befc7
Remove ChangeToken from EndpointDataSource ( #662 )
2018-07-26 11:06:54 +12:00
Ryan Nowak
19f24cad16
fix silly constructor
2018-07-24 21:54:24 -07:00
James Newton-King
1340f9c26b
Add EndpointSelectorCandidate ctor to not break MVC ( #661 )
2018-07-25 16:03:26 +12:00
James Newton-King
fdff66054f
Missing ChangeToken -> GetChangeToken updates ( #660 )
2018-07-25 14:35:41 +12:00
Ryan Nowak
147c9527f3
Implement EndpointSelector and MatcherPolicy ( #646 )
...
Implement EndpointSelector and MatcherPolicy
This change makes the EndpointSelector API more concrete, and is the
beggining of removing EndpointConstraint by making it obsolete.
To that end, I'm introducing MatcherPolicy, which is a
feature-collection API for registering policies that interact with the
DfaMatcher. The two policies that we'll need to start are:
- ability to order endpoints
- ability to append 'policy' nodes to the graph
These two concepts together replace EndpointConstraint. Extending our
graph representation is a really efficient way to processing most common
scenarios.
---
In general this helps with common cases where 4 or so endpoints match
the URL, but with different HTTP methods supported on each. Today we
have to process route values and call into some 'policy' to make a
decision about which one is the winner. This change pushes this
knowledge down into the graph so that it's roughly as cheap as a
dictionary lookup, and can be done allocation-free.
The big savings here is ability to remove more candidates *before*
collecting route data.
---
Along with this change, I also built 'rejection' into the DFA node
model, you can see an example with the HTTP Method handling that I
implemented. I implemented a policy that can treat failure to resolve an
HTTP method as a 405 response by returning a failure endpoint. This is
at the heart of much of the feedback we've gotten in this area around
versioning and http method handling. We also have a version of this
feature in MVC for [Consumes].
2018-07-24 17:31:51 -07:00
Kiran Challa
f37ca0d2e9
Show list of endpoints in CompositeEndpointDataSource's DebuggerDisplayString
...
[Fixes #633 ] Show list of registered endpoints as debugger display string
2018-07-24 17:22:43 -07:00
Kiran Challa
6f4c10a664
PR feedback
2018-07-24 17:17:08 -07:00
Kiran Challa
71cb933a08
Show a flattened tree in LinkGenerationDecisionTree's DebuggerDisplayString
...
[Fixes #636 ] Flatten the LinkGenerationDecisionTree to show as debugger display string
2018-07-24 17:11:53 -07:00
Kiran Challa
34499dbe24
Added support for suppressing link generation for endpoints
2018-07-24 16:47:34 -07:00
Kiran Challa
7da1baf9d8
Do not use decision tree for named routes in RouteValuesBasedEndpointFinder
2018-07-24 05:33:19 -07:00
Kiran Challa
5f1631ab46
Added support for configuring route options with LinkGenerator
2018-07-24 04:45:33 -07:00
Ryan Nowak
2c325440de
Remove AddDispatcher/UseDispatcher
2018-07-22 20:35:10 -07:00
James Newton-King
1e807240ea
Add GetChangeToken to EndpointDataSource ( #649 )
2018-07-23 13:46:22 +12:00
Ryan Nowak
b9df95831d
Change Branding
...
For preview one the branding is:
new thing = UseGlobalRouting/UseEndpoint
old thing = UseRouter
We're going to drop the name Dispatcher everywhere and make sure that we
position our new work as 'new and improved routing' instead of
introducing a new product/concept name.
We're not totally sure of the term Global yet, but it's what we're doing
for preview 1. Suggestions welcome for dicussion after we do the first
preview :)
2018-07-22 16:41:59 -07:00
Ryan Nowak
f1c060bf3d
RoutePattern everywhere
2018-07-20 13:04:34 -07:00
James Newton-King
90395c933d
Implement IRoutingFeature on EndpointFeature for back-compat ( #641 )
2018-07-20 18:23:14 +12:00
Kiran Challa
41f56dbbed
Minor fix to DefaultLinkGenerator and enabled constraint related tests in DefaultLinkGeneratorTest
2018-07-19 09:11:50 -07:00
Ryan Nowak
477296a3cc
Make DFA matcher the default
2018-07-18 07:50:27 -07:00
Ryan Nowak
400d243f42
Fix remaining feature gaps in DfaMatcher ( #621 )
...
* Fix remaining feature gaps in DfaMatcher
* addressed minor feedback
* missed one
2018-07-17 19:22:46 -07:00
Kiran Challa
1196349bf4
[ Fixes #583 ] Handle change events in RouteValueBaseEndpointFinder
2018-07-17 05:54:11 -07:00
Kiran Challa
aed2e24483
Allow to pass in HttpContext when generating links
2018-07-17 05:16:57 -07:00
Ryan Nowak
02e1d78319
Minor fixes for MatchProcessorFactory
...
Fixing minor issues found doing DFA integration.
2018-07-16 21:06:35 -07:00
Ryan Nowak
b2e4743c7d
Change benchmarks ( #612 )
...
Add benchmarks that include some HTTP method matching.
Clean up names and name like-kinded benchmarks alphabetically.
Matcher*Benchmark -> E2E including HTTP method selection
MatcherSelectCandidates*Benchmark -> Focused on just URL path processing
2018-07-14 17:21:05 -07:00
James Newton-King
497a38035d
Add application startup check that dispatcher is added to request pipeline ( #614 )
2018-07-15 11:50:55 +12:00
James Newton-King
73e4d55d7b
Check dispatcher services registered ( #610 )
2018-07-14 18:20:42 +12:00
Ryan Nowak
9e114b547d
Introduce RoutePattern ( #585 )
...
* Introduce RoutePattern
Introduces RoutePattern - a new parser and representation for routing
templates, defaults, and constraints.
This is a new representation for all of the 'inputs' to routing that is
immutable and captures 'out of line' information for defaults and
constraints.
This will allow us to unify the handling of constraints and values from
attribute style routes and conventional style routes.
2018-07-13 18:01:46 -07:00
Kiran Challa
bc79a47959
Temporary change to prevent cross repo breaking change: Added ooverload for MatcherEndpoint
2018-07-13 14:24:11 -07:00
Kiran Challa
42708bec91
Added support for route constraints in Dispatcher world
2018-07-13 14:18:54 -07:00
Kiran Challa
1c7f53ae39
Fix TemplateBinder to consider null and empty string values the same
2018-07-13 10:21:55 -07:00
Ryan Nowak
7209cab5e9
Productize JumpTable ( #594 )
...
* Productize JumpTable
2018-07-12 23:28:51 -07:00
James Newton-King
0cf972cc43
Error message on no dispatcher middleware in endpoint middleware ( #600 )
2018-07-13 10:16:21 +12:00
Kiran Challa
3a022107dc
Revert "Added support for route constraints in Dispatcher world"
...
This reverts commit 85e92ab3cc .
2018-07-12 06:24:37 -07:00
Nate McMaster
85e92ab3cc
Added support for route constraints in Dispatcher world
2018-07-12 05:06:22 -07:00
Kiran Challa
1009705283
Added a RouteValuesBasedEndpointFinder
2018-06-28 10:53:10 -07:00
Ryan Nowak
30fcfb65ea
Productionize Path tokenization
2018-06-21 17:13:03 -07:00
James Newton-King
6efd679ce3
Fix TreeMatcher with route constraints ( #576 )
2018-06-22 10:33:44 +12:00
Kiran Challa
d3ddc1709a
Added initial support for link generation when using Dispatcher
2018-06-14 15:31:30 -07:00
Ryan Brandenburg
7423bb8702
Set 2.1 baselines
2018-06-14 14:10:02 -07:00
James Newton-King
9efa7665c9
Fix endpoint constraint cache ( #555 )
2018-06-13 16:40:06 +12:00
James Newton-King
6a6bd3f0da
Refactor TreeMatcher to not use async ( #552 )
2018-06-13 08:48:27 +12:00
James Newton-King
28d1bc4fa2
Fix TreeMatcher's use of EndpointSelector ( #551 )
2018-06-12 15:47:34 +12:00
James Newton-King
84bc8351c9
Initial endpoint constraints functionality ( #548 )
2018-06-12 09:43:17 +12:00
Ryan Nowak
08f12f2bfd
Add sample matcher tests
2018-06-09 13:29:06 -07:00
James Newton-King
1b470f3d3b
Fix Endpoint order in TreeMatcher ( #542 )
2018-06-08 16:19:56 +12:00
James Newton-King
48dd7a9688
Fix log order ( #540 )
2018-06-08 08:57:24 +12:00
James Newton-King
21f8ce5e95
Initial DispatcherMiddleware tests ( #529 )
2018-06-07 21:47:06 +12:00
Ryan Nowak
49f839a286
Add benchmarks for matcher implementations
2018-06-06 21:50:07 -07:00
Ryan Nowak
dc4be30d88
Rename Treenumerator -> TreeEnumerator
2018-06-01 21:33:30 -07:00
James Newton-King
81dde1a9f1
PR feedback
2018-06-01 21:33:30 -07:00
Ryan Nowak
0ea16ddd57
Code dump of dispatcher prototype code
...
Here's a code dump of the parts of the Dispatcher prototype codebase
that are needed to get us off the ground.
This first cut attempts to use part of routing where possible, and not
all of those changes will be long-lasting.
I'll leave comments through thoughout the PR for education.
2018-06-01 21:33:30 -07:00
kishan.anem
acea87a617
IUrlHelper and support for RouteOptions.LowercaseUrls
...
changes are made as suggestions.
@rynowak
#518
#Issue: aspnet/Mvc#7720
2018-05-31 20:07:01 -07:00
kishan.anem
cb77c17cf4
TestCase added and IUrlHelper and support for RouteOptions.LowercaseUrls
...
checked appliesd to the query string.
@rynowak
#518
#Issue: aspnet/Mvc#7720
2018-05-31 20:07:01 -07:00
kishan.anem
f227cbeca3
Added sperate option "IUrlHelper and support for RouteOptions.LowercaseUrls "
...
@rynowak
#518
#Issue: https://github.com/aspnet/Mvc/issues/7720
2018-05-31 20:07:01 -07:00
kishan.anem
695fb00308
IUrlHelper and support for RouteOptions.LowercaseUrls
...
IUrlHelper and support for RouteOptions.LowercaseUrls
#issue : https://github.com/aspnet/Mvc/issues/7720
2018-05-31 20:07:01 -07:00
Ryan Brandenburg
c8d842c160
Merge remote-tracking branch 'origin/release/2.1' into rybrande/MergeRelease21IntoDev
2018-04-16 15:05:29 -07:00
Kiran Challa
4184b2406d
Updated to make routing always use UrlEncoder.Default and not depend on DI to get it.
...
[Fixes #513 ] RedirectToAction with Non-English Characters in Parameters and Authentication Causes Error
2018-04-12 05:15:45 -07:00
Ryan Brandenburg
dc07aba935
Set 2.0 baselines
2018-03-19 09:27:10 -07:00
Jass Bagga
57697baedb
Tolerate leading "~/" or "/" ( #509 )
2018-01-11 13:00:01 -08:00
Jass Bagga
93d20ec78c
Revert Dispatcher changes ( #508 )
...
Addresses aspnet/Home#2741
2018-01-10 12:53:17 -08:00
Jass Bagga
54e96bd404
Tolerate leading "~/" or "/" ( #499 )
...
Addresses #441
2017-11-21 14:20:17 -08:00
Jass Bagga
1b0258ab8f
Move AddEntryToTree to shared source ( #496 )
...
Addresses #495
2017-11-20 14:18:50 -08:00
Jass Bagga
e2bcefc3d0
Move TreeEnumerator to shared source ( #494 )
2017-11-15 11:17:59 -08:00
Jass Bagga
7f8ba171f4
Move UrlMatchingTree to shared source ( #492 )
...
Addresses #489
2017-11-13 11:40:26 -08:00
Jass Bagga
fd83b300b8
Port TreeMatcher ( #488 )
...
Addresses #472
2017-11-07 10:51:50 -08:00
Nate McMaster
f4fb178f55
Pin tool and package versions to make builds more repeatable
...
Part of aspnet/Universe#575
2017-11-01 16:32:09 -07:00
Ryan Nowak
bb413c6ac3
Rename a bunch of old stuff
2017-10-26 12:35:58 -07:00
Ryan Nowak
d612072d1a
Fix a broken MVC test
2017-10-25 23:29:35 -07:00
Ryan Nowak
736b49294d
Add Template abstraction
...
This change adds the Template as a top level abstraction. URL templating
is now a two-stage process.
First you use a 'key' to look up a Template, then you use the Template
to create the URL.
This change also has some cleanup of the way RoutePatternBinder gets
instantiated. I added a factory service so that most of the complex
things can be made internal to Dispatcher. Now it's much easier to
constuct and use. These impacts some pubternal APIs that we already
broke, but makes them actually nice :)
Also cleaned up some tests and fixed one that was broken and not
running.
2017-10-25 22:15:24 -07:00
Ryan Nowak
2d661396df
Port TemplateBinder to dispatcher
2017-10-25 14:28:20 -07:00
Jass Bagga
eebc7db2ca
Use RoutePatternMatcher logic in TemplateMatcher ( #484 )
2017-10-25 14:16:04 -07:00