From 8b7efdd4e6525a0ec190be2d8d2659554455c30c Mon Sep 17 00:00:00 2001 From: Joel Pettersson Date: Thu, 19 Nov 2015 00:08:00 +0900 Subject: [PATCH 1/2] Add failing test for splats in multiple patterns --- src/test/scala/jauter/RoutingSpec.scala | 5 +++++ src/test/scala/jauter/StringRouter.scala | 1 + 2 files changed, 6 insertions(+) diff --git a/src/test/scala/jauter/RoutingSpec.scala b/src/test/scala/jauter/RoutingSpec.scala index 30cbbd9..0c385ad 100644 --- a/src/test/scala/jauter/RoutingSpec.scala +++ b/src/test/scala/jauter/RoutingSpec.scala @@ -41,6 +41,11 @@ class RoutingSpec extends FlatSpec with Matchers { routed.params.get("*") should be ("foo/bar.png") } + "A router" should "handle splat in multiple patterns" in { + val routed = router.route(Method.GET, "/upload/foo/bar.png") + routed.target should be ("upload") + } + "A router" should "handle subclasses" in { trait Action class Index extends Action diff --git a/src/test/scala/jauter/StringRouter.scala b/src/test/scala/jauter/StringRouter.scala index 05a29a1..7fc5ce4 100644 --- a/src/test/scala/jauter/StringRouter.scala +++ b/src/test/scala/jauter/StringRouter.scala @@ -30,5 +30,6 @@ object StringMethodRouter { .DELETE ("/articles/:id", "delete") .ANY ("/any", "any") .GET ("/download/:*", "download") + .GET ("/upload/:*", "upload") .notFound ("404") } From fc8647bd06fa39c106f9eb0017236e8054fd2d67 Mon Sep 17 00:00:00 2001 From: Joel Pettersson Date: Thu, 19 Nov 2015 00:13:04 +0900 Subject: [PATCH 2/2] Fix bug with splat in multiple patterns --- src/main/java/jauter/NonorderedRouter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/jauter/NonorderedRouter.java b/src/main/java/jauter/NonorderedRouter.java index 9f6528f..130da92 100644 --- a/src/main/java/jauter/NonorderedRouter.java +++ b/src/main/java/jauter/NonorderedRouter.java @@ -106,7 +106,7 @@ public Routed route(String path) { if (currToken.length() > 0 && currToken.charAt(0) == ':') { params.put(currToken.substring(1), token); - } else if (!token.equals(token)) { + } else if (!currToken.equals(token)) { matched = false; break; }