Ryan Nowak
ca681138e3
Merge branch 'dotnet-maestro-bot-merge/release/2.2-to-master'
2018-09-03 11:43:23 -07:00
Ryan Nowak
945e798ca7
[Design] Set the endpoint feature only on success
2018-08-30 14:52:35 -07:00
Ryan Nowak
71d4a2e1f0
Merge pull request #760 from dotnet-maestro-bot/merge/release/2.2-to-master
...
[automated] Merge branch 'release/2.2' => 'master'
2018-08-30 14:46:40 -07:00
Ryan Nowak
8395ad8340
remove references to ref emit packages
2018-08-30 13:26:22 -07:00
Ryan Nowak
9bc84cec8c
Merge pull request #757 from dotnet-maestro-bot/merge/release/2.2-to-master
...
[automated] Merge branch 'release/2.2' => 'master'
2018-08-29 21:32:44 -07:00
Ryan Nowak
8d053853bb
Address PR feedback, I hit merge too soon.
2018-08-29 19:46:25 -07:00
Ryan Nowak
3511c8cef0
Add vectorized il-emit trie jump table
...
Add new futuristic jump table. Remove old experimental jump tables since
this is much much better.
2018-08-29 19:30:02 -07:00
James Newton-King
e73601dda9
Move core endpoint types to HttpAbstractions ( #703 )
2018-08-29 17:07:35 +12:00
James Newton-King
2d8b187ca0
Merge branch 'merge/release/2.2-to-master'
2018-08-29 15:55:56 +12:00
James Newton-King
99c4f2f36a
Support policy arguments and resolving services by constructors ( #753 )
2018-08-29 14:51:34 +12:00
James Newton-King
dd1dcaebee
Merge branch 'merge/release/2.2-to-master'
2018-08-24 09:52:47 +12:00
James Newton-King
40fb13a021
Fix DfaMatcher to work with non-RouteEndpoint ( #739 )
2018-08-24 09:11:13 +12:00
dotnet-maestro-bot
90d8f96b3f
Change RoutePattern to not throw when inline and arg default value are the same ( #747 ) ( #748 )
2018-08-23 23:17:14 +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
61c5f2bad4
Merge pull request #746 from dotnet-maestro-bot/merge/release/2.2-to-master
...
[automated] Merge branch 'release/2.2' => 'master'
2018-08-22 20:38:02 -07: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
5e8e490867
Merge fixes
2018-08-22 20:42:53 +12:00
James Newton-King
aff4a38865
Merge release/2.2
2018-08-22 20:37:21 +12: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
a15f213e43
Merge branch 'merge/release/2.2-to-master'
2018-08-22 15:58:38 +12:00
James Newton-King
08a0a7fadb
Remove MatchProcessor, add IParameterPolicy ( #734 )
2018-08-22 15:24:34 +12:00
James Newton-King
8b0a598a64
Merge branch 'merge/release/2.2-to-master'
2018-08-22 10:48:44 +12:00
James Newton-King
4f33362ab5
Minor RVD and EndpointMetadataCollection refactors ( #708 )
2018-08-22 10:30:25 +12:00
James Newton-King
967afc3b0f
Optimize RoutePattern allocations ( #706 )
2018-08-22 10:01:52 +12:00
James Newton-King
b658d90785
Merge release/2.2
2018-08-22 09:57:19 +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
2b4df294d6
Merge pull request #726 from dotnet-maestro-bot/merge/release/2.2-to-master
...
[automated] Merge branch 'release/2.2' => 'master'
2018-08-16 09:52:51 -07:00
Ryan Nowak
730646c301
Perf for EMC
2018-08-15 22:08:58 -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
ad44deedee
Merge pull request #718 from dotnet-maestro-bot/merge/release/2.2-to-master
...
[automated] Merge branch 'release/2.2' => 'master'
2018-08-15 15:23:49 -07:00
Ryan Nowak
085a0b808e
Use RoutePattern in TemplateBinder
2018-08-15 12:12:52 -07:00
Ryan Nowak
104f9c3517
Merge branch 'master' into merge/release/2.2-to-master
2018-08-14 17:03:36 -07:00
Ryan Nowak
e09b88ebd6
Tokenize Less
2018-08-14 15:31:38 -07:00
Ryan Nowak
b394b51c3d
Merge branch 'master' into merge/release/2.2-to-master
2018-08-09 08:18:47 -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
95267a32e2
Add EndpointBuilder ( #701 )
2018-08-09 13:06:27 +12: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
bc5f02444b
Benchmarks and improvements to route value dictionary ( #577 )
...
* Add benchmarks for RVD
There are the scenarios that are critical for URL matching performance.
* Reimplement RouteValueDictionary
Improves the scenarios with benchmarks by about 30%
* Fix benchmark
* PR feedback
* More feedback and tests
2018-06-26 13:41:49 -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