Commit Graph

515 Commits

Author SHA1 Message Date
James Newton-King 412944e1f5
Transform parameters before lower casing in link generation (#793) 2018-09-14 17:19:43 +12:00
Ryan Nowak 426a48a65a Performance improvments to LinkGenerator and TemplateBinder 2018-09-13 19:11:28 -07:00
Ryan Nowak 9a68f48a5c Minor improvments to RVD perf 2018-09-13 14:55:00 -07:00
James Newton-King 9df5918239
Clean up endpoint builder (#791) 2018-09-13 10:27:01 +12:00
James Newton-King cf484a49d0
Merge branch 'merge/release/2.2-to-master' 2018-09-13 09:22:33 +12:00
James Newton-King cee960f3c5
Add IParameterTransformer (#750) 2018-09-12 21:45:25 +12:00
Ryan Nowak 087e6d05ee
Merge pull request #790 from dotnet-maestro-bot/merge/release/2.2-to-master
[automated] Merge branch 'release/2.2' => 'master'
2018-09-10 18:54:06 -07:00
Ryan Nowak e5cc4564cb add docs for constructor 2018-09-10 16:55:39 -07:00
Ryan Nowak 5f172efa9d Add support Endpoint Name endpoint finding 2018-09-10 16:50:46 -07:00
Ryan Nowak 57cc8aea96 Various improvments to route values link APIs
- Add docs
- Add support for templates
- Remove undesirable constructor parameter
- misc cleanup
2018-09-10 16:50:46 -07:00
Ryan Nowak c683844817 Fix #553 - Add logging for new LinkGenerator
Adds logging for all of the failure cases of link generation.
2018-09-10 16:11:43 -07:00
James Newton-King 27a0951a88
Update dependencies and re-mark obsolete constructor (#783) 2018-09-07 13:34:10 +12:00
Ryan Nowak d364a9e5af Merge branch 'release/2.2' 2018-09-06 14:47:29 -07:00
Ryan Nowak e3b704095b
Revisions to LinkGenerator (#770)
* Revisions to LinkGenerator

* PR feedback
2018-09-05 20:52:09 -07:00
James Newton-King aadc31d9a5
Merge release/2.2 2018-09-06 14:07:11 +12:00
James Newton-King dcfb63a768
Avoid RoutePattern allocating empty dictionaries (#772) 2018-09-06 14:00:52 +12:00
James Newton-King 1c74973c6a
Minor matcher builder allocation optimization (#771) 2018-09-06 13:47:34 +12:00
James Newton-King dbebdbecd6
Add flag for including label with DfaNodes (#769) 2018-09-06 13:38:17 +12:00
James Newton-King fe8c633224
Optimize builder and HTTP policy allocations (#768) 2018-09-06 13:25:35 +12:00
James Newton-King abc378d3dc
Avoid resizing large struct arrays (#767) 2018-09-06 13:10:17 +12:00
James Newton-King 0f5d471dfd
Create collections on DfaNode as needed (#779) 2018-09-06 12:58:57 +12:00
James Newton-King a777a4cdd5
Reuse collections in DfaMatcherBuilder (#778) 2018-09-06 12:25:45 +12:00
James Newton-King 4ab067fb37
Temporarily remove obsolete attribute to unblock build (#775) 2018-09-05 09:27:46 +12:00
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